OP_PUSHDATA4にhello worldとぶち込む(ぶち込めず)
色々読んでるけど、
要は一連でどうやるのよ?
応用の先に例えば飛躍してどんなことができるのよ?
が、全く分からない。
で、まずは実施してできそうであり、実施したらどうなるか見れそうなものをやっていく。
こちらのツイート
Just added opcode support for Datapay: https://t.co/oJcrICyP6w
— _unwriter (@_unwriter) 2019年3月7日
With this, Datapay supports:
1. String
2. Hex String
3. Buffer/ArrayBuffer
4. Opcode object
Now you can include opcodes like OP_0, etc. within an OP_RETURN script. Just need to use the {op: [opcodenum]} syntax. pic.twitter.com/BnWzh0tI22
datapayでもOPCODE扱えるようです。
前回のmoneybuttonのソースをコピって、ぶち込むところだけ改修して実施してみます。
<script> document.addEventListener("DOMContentLoaded", function(e) { databutton.build({ data: [{op: 78}, "test text data."], button: { $el: "#button", onPayment: function(msg) { console.log(msg) document.querySelector("a#tx").innerHTML = "View on B (" + msg.txid + ")" document.querySelector("a#tx").setAttribute("href", "https://b.bitdb.network#" + msg.txid) console.log("https://whatsonchain.com/tx/" + msg.txid); }, onError: function(err) { console.log(err) } } }) }) </script>
確認
{ "v": 3, "q": { "find": { "tx.h": "tx..." } } }
OP_RETURNはerrorだけどデコードするとテストテキストがでました。
しかし「genesis.bitdb.network/query」では取得できず。bico.mediaは取れた。
これだと取得に難アリになってしまうな。一応bico.mediaから参照すればいけるのでいいかな...
趣味レベルでしか使えないけど、本格的になるようなら相談すればいい話だな。
と、思ったけどどうもマニュアル見ると見れそうなんだよな。
docs.bitdb.network
もしかしてOP_RETURNがerrorなのが問題かも?あdatapayではなくてdatabuttonが対応してないかも?
と、いうことでサーバjsで試してみることに...
うーん、芳しくない。OP_PUSHDATA4+OP_RETURNとOP_PUSHDATA4のみでやったけど微妙におかしい
出来る言うから簡単なテストかと思ったけど、やって良かった。今のところ微妙。
私のやりたいことと課題山積み。
datapay用opcode一覧
github.com
もしかすると、106にそれを入れられるだけで、78に直接いれることはできないのかも??
ではどうやってbitcoinscriptを投入するのでしょうか。
- 追記.
因みにこのOP_PUSHDATA系に短いテキストを埋め込むのは現在は?少なくともできないようです。
PUSHDATAは容量の増加に応じて利用される枠のためです。
Script.prototype._addBuffer = function (buf, prepend) { var opcodenum var len = buf.length if (len >= 0 && len < Opcode.OP_PUSHDATA1) { opcodenum = len } else if (len < Math.pow(2, 8)) { opcodenum = Opcode.OP_PUSHDATA1 } else if (len < Math.pow(2, 16)) { opcodenum = Opcode.OP_PUSHDATA2 } else if (len < Math.pow(2, 32)) { opcodenum = Opcode.OP_PUSHDATA4 } else { throw new Error('You can\'t push that much data') } this._insertAtPosition({ buf: buf, len: len, opcodenum: opcodenum }, prepend) return this }
また、datapayなどはmoneybuttonのjsライブラリを簡易に実行しやすくするインタフェースなので、深く知る必要がある場合はそっちのソースを解析せよとの事でした。
github.com