OP_PUSHDATA4にhello worldとぶち込む(ぶち込めず)

色々読んでるけど、
要は一連でどうやるのよ?
応用の先に例えば飛躍してどんなことができるのよ?
が、全く分からない。

で、まずは実施してできそうであり、実施したらどうなるか見れそうなものをやっていく。

こちらのツイート

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