モナコインのBlockChainにデータを埋め込む!

科学・IT

58 Res. +15036.91897482 MONA 14 Fav.

1 :くまりんこ七段:2016/05/08 17:44:14 (1年前) +10.79393028MONA/8人

OP_RETURNを使ってブロックチェーンにメッセージを埋め込む実験をしました.

https://mona.chainsight.info/tx/c1238c45567707ffa0a75ea9ff5e44d75084194bfb20240a062f0c6459b2c446

OP_RETURNを使ったビットコインのサービスをモナに移植してもいいし,独自で新たなサービスを作るのも面白そうで夢が広がりそう!

参考:
Bitcoin: OP_RETURN と応用例の技術的説明 - Qiita http://qiita.com/hshimo/items/9506931790dfc2d424d8
具体的なやり方(英語) http://bitcoin.stackexchange.com/questions/25224/what-is-a-step-by-step-way-to-insert-data-in-op-return

2 :名無し四段:2016/05/08 19:43:49 (1年前) +0MONA/0人

標準のクライアントではtestnet以外では規定されたフォーマットのscriptしか送出できないようになってた気がしますが、
カスタマイズしたクライアントで送出して、それを含むブロックも自力で採掘したりしたんですか?

3 :くまりんこ七段:2016/05/08 20:20:20 (1年前) +0MONA/0人

>>2
クライアントは標準のものを使いました。
また、採掘したのは自分ではないです。

トランザクションをクライアントとは別のプログラムで作成した後、monacoindのsendrawtransactionでそれをブロードキャストしました。

もしかして採掘プールによってはリジェクトされることがあるのかな。

4 :名無し五段:2016/05/08 21:27:49 (1年前) +0MONA/0人

それ失敗したらなんかばぐるんじゃねえの?
それで0.1円張り付きとかになりそう

5 :名無し四段:2016/05/08 22:26:59 (1年前) +0.00114114MONA/1人

>>4
大丈夫だと思う
書き換え元のbitcoinでもこのやり方つかってcounterpartyとか実現したりしてるし

そもそもブロックチェインに取り込めるトランザクションがどんなのだったとしても問題ないようになってないと
P2P分散ネットワークで通貨が作れるってこと自体が成り立たない

6 :名無し四段:2016/05/08 22:32:34 (1年前) +0.00114114MONA/1人

>>3
https://github.com/monacoinproject/monacoin/blob/master-0.10/src/script/standard.cpp

ソース見てたら、OP_RETURNのあとにデータだけのトランザクションは
普通にstandardの一つに入ってた (57行目あたり)

7 :名無し四段:2016/05/08 22:33:37 (1年前) +0MONA/0人

にしても定期的にMonacoinのブロックチェインをparseしてみてるけど

それやるコードに解釈するトランザクション追加しないとな

8 :くまりんこ七段:2016/05/08 23:13:01 (1年前) +1.114114MONA/2人

>>6
ありがとうございます.問題なさそうですね.


ちなみに現行のMonacoin-0.10.2.2では,OP_RETURNの後につけることができるデータ量が40バイトとなっています.
これはBitcoin-0.11.0の80バイトと比べて少なくなっていますので,Bitcoinのサービスを移植する時は注意が必要です.
(アップデートで80バイトに増やしてほしいなぁ~)

9 :名無し四段:2016/05/09 09:49:10 (1年前) +0MONA/0人

>>1
このトランザクションは "Hello!" って文字列を送ってる感じですか

OP_RETURN いろいろ遊べそうだな
Monacoinなら手数料安いし

10 :makit五段:2016/05/09 09:50:57 (1年前) +0MONA/0人

>>8
データ突っ込めるんだ カウンターパーティスレでできないみたいなの見て諦めてたけど カウンターパーティのソース読んで見ようかなぁ~
MONAならトランザクションはガラガラでFeeも安いし承認早いから面白いことできそう

ただ80バイト→40バイトってのはかなりきつい制約になりそう
同じくアップデートで80バイトに増やしてくれないかなぁ~
というかMONAの特色出すためにもっと大幅に増やしてくれたらもっと面白いことできそうなんだけどなぁ

11 :名無し四段:2016/05/09 10:21:04 (1年前) +0MONA/0人

>>10
カウンターパーティスレで今のバージョンのMonacoinで無理そうって書いたの自分かも
それ書いたときに参照したコードがMonacoin 0.8.7.1とかで
たしかにそのバージョンではOP_RETURN+データがstandardになってないけど
今のmasterのバージョンの0.10だとstandardになってるみたい
(そのレスを書いたときも既に0.10はgitに載ってたみたいだけどなぜか古い方を見てたっぽい)

ごめん

12 :名無し四段:2016/05/09 10:27:43 (1年前) +0MONA/0人

Monacoin版counterpartyができたらProof of burnでXCP相当のを作る過程で
流通しなくなるMONAができてMONAの価格が少しは上がりそう

(XCPの初期配布は 誰も(作者も)秘密鍵がわからない公開鍵で作ったアドレスに送金して、送金した分に応じてXCPがもらえるって感じだったはず)

13 :makit五段:2016/05/09 11:03:44 (1年前) +0MONA/0人

>>11
いえいえ 自分もろくに調べないで鵜呑みにしちゃってたので気にせずに^^

14 :名無し四段:2016/05/23 16:49:47 (1年前) +1.11525514MONA/3人

Monacoinの新バージョンでOP_RETURNのサイズ80バイトに増えたみたいですよ!!

https://monacoin.org/ja/download.html

15 :名無し四段:2016/05/23 17:02:55 (1年前) +0MONA/0人

新バージョンのビルドの日付が 5月9日になってるけど
ワタナベさんはここのスレのやり取りを見てバージョンアップを決めたのでは・・・(考えすぎ)

16 :名無し四段:2016/05/23 17:14:03 (1年前) +0MONA/0人

そして5月9日にコードを書き換えたのにすぐリリースしなかったのは
Monacoin版counterpartyを作るために色々準備していたからに違いない
(もっと考えすぎ)

17 :名無し四段:2016/05/23 17:28:41 (1年前) +0MONA/0人

Monacoin版counterpartyの通貨がXCPに対して何になるか考えてみたら
XMPとかいうのを思いついたけど、これってingressに出てくる単位だな

びりあるさんのTwitterで新バージョンのことをつぶやく前に ingress最近やってないなって言ってたのは
ワタナベさんとXCP相当の名前を何にするか話してた時 「XMPってのどうだろ」「それingressじゃん」って出てきたからに違いない!

(考えすぎでもはや病気)

18 :なむやん七段:2016/05/23 17:49:21 (1年前) +0MONA/0人

indieSquereみたいのが作られるなら大歓迎
パンツ脱いで期待してる!

19 :名無し名誉名人:2016/05/23 18:07:48 (1年前) +0MONA/0人

>>14
新バージョンでソロマイニングできなくなった…

20 :名無し四段:2016/05/23 18:26:18 (1年前) +0MONA/0人

(正確には OP_RETURN + データ の標準トランザクションの データの部分の上限が80バイトに増えた)

21 :くまりんこ七段:2016/05/23 18:27:34 (1年前) +1MONA/1人

新バージョンですでに80バイト対応していたとは気づきませんでした。
モナコイン版CounterPartyが現実味を帯びてきましたね!

最新版のノード数
http://seed.sighash.info

22 :LN試験中七段:2016/05/25 14:36:28 (1年前) +0MONA/0人

counterpartyをdogeに移植したdogepartyというのがあったけど
ぜんぜんはやらないまま、開発もほぼ停止してしまったという

23 :裏技君七段:2016/05/28 17:48:27 (1年前) +0MONA/0人

別トークン使うんじゃなくて、モナーコインで別トークンと交換出来るよくらいやらないと流行らなさそう

24 :名無し四段:2016/06/09 10:11:50 (1年前) +0.00114114MONA/1人

https://mona.chainsight.info/tx/0a8dac99f91006031502d8f753a744a95fda5ca84067307009f1e7c30513301d

こっちでも75バイトのOP_RETURNのトランザクション作ってみました

80バイトちょうどもいけるのかな? OP_PUSHDATA1 を使えば

25 :くまりんこ七段:2017/05/30 00:12:17 +10001.14114114MONA/3人

技術的な話題メモ
SegwitのP2WPKH形式の送金スクリプトを利用してモナコインの送受信をしてみました。

・送信
https://mona.chainsight.info/tx/3d01cc6f940bfe9ced5cdb1450bacf95f3cba3943ed783d4123725bd6f169108
・受信
https://mona.chainsight.info/tx/175e4c11a537499f01ba11e6e47e5b634926c14526dc412276c807ce44618edc

資料リンク
・Segwitのスクリプト形式
https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
・Segwitのハッシュ計算&署名方法
https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki

26 :くまりんこ七段:2017/05/30 21:08:35 +0MONA/0人

P2WPKHだとアドレスが表示されないのでP2SH-P2WPKHで送信します。

・送信
https://mona.chainsight.info/tx/7c0efeb45348721399d13ba8a4681e84f133cb045c5028912acd8055d0f10a63/>/0
・受信
https://mona.chainsight.info/tx/ae8a19842ed8a44be7feaba47f6268f72b6b69f9a5a33afb299a0f634811068d/</0

>>25では「Unparsed address [0]」となっていましたが、「3JTncDwGy6eno78E7aWFqKipTmHmmMJZmd」と表示されるようになります。

ちなみに、insightで使われてるmonacoindのバージョンが古いのでアドレスの頭が”3”になっていますが、最新バージョンだと”P”になります。
(PRMwqeqgU7pbgn6ZLZAC5bL9vzAwPyRYA2)

27 :もなむーる名無し五段:2017/05/30 21:16:23 +0MONA/0人

mona.chainsight.info が使っている insight は、びりある氏がパッチ当てたのをそのまま流用しているのかな?

28 :くまりんこ七段:2017/05/30 22:08:50 +0MONA/0人

>>27
http://chainsight.info/
管理してる人がびりある氏本人です。
以前誰かがmonacoindのバージョンアップの依頼をして、忙しいので難しいと断られていたはず...

29 :なむやん七段:2017/05/31 00:19:46 +5005.11628228MONA/5人

>>26,27,28
Slackで聞いたら「忙しいのでムリ」と率直に断られました。
このままだとマルチシグアドレス検索で難が出るのと、日本産嫉妬コインが息をしていないのと、とある目的の為に勉強としてBlockExplorerを自作しました。
http://namuyan.dip.jp/MultiLightBlockExplorer/address.php?coin=mona&address=PRMwqeqgU7pbgn6ZLZAC5bL9vzAwPyRYA2
是非使ってください!!(宣伝

30 :もなむーる名無し五段:2017/05/31 07:34:32 +0MONA/0人

>>28 なるほど
>>29 TXブロードキャストもAPIでサポートしているのですね すごい

31 :なむやん七段:2017/05/31 19:38:59 +0.00000114MONA/1人

最近は変なTX投げられて消化不良が溜まって見苦しいけどね
一番苦労したのはCSSだったね、デザイン系はまだ不慣れだが勉強になった

32 :くまりんこ七段:2017/05/31 20:18:32 +0MONA/0人

>>29
お疲れ様です!利用させて頂きます!

33 :くまりんこ七段:2017/05/31 20:18:32 +0MONA/0人

>>29
お疲れ様です!利用させて頂きます!

34 :くまりんこ七段:2017/06/03 00:23:38 +0MONA/0人

>>31
APIでtxinwitnessも見れるのはいいですね!
http://namuyan.dip.jp/MultiLightBlockExplorer/apis.php?data=mona/api/tx/f8802bae6b46c59a3248c75b831b242846948e02ba9f2e2fbc125da0932e1528

35 :くまりんこ七段:2017/06/03 17:27:34 +14.39368628MONA/3人

ブロックチェーンに画像を埋め込んでみました。
実際に画像を取り出すデモがこちらです。ぜひ試してみてください。
http://www.stardust.tk/

IE11とChromeでは動作確認してあります。
iOSのSafariだとうまく動かないので調整中です。

内部でなむやんさんのBlockExplorer>>29を使ってます。

36 :なむやん七段:2017/06/03 17:39:49 +0MONA/0人

>>35
これは面白いですね、ご利用ありがとうございます!
6KBもどのように組み込んだのか気になりますね!

37 :なちゃっと八段:2017/06/03 17:43:27 +0MONA/0人

scriptに画像のバイナリ埋め込んだってこと?
面白い!

38 :なむやん七段:2017/06/03 17:49:57 +0MONA/0人

txinwitnessがものすごく長いのに235bytesしかない(実際は5kB)
これがうわさの署名分離なのですね、実感したのは初めてですわ

39 :くまりんこ七段:2017/06/03 22:28:21 +1.24114114MONA/2人

データ埋め込みの仕組みですが、
OP_RETURNだと一つのトランザクションに80byteしか埋め込めないのでP2WSHを使っています。


データを取り出すときは、txinwitnessから分割データを取り出し、1つに結合するだけです。

40 :こゆき2号 六段:2017/06/03 23:10:23 +0MONA/0人

面白いです。興味を持ちました。
これはブロックが生成されたときの報酬のように送信もできるんですかね?

41 :くまりんこ七段:2017/06/03 23:37:09 +0MONA/0人

>>40
>ブロックが生成されたときの報酬のように
何かのタイミングで自動的に送信するということでしょうか?
そういうサーバーを立てれば可能だと思います。

「受信した人だけデータを見ることができるようにしたい」という意味であれば、データを暗号化すれば実現できると思います。

42 :もなこいにすた★六段:2017/06/04 01:33:28 +0MONA/0人

いろいろ楽しそうな内容だね

43 :名無し六段:2017/06/04 02:54:01 +0MONA/0人

画像以外のデータも埋め込めますか?

44 :名無し四段:2017/06/04 06:03:46 +0MONA/0人

おみくじクッキーみたい

45 :こゆき2号 六段:2017/06/04 07:31:05 +0MONA/0人

>>41

要するに、
https://mona.chainsight.info/tx/42b140d865210f337458b5802504a0555233dfa595f21cd2a927572944197106
のようにしたい訳です。

色々試してみます

46 :名無し四段:2017/06/04 13:29:15 +0MONA/0人

ブロックチェーン外でコインの移動ができるから、同じ仕組みでNEMがやってるアポスティーユもモナでできるはず
単に存在証明だけならOP_RETURNでOKだけど

47 :くまりんこ七段:2017/06/04 19:17:35 +0MONA/0人

>>43
画像以外でも可能です。

ブロックチェーンにデータを書き込むサービスを作れないか草案中

48 :もなこいにすた★六段:2017/06/07 07:17:14 +0MONA/0人

一度ブロックチェーンに載せたらなど消えないデータを、ブロック再生間隔ごとに作れるってと?

49 :Monaparty名無し五段:2017/06/07 12:17:39 +0MONA/0人

>>47 このアイデアのままサービスインしたら
フルノードのストレージサイズが爆発しませんか?

50 :くまりんこ七段:2017/06/07 22:13:41 +0MONA/0人

>>48
そんな感じです

>>49
確かにストレージサイズは増えると思います。
ただ、Segwitのルールに沿ったStandardなトランザクションではあるので問題はないはずです。

51 :Monaparty名無し五段:2017/06/08 05:57:30 +0MONA/0人

>>49 仕様上の問題が無いのは同意ですが
フルノードのストレージサイズが爆発するようなら
txinwitness に対し厳しめのサイズ制限を
わたなべ氏が monacoin-core に入れかねないかなと

コンテントストレージ用の P2P KVS を別に置き
メタデータを Monacoin ブロックチェーンに置く
など一工夫あるとフルノードにも優しいのではと
Storj っぽい構造になりますが

52 :くまりんこ七段:2017/06/08 21:16:32 +1MONA/1人

>>51
おっしゃる通り、無制限で取り込みができてしまうとストレージサイズが爆発するかもしれません。想定している利用用途は、
・トークンなどのアイコン画像
・PoEなどの署名
で、かつモナコインのBlockChainで完結させたいと考えてます。

草案中のサービスは一般人にも興味を持ってもらえるように画像以外も保存できるようにしたいと考えていますが、クラウドストレージのようにデータをガンガン入れられるとご指摘の問題に発展しかねないので、以下の制限を設けます。

・書き込むデータの最大サイズを7,920byteに制限する
・手数料を多めに設定する

あとはモナのコミュニティと相談しつつ決めていければと思います。

53 :もなこいにすた★六段:2017/06/09 15:22:11 +0MONA/0人

消せないデータというのが懸念。
個人情報とか、書き込まれたら消せないのは問題。

54 :なむやん七段:2017/06/09 17:10:46 +0MONA/0人

本来、BlockChainに記録されるデータは消せない、改変できないことがウリだから用途としては適切かな?という思いはある。そして分離された署名データは手数料に考慮されているのか?が気になる。
>>35 では0.00113 MONA per kBのようです。最低手数料の0.001Monaを超えているのでたぶん考慮されていると思いますが。

55 :Monaparty名無し五段:2017/06/09 17:28:15 +0MONA/0人

>>52 手数料の多め設定は
マイナーにとっては嬉しいことだろうと思いますけれども
フルノードのストレージを負担する側への報酬としては還元されませんね

とはいってもフルノードの側に報酬が行くような
仕組みにはなっていませんものね Monacoin って…

仮にくまりんこさんが思いとどまっても誰かがやるでしょうし
そのときには誰も止められもしないのですが


>>53 懸念といえばそのとおりですが
SegWit で容量が増えただけで以前からそういうものでした…

56 :Monaparty名無し五段:2017/06/09 17:31:07 +0MONA/0人

ブロックチェーンのサイズを心配しつつ
「ストレージなんかどんどん安くなるんだしケチ臭いこというなよ野暮だな」
っていう思いも同時に持っています

57 :モナパアオリニスト三段:2017/06/09 17:58:53 +0MONA/0人

アポスティーユ。タイムと事象をリンクする単なる登記のシステムなんだから、書き加えることは出来ないけど、リンクを切れる様にしておけば十分条件なんだろうけど無理なの?

58 :もなこいにすた★六段:2017/06/09 17:59:44 +0MONA/0人

有限な資源だから、ルールは必要だね。
コアのアップデートを必要になるかもしれないけど。

お気に入り

新規登録してMONAをもらおう

登録すると、投稿したり、MONAをもらったりすることができます。質問したり、答えたりしてMONAを手に入れてください。

新規登録ログイン