現行のmonapartyで、蛇口を作りたい

科学・IT 蛇口 monaparty 署名

52 Res. 47.2687166 MONA 7 Fav.

1 :ふゅとん三段:2020/09/13 18:09:49  3.2998514MONA/6人

(こちらがあるのに気がつかず、古い方にもポストしてしまいました。ごめんなさい)
今更のようですが、monapartyのXMPを配るのに、蛇口を作ろうとしています。
現在、monaparty上でトークンを送るための未署名トランザクションまでは作れましたが、その先(署名と送信)に進めないでいます。

そこで質問ですが、

1.現行のmonapartyで[sign, send]_raw_transactionは使えますか?
2.もし使える場合、必要になるパラメータ名と各パラメータに何を書けばいいのか教えてください。
3.もし使えない場合、
3-1.webウォレットでAPI経由で署名する方法があるでしょうか。あるならその方法を教えてください。
3-2.electrum-monaでAPI経由で署名する方法があるでしょうか。あるならその方法を教えてください。
...webウォレットもelectrum-monaも使えない場合は、やっぱりフルノード立ててやるのが正しいのでしょうか…

以上わかる方どうぞよろしくお願いします。

2 :脇P六段福者男爵:2020/09/14 03:58:22  3.9MONA/1人

1.無かったかと思います……
2.同上
3-1.それは秘密鍵をそのAPIの先に送るという事でしょうか?基本的には署名はローカルでおこないます
3-2.そのトークンをお持ちの秘密鍵を持ったウォレットをオープンした状態でなら行えます

#ディレクトリ指定
./run_electrum -D /tmp/alice
#daemon起動
./run_electrum daemon -d
./run_electrum load_wallet
./run_electrum signtransaction <未署名トランザクションhex>

3 :脇P六段福者男爵:2020/09/14 03:58:26  0.39MONA/1人

or

./run_electrum signtransaction <未署名トランザクションhex> <privatekey>

で行けたかと思います。久しくリモートテスト上でしか動かして無いのでちょっと覚えてないですがこんな感じだったかと

4 :脇P六段福者男爵:2020/09/14 04:01:32  3.9MONA/1人

broadcastは以下で行えます。
./run_electrum broadcast <署名済みトランザクションhex>

ただblockbookやinsightのapiにpostでも良いかなとは
https://blockbook.electrum-mona.org/api/v2/sendtx/<;署名済みトランザクションhex>

5 :unknown三段:2020/09/14 08:33:57  7.8MONA/1人

PHPで生トランザクション生成、署名、ブロードキャストする の自分の使ってるソース貼り付けておきます 自サーバー建てずに脇Pさんのサーバーに投げてます いつもお世話になっておりますm(_ _)m

余計なところ削って貼り付けたのでどこかコンパイルエラーがあったらゴメンなさい 大筋の流れは問題ないはず
久々にソース開いたらWarningいろいろ出てるけど気にせずにw
あとfee_per_kbって1000倍でいいのかな?1024倍のような気もするけど・・・・まぁ1円以下の話なので気にしない



あと以下のページ参考に署名処理作りました ビットコイン用の署名処理がほぼそのまま使えるのでサンプルをほぼコピペ
プレフィックスとか書き換え必要な部分は最初から用意されてたかmpurseかelectrum-monaかのソース見て数字変えたような覚えもうっすらと。
http://bitcoin.stackexchange.com/questions/46764/sign-transaction-hex-with-php-library

6 :ふゅとん三段:2020/09/14 21:48:13  0MONA/0人

お二方、ありがとうございます。
署名する時に秘密鍵外に出したら意味ないですよね、よく考えれば。

参考にさせていただきます。

7 :今は亡き業者BOT名無し三段:2020/09/17 18:01:30  3.9MONA/1人

(おひさしブリーフ)

JavaScript (といくつかの npm パッケージ) で署名はできるっぽい。
たとえば https://github.com/monaparty/tokenswap-example/blob/d92a19472e7821e2c0ce954fa6223806015f1c41/burn.js#L88-L91
https://qiita.com/cryptcoin-junkey/items/f73163f57ad2b94b9152

もちろんクライアントサイドでやると秘密鍵ダダ漏れになるのでサーバサイドで実行のこと #っぽいではない
いわゆるサーバレスをうまく使うと維持費もオトクっぽい
署名済みトランザクションの送出はウォレットバックエンドとかエクスプローラとか Monaparty ノードとかを使えばおk #っぽい

8 :ふゅとん三段:2020/09/18 23:25:54  0MONA/0人

ありがとうございます。
Rubyで挑戦しましたが、わからないところが多すぎたので、unknwonさんのPHPコードを写経しています。
MonaPartyって、現状ではJSかPHPくらいなんでしょうかね…

9 :脇P六段福者男爵:2020/09/19 05:29:37  0MONA/0人

Rubyと言いますとどのライブラリを使っていますかね?

10 :ふゅとん三段:2020/09/19 17:25:05  0MONA/0人

https://github.com/lian/bitcoin-ruby

これを使っています。

11 :今は亡き業者BOT名無し三段:2020/09/22 14:36:02  0MONA/0人

bitcoin-ruby で Monacoin のチェーンを弄るなら、このコードなどを参考にして lib/bitcoin/monacoin.rb を書かないと…っぽい https://github.com/lian/bitcoin-ruby/blob/master/lib/bitcoin/litecoin.rb

12 :今は亡き業者BOT名無し三段:2020/09/22 15:47:18  0MONA/0人

Monaparty ノードは Python で書かれている #っぽいではない
(GitHub の monaparty/counterparty-lib などにコードがある)

…だが、Python でアプリを組んでいるという人の話は
本家 Counterparty 方面でも見かけない #っぽい

13 :ふゅとん三段:2020/09/22 22:07:57  0MONA/0人

litecoin.rbをコピーしてmonacoin.rb作りました。
…しかしパラメータをどういじればいいのかわからないのでそこで放置しています。
今は動作の理解のために、bitwasp/bitcoin-phpを使って、monacoin対応してた人のリポジトリからコピーさせてもらってbitwasp/bitcoin-phpの新バージョンに対応させたものを使って学習中です。
https://github.com/fuyuton/bitcoin-php
39 unknownさん。
privateKeyFactoryの使い方が微妙に変わってたところをクリアしたのですが、
$signer->sign($idx, $priv, $transactionOutput);
で、
Invalid script signature - must be PUSHONLY.
が出ていてこちらも止まっています。

14 :ふゅとん三段:2020/09/22 22:11:14  0MONA/0人

unsigned_tx = ...
signed_tx = sign(unsigned_tx, priv_key)
tx_id = broadcast(signed_tx)

みたいな流れでさくっといけると思ったら、署名の前にごにょごにょしないといけないことを知って、そのあたりでくじけそうになってます。

15 :unknown三段:2020/09/24 12:44:24  3.9MONA/1人

今も動いてるソースからコピペですが↓でいけてますよ
上でコピペしたクラス使って。
$monaparty = new MonaParty();
$unsighed_tx = $monaparty->createTx($addr_to, ASSET_NAME, $amount, ADDR_MONYA, $memo);
$signed_tx = $monaparty->sign($unsighed_tx);
$result = $monaparty->broadcast($signed_tx);

記憶違いかもしれないけど「Invalid script signature - must be PUSHONLY.」は自分も見たような覚えがあって ただ対処方法思い出せず申し訳ない。
がりがりコード書いて対処したのではなく パラメータの型を間違えたとかちょっとした修正で行けたような記憶がうっすらと。
気づいたら単純だったのに気づかずにライブラリのソース読み漁って無駄に時間使ってしまったような覚えが。
署名成功する前のコミットが残ってないので(署名成功した時点が初コミット)何を修正して解決したのかがわからなくて申し訳ない
Monacoinのプレフィックスの誤りかとgithubみたけどうちと全く同じだったので問題ないし・・・

16 :unknown三段:2020/09/24 12:52:15  4.39MONA/1人

PUSHONLYでgrepかけてみたら力技で対処してたみたいw
関数しょっぱなにreturn trueを挿入してチェックをスキップしてたwww

MonaPartyだからかCounterPartyだからかこのチェックはしなくていい(絶対に通らない)、って結論になったような記憶をうっすら思い出したけどもはっきりとは覚えてない
とりあえず自分はこのPUSHONLYのチェック外してもう1,2年使っていてエラー起きてないからたぶん大丈夫(自己責任でw

bitwasp\bitcoin\src\Script\Script.php line 226

17 :unknown三段:2020/09/24 13:12:13  3.9114114MONA/1人

だんだん思い出してきたけど bitwaspって本来はbitcoin用のライブラリであってcounterparty用ではない ただ署名する処理はbitcoinもcounterpartyも同じでしょ、って発想で使い始めた
普通のbitcoinのトランザクションだとOP_CODEを特定のいくつかしか使わないからこのisPushOnlyのチェックが入っていたけど CounterPartyではそれ以外のOP_CODEも使うからひっかかってしまう
なのでCounterPartyのトランザクションではこのチェックは意味がないのでチェック外しても問題ない、という結論に

OP_CODEのこと全くわかってないので自信はないけど 1年前の自分はたぶんそんなことを考えてこのチェックを外した気がする

18 :ふゅとん三段:2020/09/25 00:24:11  0MONA/0人

ありがとうありがとう!
ございますございます!

動かせました!
https://mona.chainsight.info/tx/9fabccd823ba7e6a1f98679d1fb7f34dddb53c93d09ff59f6374242d3bf52e47

次はRubyで動かしたい…

19 :ふゅとん三段:2020/09/25 00:29:05  0MONA/0人

isPushOnlyを飛ばしてもいいと思った理由を教えていただきたい…
自分はそう言う発想が出来なかったので

20 :unknown三段:2020/09/25 09:48:03  0.39MONA/1人

動いたようでおめでとう よかった。

飛ばした理由、、、そんなたいそうな何かがあったわけじゃなくて地道に原因突き詰めていった結果かなぁ
まずエラーメッセージでググったけど解決しなかったので、仕方ないライブラリのソース読むか・・・
ソースからエラーメッセージでgrepかけて場所を特定してprint文いろいろ仕込んでエラーの原因探るとどうもOP_CODEが範囲外だかららしい
で、OP_CODEについてググってみるとビットコイン用の範囲外でもCounterPartyでは使うようなことがわかったので
じゃあ飛ばそう、、、と。
本当はCounterParty向けに修正した方がよりいいんだろうけど内輪でしか使わないシステムだしOP_CODEのこと一から調べる気もならなかったのでいいかなぁ?っと。

だいぶ前だから想像も入ってるけどだいたいこんな感じだったかと。

21 :ふゅとん三段:2020/09/25 17:21:23  0MONA/0人

ありがとうございます。
やっぱり地道にprintfデバッグなんですねー

22 :ふゅとん三段:2020/09/29 00:25:46  0.055MONA/1人

楽しみにしてくれてる人が居るみたいなので、ちょこっと進捗を書きます。

PHPでトークンの送信には成功しました。
今はRubyで送れないか実験中です(自分が一番使える言語のため)
そして数時間前に署名してようやく送れたと思ったのですが、サーバーから返ってきたTXIDをinsightなどで検索するも現れず。
どうもどこかでミスってるっぽいです。
そのうえ、MONAの残高があるにもかかわらず、Insufficient MONAと言われる始末。
すべてのUTXOがロックされたような状態に陥っているようです。

ここからはわかる方に質問なんですが、
…1度送信したトランザクションがネットワークに取り込まれない状態でいる時って手数料の関係で使われるUTXOってどんな状態なんでしょう?
ブロードキャストのキャンセルってできないと思ったし、ネットワークで処理(OK/NG)されない限り延々とロックされているのでしょうか…

23 :ふゅとん三段:2020/09/29 00:42:10  0MONA/0人

とりあえず追加のMONAを送って、手数料引き上げてRubyで送信したら、うまく行きました!
https://mona.chainsight.info/tx/9e523f0b32c0155861f3e96375537743ff4f6d75f965b2d535263028ef5743cf
https://mpchain.info/tx/9e523f0b32c0155861f3e96375537743ff4f6d75f965b2d535263028ef5743cf

ただ先ほどの質問、
>…1度送信したトランザクションがネットワークに取り込まれない状態でいる時って手数料の関係で使われるUTXOってどんな状態なんでしょう?
ブロードキャストのキャンセルってできないと思ったし、ネットワークで処理(OK/NG)されない限り延々とロックされているのでしょうか…
はまだ受付中です。

24 :unknown三段:2020/09/29 09:59:37  0.39MONA/1人

counterblock API(上のソースで使ってるやつ)だとブロードキャスト済みのUXTOも考慮して生トランザクション作るから2つめを作れないけど ライブラリによってはチェックせずに作るので それを使って同じUXTO使った別のトランザクション作ってブロードキャストすればOK
同じUXTOは1回しか使えないので 2つ以上ブロードキャストされた場合は(厳密にはマイナー次第だけど)手数料高い方が取り込まれてその時点でもう一方は無効になる

同じようなことをやらかしたときは同じ秘密鍵を使っているもにゃから自分自身に全額送金して解決した気がする

25 :ふゅとん三段:2020/09/30 01:37:24  0MONA/0人

うぅ…UTXOの扱い方勉強します。
ありがとうございます。

26 :ふゅとん三段:2020/09/30 01:53:15  0MONA/0人

これ使えば出来そうですね。
MonapartyアドレスのUTXOをお手入れしましょう - Qiita https://qiita.com/anipopina/items/90c1eb3ac1f07082df55

JSかぁ…

27 :ふゅとん三段:2020/09/30 23:07:17  0.114114MONA/1人

進捗です。

bitcoin-rubyを改造してmonacoinでも使えるようにしました。
https://github.com/fuyuton/bitcoin-ruby

使い方は大体こんな感じです。
https://gist.github.com/fuyuton/87b5f4d2d9cd9e8801b3cc265c1ed925

これでrubyからでもmonapartyのトークンを送れるようになりました。
でも、dust monaが宛先に送られてしまうので、その辺を出来るようにしないといけません。

28 :ふゅとん三段:2020/10/02 01:57:27  0MONA/0人

bitcoin-php v1.0.xに対応したmonacoinバージョンをupしました。
行きがけの駄賃的に改造したものなので、自己責任でお願いします。
これはdust monaが流れずトークンだけ送ることが出来ます。

https://github.com/fuyuton/bitcoin-php

monaparty用のサンプル(thank you, unknownさん)
https://gist.github.com/fuyuton/79f782dfc247c756a107d4dd3cd2df48

composer.jsonのサンプル
https://gist.github.com/fuyuton/e72ac9fe07b809262027493cb4e64085

29 :ふゅとん三段:2020/10/03 21:18:25  1.4948934MONA/5人

進捗です。

本日無事にトークンのみを送ったり、ダストの量を指定して送ったりすることに成功しました!
助けてくださった皆さんありがとうございました。
蛇口の仕様を決めて早いうちに開始したいと思います。

30 :ふゅとん三段:2020/11/08 00:07:29  0.169114MONA/2人

1ヶ月空いてしまいました。
以前作った蛇口を改造しています。11月中に動かしはじめられたらいいなという状況です。
カンパ送ってくださった方たちに感謝します。モチベーションの維持に役立っています。手数料やボーナスに使わせていただきます。

31 :ふゅとん三段:2020/11/27 21:44:48  0.00114MONA/1人

ようやく一応の完成を見たのでご報告です。

https://faucet.ccexchange.info/
リンクを張ってくださるかたは上記アドレスを張っていただけるとうれしいです。(告知事項やルールを書いてあるため)

まだ一応一通り動いたという段階で安定したとまでは言えないのでしばらくテスト期間とします。
テスト期間中は1回答につき、0.5XMPとさせていただきます。
テスト終了後は1XMP~3XMP程度を予定していますが、人数が予想より多かった場合は0.5XMPのままかもしれません。

下記ルールを設定しています。よろしくお願いします。
*1人1アドレスでお願いします。<br>
(アドレスを変更したい場合は、1日1回0:00(JST)を超えてから可能です)<br>
*30分に1回、回答可能です。<br>
*1日に2~3回を推奨します<br>
*1日の回答数が6回を超えるとBOTと見なされて支払いは行われません。

32 :ふゅとん三段:2020/12/03 22:13:51  1.14114MONA/1人

進捗です。
リクエストのある時とない時両方の動作が確認できたので、ベータテストに移行したいと思います。
12月いっぱいをとりあえずのベータテスト期間とします。
ベータ期間中は1回の回答につき3XMPとさせていただきます。

33 :ふゅとん三段:2020/12/25 01:27:58  0.0114114MONA/1人

利用者は少ないけど、毎日利用してくれてる人がいる。ありがたいことです。

さてもうすぐ12月も終わるわけですが、その後どうしましょう…
Monapartyというかトークン作る手数料を大幅に上げるという話もあるようなので、どの程度にするか悩んでます。

34 :ふゅとん三段:2020/12/30 15:43:42  0MONA/0人

公式から値上げのアナウンスがないので、当面現状維持で行こうと思います。
アナウンスがあり次第変更します。

35 :コジ三級:2020/12/30 19:08:40  0.0228228MONA/2人

よく分かっていないながら、毎日利用させてもらっています。
(´・ω・`)ノ
ありがとうございます。

36 :ふゅとん三段:2020/12/30 23:44:39  0.0114114MONA/1人

>>35 毎日ご利用ありがとうございます!

37 :popont四段子爵:2020/12/31 01:12:38  0.04649MONA/1人

昨日はじめて使ってみました。
3XMP届いてました(^^)

38 :ふゅとん三段:2020/12/31 02:23:36  0MONA/0人

>>37 ご利用ありがとうございます!

39 :おぴょぴょ鯖男二段男爵:2021/01/03 09:40:13  0.04649MONA/1人

たまに利用させていただいてます。
いただいたXMPを使って独自トークン作ってみました。

40 :ふゅとん三段:2021/01/03 16:47:42  0.1255254MONA/2人

>>39
ご利用ありがとうございます!

41 :コツコツMたろう二段:2021/02/24 01:57:27  0.0114114MONA/1人

最近利用しておらず申し訳ありません。
昨日久々に利用させて頂きました。
問題なくXMP届きました。

42 :名無し初段:2021/02/24 15:36:51  0MONA/0人

>>33>>34
この値上げが現在の価格からどの程度なのかでちょっと対応が変わってくるかなあと

根拠のないただの予想としては、現在のトークンの発行料0.5XMPの凡そ100倍、50XMP程度なのかなと

発行手数料を上げることによるXMP争奪戦が起きるのか、はたまた話題にもならずに緩やかにカード発行ペースが減少するか

アレの開発に携わってる人数ホントに1桁程度だからその人らの気分次第な気がしてちょっとなあ感

43 :ふゅとん三段:2021/02/25 01:10:22  0MONA/0人

https://web3.askmona.org/297
↑のスレで英語対応を…という話が出ていたので、またわかる方にお尋ねしたいのですが、
現在XMPの蛇口はruby+sinatraで組んでいるのですが、ブラウザの言語コードの取得がうまく行かず、マルチランゲージ対応が出来ずにいます。

ブラウザの言語の取得方法をご存じの方、教えてください。

44 :ふゅとん三段:2021/02/25 01:14:42  0MONA/0人

こんな感じで書いてるけど、うまく動いてるのかよくわからない…
browser_lang = env['HTTP_ACCEPT_LANGUAGE']
lang_tmp = @@lang.keys.map{ |k| browser_lang.include?(k) ? k : nil}.compact
lang = lang_tmp.empty? ? 'ja' : lang_tmp[0]

45 :脇P六段福者男爵:2021/02/25 04:41:00  3.9MONA/1人

パッと探してみた感じだとこれだろうか?
https://qiita.com/genta/items/d993b8094c1601cd4cb9
5年以上前の記事なので1年前とかで区切って検索した方が良いかもです

46 :ふゅとん三段:2021/02/25 05:15:21  3.9MONA/1人

rack.locale使うんですね
sinatraにこだわって探してたのが失敗だったみたいです
ありがとうございます

47 :サトスズタカ三段:2021/02/25 10:49:22  0MONA/0人

>>46
本当に参考までですが、もなフォーセットではあえてブラウザ言語を取らず、GETパラメータで言語を渡すようにしています。

そうしないと、同じURLで複数言語対応状態にするとGoogleがインデックスしたときに「英語版しか拾わない」ことが心配だったためです。
※GETパラメータでURLを分けるとその心配がなくなる(はず?)。

48 :ふゅとん三段:2021/02/25 16:35:34  0MONA/0人

>>47
そうですね、実際そのようなことが起こるというブログを見たことがあります。

49 :名無し初段:2021/02/25 20:51:39  0MONA/0人

>>42
予想が当たってしまい困惑気味;;

この書き込み見つけてから決めたんじゃないかっていうタイミング
まあ、業者なんたらの人は否定するんだろうけど

Aから始まる奴は今まで通りの模様

50 :ふゅとん三段:2021/02/25 21:47:57  0.04649MONA/1人

Protocol changes will come on the mainnet block 2270000 https://www.monaparty.me/blog/2021/2/8/
monaparty公式からアセット生成手数料の変更のアナウンスが出ましたね。

これに伴い蛇口の1回分の出力を3から25に増やしたいと思います。それ以外は変わりません
おおよそですが、ブロック高2265000を過ぎたあたりで変更する予定です。
自動化されていないため、そのタイミングキッチリではないことをご理解ください
https://twitter.com/mist_faucet こちらでカウントダウンを1時間ごとにツイートします

(思ったより大きくならなくてちょっとほっとしました。カンパを頂いてるとは言え1回に1000XMP消費するとか言われたら蛇口が1年も保たなくなっちゃうなと思っていたので)

51 :名無し初段:2021/02/25 23:22:08  0MONA/0人

個人的にはブラウザで自動に言語が選択されるのは好きじゃないですね。
あとダウンロードとかで自動でOSを認識するのとかも好きじゃない。
自動でもいいけど、手動で変えられるようにしておいてほしいです。

52 :ふゅとん三段:2021/02/26 01:56:56  0MONA/0人

>>51 ご意見ありがとうございます

お気に入り

ログインしてMONAをもらおう

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

ログイン