The following four lines print from the terminal when I start Bitcoin. You can only shop on the dark web if you have bitcoin, and you can’t use bitcoin for transactions unless you have access to the dark web. This homoiconicity greatly tempts LISP programmers to use macros, i.e. programs that generate other programs from some input syntax. Homoiconicity means that one can manipulate code just as easily as the data, and thus LISP macros are a trivial extension on the language. Then programming at scale is hampered because each LISP programmer has their own private dialect of LISP (formed from the common LISP language and from their own extensive set of private macros) and intercommunication between them is hindered by the fact that each one speaks their own private dialect. 17.4 MB and then stops growing. 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. 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.
Of note is that the supposed “problem at scale” of LISP is, as I understand it, due precisely to its code and data being homoiconic to each other. 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. 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”. I don’t think they’ve solved the broader problem, and thus I think it still makes more sense to stick with bitcoin’s current model here. 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.
Bastien Teinturier: It’s really hard to tell, honestly, because both directions can make sense in some scenarios. So it’s sort of a recurring payment for liquidity as a service, at least that is how I’m thinking about it currently. This is bad for the company as their liquidity is tied up in unproductive channels. The problem this company has is they offer an inbound liquidity service, but it is common after a user purchases liquidity, the channel goes unused. To me, it seems like chia lisp is a better answer to the problem here than the Simplicity language. 0) 1 (if (l sigs) (if (checksig (f sigs) (f keys)) (checkmultisig (r sigs) (r keys) (- k 1)) (checkmultisig sigs (r keys) k) ) 0 ) ) Here each “sig” is a pair of a 64B bip340 signature and a 1B sighash; instead of a 65B string combining both, and sigs, keys are lists, and k is the number of successful signature checks you’re requiring for success. Think about digital signatures, digital contracts, digital keys (to physical locks, or to online lockers), digital ownership of physical assets such as cars and houses, digital stocks and bonds … At least I think so?
Seems worth looking into, at least. 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), 바이낸스 신원인증 실패 (https://www.electronicsecurityservices.com.au/4-enticing-ways-to-improve-your-bitcoin-skills) 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. By contrast, 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.