본문 바로가기

Bitcoin Without Driving Your self Loopy > 자유게시판

본문 바로가기

회원메뉴

쇼핑몰 검색

회원로그인

회원가입

오늘 본 상품 0

없음

자유게시판

Bitcoin Without Driving Your self Loopy

페이지 정보

profile_image
작성자 Naomi
댓글 0건 조회 3회 작성일 24-10-28 15:09

본문

The thing that's most appealing to me about bitcoin script as it stands (beyond "it works") is that it's really pretty simple in an engineering sense: it's just a "forth" like system, where you put byte strings on a stack and have a few operators to manipulate them. To level-up from that, instead of putting byte strings on a stack, you could have some other data structure than a stack -- eg one that allows nesting. For example, rather than the streaming-sha256 approach in Elements, where you could write: "a" SHA256INITIALIZE "b" SHA256UPDATE "c" SHA256UPDATE "d" SHA256FINALIZE to get the sha256 of "abcd" without having to CAT them first (important if they'd potentially overflow the 520B stack item limit), in chia lisp you write: (sha256 "a" "b" "c" "d") which still has the benefit of streaming the inputs into the function, but only adds a single opcode, doesn't involve representing the internal sha256 midstate on the stack, and generally seems easier to understand, at least to me. Of course, "defun" and "if" aren't listed as opcodes above; instead you have a compiler that gives you nice macros like defun and translates them into correct uses of the "a" opcode, etc. As I understand it, those sort of macros and translations are pretty well understood across lisp-like languages, and, of course, they're already implemented for chia lisp.


FOLD and in exactly the same context, I was wondering what the simplest possible language that had some sort of map construction was -- I mean simplest in a "practical engineering" sense; I think Simplicity already has the Euclidean/Peano "least axioms" sense covered. One approach is to just define a new version of the language via the tapleaf version, defining new opcodes however we like. The other is to use the "softfork" opcode -- chia defines it as: (softfork cost code) though I think it would probably be better if it were (softfork cost version code) where the idea is that "code" will use the "x" opcode if there's a problem, and anyone supporting the "version" softfork can verify that there aren't any problems at a cost of "cost". By contrast, youtu.be chia lisp has fewer opcodes than Simplicity's jets, has feasible approaches to low-impact soft forks to increase functionality, can be used with only two levels of abstraction (lisp with macros and the opcodes-only vm level) that seem not too bad to understand, and (in my opinion) doesn't seem too hard to implement/maintain reasonably.


Others believe that due to price equilibrium, a halving of supply should cause an increase in price if demand for Bitcoins is equal or greater than what it was before the halving event. A particular advantage of lisp-like approaches is that they treat code and data exactly the same -- so if we're trying to leave the option open for a transaction to supply some unexpected code on the witness stack, then lisp handles that really naturally: you were going to include data on the stack anyway, and code and data are the same, so you don't have to do anything special at all. Since the GC nursery acts as a large buffer of potential allocations, the amount of work done in both cases would be the same, at least until the number of allocs exceeds the nursery size. DROP` is just a refcount decrement, and the amount of memory used remains small. 100kB of serialized clvm code from a random block gzips to 60kB; optimising the serialization for small lists, and perhaps also for small literal numbers might be a feasible improvement; though it's not clear to me how frequently serialization size would be the limiting factor for cost versus execution time or memory usage.


And while I've never really coded in lisp at all, my understanding is that its biggest problems are all about doing things efficiently at large scales -- but script's problem space is for very small scale things, so there's at least reason to hope that any problems lisp might have won't actually show up for this use case. Both those essentially give you a lisp-like language -- lisp is obviously all about lists, and a binary tree is just made of things or pairs of things, and pairs of things are just another way of saying "car" and "cdr". You could also allow things to be pushed onto the stack that (recursively) can push things onto the stack -- the language "Joy" takes this approach. One of the things people sometimes claim about bitcoin as an asset, is that it's got both the advantage of having been first to market, but also that if some altcoin comes along with great new ideas, then those ideas can just be incorporated into bitcoin too, so bitcoin can preserve it's lead even from innovators. Shortly after, the hacker started distributing some of the funds across many liquidity pools in an effort to convert the BNB into other asset, according to Bleeping Computer.

댓글목록

등록된 댓글이 없습니다.