Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Monacoin v22.1の提案 #1

Closed
wants to merge 14 commits into from

Conversation

monacoin-core
Copy link

直近の修正内容:

  1. Taprootのfast trialを設定。期間は6月1日から1年間、マイナー合意後すぐにアクティベーション。
  2. 手数料が低すぎる件を全面的に適正化した。core walletのデフォルト最低手数料を維持しているので、一般的には何も問題ない水準である。
  3. @wakiyamap のmonadのリポジトリからSignetのchallengeとgenesisを取り込んだ。

ご検討をお願い致します。

@monacoin-core
Copy link
Author

ビルド方法は下記を見てください。
https://github.com/monacoin-core/monacoin-22.1/tree/master/22.1/contrib/guix

ビルドのためにURLとか修正する部分はありません。
gitianより簡単で確実です。

@wakiyamap
Copy link
Owner

ありがとうございます。参考にさせていただきます。

ただここは申し訳ないのですが、個人の作業用レポジトリになるのでcloseさせていただきます。
ただ何故bitcoinと同じPowLimitだとマイニングできないのか気になってしまい実験している次第です。

@wakiyamap wakiyamap closed this May 4, 2023
@monacoin-core
Copy link
Author

ただ何故bitcoinと同じPowLimitだとマイニングできないのか気になってしまい実験している次第です。

マイニングできないことはないと思います。
SignetではマイニングにCPUパワーを消費する意味が全くありません。ですからできるだけCPUを食わない設定にしたいわけです。
イメージとしては、0.1秒でマイニング、89.9秒休止、をminerプログラムで繰り返す。みたいな設定になればよいわけです。
そのためにRegtestほどではないにしても、PowLimitを大きくしておきたいわけです。
これはデフォルトのSignetだけの問題ではありません。プライベートSignetで何か研究しようというユーザーにとっても良いことなのです。

@monacoin-core
Copy link
Author

ただここは申し訳ないのですが、個人の作業用レポジトリになるのでcloseさせていただきます。

この言い分ですと、ではどこにPRしたらいいの?と思ってしまいます。
monacoinproject/monacoin にbitcoin v22.1のブランチをプッシュしてもらえませんか?
そちらの方にPRをしたいと思います。

@monacoin-core
Copy link
Author

ちょっと場違いかもしれませんが、monacoinproject/monacoinのディスカッションで何の見解も示さないdevの態度は如何なものかと思いましたぞ。

@monacoin-core
Copy link
Author

あと質問ですが、"133.242.161.162" はシードサーバーとして確定ですか?

@wakiyamap
Copy link
Owner

wakiyamap commented May 4, 2023

これはデフォルトのSignetだけの問題ではありません。プライベートSignetで何か研究しようというユーザーにとっても良いことなのです。

それだとbitcoinのsignetユーザーは大変じゃないですかね?と思った次第です。しかしながらそうはなってないのでどういう事だろうかな?と

この言い分ですと、ではどこにPRしたらいいの?と思ってしまいます。
monacoinproject/monacoin にbitcoin v22.1のブランチをプッシュしてもらえませんか?
そちらの方にPRをしたいと思います。

以前にも聞いた通りdevになってからお願いします。1commitレベルの修正でしたらdevになる必要はないですが、バージョンアップも含むレベルですと周りのユーザーを含んで納得させるのは厳しいかと思います。monacoin-coreを自称していらっしゃるのでしたらそちらのレポジトリでお願いします。ただしmonacoinprojectは関係ないことを明記していただけると助かります。こちらのヘルプが必要な方もそちらに問い合わせが言ってしまうかと思いますので。

ちょっと場違いかもしれませんが、monacoinproject/monacoinのディスカッションで何の見解も示さないdevの態度は如何なものかと思いましたぞ。

私が答える必要があることは答えているかと思います。

あと質問ですが、"133.242.161.162" はシードサーバーとして確定ですか?

テスト用に用意しているサーバの為、確定ではないです。

@monacoin-core
Copy link
Author

それだとbitcoinのsignetユーザーは大変じゃないですかね?と思った次第です。しかしながらそうはなってないのでどういう事だろうかな?と

うーむ、bitcoinでテストしたときの状況を忘れてしまった。
取り敢えず、PoWのハッシュ関数が違うからと考えておくのがよいと思います。

@monacoin-core
Copy link
Author

私が答える必要があることは答えているかと思います。

Taprootに関する見解を答えていないと思いますが、それは答える必要がないと言うのですか?

@monacoin-core
Copy link
Author

以前にも聞いた通りdevになってからお願いします。

歳を考えると無理があると思います。脇Pさんですら後継者が必要と考えていましたよね?
小生なんかそれ以上ですよ。

PRをブランチとして受け取るだけなら特に問題ないと思いますよ。ターゲットブランチの名前をproposalとかにしておけばさらに安全。
脇Pさんなりdevが十分に動作検証してリリースすれば誰も文句は言わないでしょう。
誰かが言っていましたが、codeが全てです。文句があるならコードのどこに問題があるのか言えということです。
誰がコミットしたかは問題ではないと思います。既に動くものが目の前にあるのですから、合理的に考えましょう。

@wakiyamap
Copy link
Owner

Taprootに関する見解を答えていないと思いますが、それは答える必要がないと言うのですか?

関係ない話してたのでもう解決したものと考えておりました。
devとしては消極的賛成。個人としては面白そうだからやろうぜ!と言ったところです。

歳を考えると無理があると思います。脇Pさんですら後継者が必要と考えていましたよね?

後継者はどうでもいいのですが、一緒に考える仲間が欲しいというのが本音です。

脇Pさんなりdevが十分に動作検証してリリースすれば誰も文句は言わないでしょう。

残念ですが、今はそういう時代ではありません。正統性が問われる時代にブロックチェーンはなっています。
DeFiの影響だとは思いますが、誰がどういうコミットをしたかが問われます。code is lawだったはずでは?と言われるとまぁそうですねって感がありますけども。少なくとも私にはmotty氏にこのレベルのコミットをさせるのを周囲含めて説得できる自信が無いです。

@monacoin-core
Copy link
Author

それでmonadとmonacoindのSignetの同期は確認できたのでしょうか?
それが確認できれば小生の所期の目的は達成できたことになるのですが。

@monacoin-core
Copy link
Author

後継者はどうでもいいのですが、一緒に考える仲間が欲しいというのが本音です。

「一緒に考える」はいいですね。小生暇が多いので、いつでも参考意見を出しますよ。小生はdiscordのDMが都合いいです。

少なくとも私にはmotty氏にこのレベルのコミットをさせるのを周囲含めて説得できる自信が無いです。

そうですか、無理しなくてもいいですよ。

monacoin-core/monacoinのAboutにはDistribute the latest Monacoin Coreと説明しています。小生の目的はこの通りでして、今後とも最新のmonacoin coreを配信していくつもりです。
もうじきv25.0を配信することになりますので、それまでに最低限Signetのパラメータは片付けておきたいと考えていました。

できればTaprootと手数料の件も片付けたいですね。下記ディスカッションで脇Pさんの見解を述べてもらえるとやりやすいのですが?
monacoinproject#107

@monacoin-core
Copy link
Author

良い手を思いつきました。コミットを全てwakiyamap <wakiyamap@gmail.com>にしてしまうのは如何でしょうか?
恐らく小一時間で作業が完了し、再度PRできると思います。

@wakiyamap
Copy link
Owner

wakiyamap commented May 4, 2023

それでmonadとmonacoindのSignetの同期は確認できたのでしょうか?
それが確認できれば小生の所期の目的は達成できたことになるのですが。

私としては何故このパラメータなのか?を自分の中で理解できないといけないかなと思っています。mottyさんやjunkeyさんと違って私は凡人ですので理解が遅く手申し訳ないのですが。

monacoin-core/monacoinのAboutにはDistribute the latest Monacoin Coreと説明しています。小生の目的はこの通りでして、今後とも最新のmonacoin coreを配信していくつもりです。

出来ればで良いのですが、monacoinprojectとは別のPJと言う事を分かるようにビルドしていただけると助かります。上の方にも書きましたがissueに投稿があった際にmonacoinprojectの物なのかmonacoin-coreの物なのかが分からなくなります。

良い手を思いつきました。コミットを全てwakiyamap wakiyamap@gmail.comにしてしまうのは如何でしょうか?

mottyさんの手柄を取るような真似は私にはできかねます。私が嫌です。

@monacoin-core
Copy link
Author

私としては何故このパラメータなのか?を自分の中で理解できないといけないかなと思っています。mottyさんやjunkeyさんと違って私は凡人ですので理解が遅く手申し訳ないのですが。

具体的に言ってくれないと何を悩んでいるのか分かりません。

出来ればで良いのですが、monacoinprojectとは別のPJと言う事を分かるようにビルドしていただけると助かります。上の方にも書きましたがissueに投稿があった際にmonacoinprojectの物なのかmonacoin-coreの物なのかが分からなくなります。

脇Pさんは、問い合わせに関してのみ心配していると考えてよいでしょうか?こんなのは余程対応に困ってから考えればよいと思います。小生の方に問い合わせが来たら何なりと回答するつもりでいます。
識別の件については小生も考えています。が、これは根本的に難しい問題だと思っています。
そもそもmonacoin-core/monacoinにはforked from monacoinproject/monacoinと明示されています。ですから、全く関係ないとは全く言えない状況です。どちらも作っているのはMonacoinですし、Monacoinとして何が違うんですか?と問われても同じですとしか言いようがありません。
monacoin-coreは単にbitcoinの最新版に準拠したMonacoinをリリースしていますという感じにしたいと思っています。

当然ですが、monacoinprojectの方でbitcoinの最新版に準拠したMonacoinがリリースされるようになったならばmonacoin-coreは用済みになると思います。

mottyさんの手柄を取るような真似は私にはできかねます。私が嫌です。

小生は「手柄」なんぞという意識は毛頭ないですよ。v21.1のコード作成なんて半日の作業に過ぎません。あと、ビルドのCPUタイムに半日くらい。
こんなものいくらでも差し上げます。

@monacoin-core
Copy link
Author

以前にも聞いた通りdevになってからお願いします。

ちょっと考えたのですが、1年契約くらいならdevやってもいいかなという気になってきました。
devになるというのは具体的にどういうことを言うのでしょうか?
誰をdevにするかという権限は脇Pさんが持っているのですか?
新バージョンの仕様を決める際の合意方法について何か決め事はあるのでしょうか?恐らく次バージョンのTaprootについてjunkeyと衝突するに決まっています。
1年契約ですと、v22.1, v24.0, v25.0, v26.0 までリリース可能です。

@wakiyamap
Copy link
Owner

具体的に言ってくれないと何を悩んでいるのか分かりません。

上に書いてるPowLimit辺りです。

小生は「手柄」なんぞという意識は毛頭ないですよ。v21.1のコード作成なんて半日の作業に過ぎません。あと、ビルドのCPUタイムに半日くらい。
こんなものいくらでも差し上げます。

私がそういう行為をいやという事です。

ちょっと考えたのですが、1年契約くらいならdevやってもいいかなという気になってきました。

devの誰かが推薦して現状のdevが合意すればOKです。が今のmottyさんを私は推薦する気に慣れないです。
申し訳ないのですが、junkey氏に推薦を貰って来ていただければ幸いです。

@monacoin-core
Copy link
Author

申し訳ないのですが、junkey氏に推薦を貰って来ていただければ幸いです。

なかなか冗談がお上手ですな。

上に書いてるPowLimit辺りです。

PowLimitについては大きい方が安全サイドになりますから、そのように考えておきます。

結局monadとmonacoindのsignetの同期について確認できなかったのは残念です。
一応genesisブロックがバイトコードベースで一致していることは確認していますので、当方はそれでよしとします。

@monacoin-core monacoin-core deleted the proposal-2305 branch May 5, 2023 05:13
@monacoin-core
Copy link
Author

Signetの次のパラメータについて。

-        consensus.powLimit = uint256S("00000377ae000000000000000000000000000000000000000000000000000000");
+        consensus.powLimit = uint256S("000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");

あまりデータが見当たらないのですが、GPUの場合Lyra2REv2の計算速度はSHA256より2桁遅いようです。CPUの場合はデータが見当たりません。
従って最低でもbitcoinより2桁は大きくする必要があります。ただし、CPUの場合はもっと差がある可能性があります。
powLimitは大きい分には問題がないので切りの良いところで上記の設定にしておくことを推奨します。これは約3桁大きいという設定です。
この値で実際の運用上は全く問題がありません。

@monacoin-core
Copy link
Author

マイニングをする場合にcpuの能力割当をどんどん小さくしていったら何が起きるかを考えてみてください。
powの関数はdiffをどんどん小さくしていく、すなわち、次のブロックに対する要求bitsを大きくしていきます。
但し、このbitsはPowLimitを超えてはならないので、結果、bitsはPowLimitまたは付近に張り付くことになります。
考え方次第で、そのような運用でも構わないのですが、普通はPowLimitに張り付かない程度に加減して運転すると思います。

もし張り付いても構わないと考えるのであれば、

        consensus.fPowNoRetargeting = true;

に設定すればよいし、さらにgenesisのbitsをもっと大きくしておけばなお良いですね。

cpuの能力割当を具体的にどうやって小さくするのかというと、マイニングの休止時間を設ければよいわけです。休止時間を80秒にすれば、DIGIblockは10秒で掘れるようにdiffを調整してくれるし、休止時間を89秒にすれば1秒で掘れるように調整してくれるというわけです。
bitcoinが準備しているminerというプログラムはこんなことをしています。面倒なので詳細は見ていませんが、運転してみると省エネ運転してくれているのが分かります。

@monacoin-core
Copy link
Author

上に書いてるPowLimit辺りです。

結局悩みは解消したのでしょうか?

@monacoin-core
Copy link
Author

今日は連休最終日だからね、レスポンスよく回答してもらいたい。

@monacoin-core
Copy link
Author

どうも脇Pさんの発言に煮えきらないところがあるのでちょっとmonadのコードを調べてみました。

そもそもSignetをマイニングする仕組みなんか持っていないように見えます。
だとすると、テストネットと同じようにマイニングすればいいやと思っていたのではないですか?
掘れないでしょ?仮に掘れたとしても、正しいSignetのブロックは採掘できないはずです。

Signetには他のネットワークと識別するための仕組みとしてchallengeともう一つのパラメータが存在します。
monadにはそのパラメータが存在しません。
従って、monadはSignetのブロックを生成することはできません。
不完全な検証条件のもとで同期するのが関の山だと思われます。

先行者の助言を受け入れず、相談もせず、無駄な時間を消費する。そんなことでは成長できないと思いますよ。

@wakiyamap
Copy link
Owner

PowLimitについて教えていただき、ありがとうございます。

現状うまくマイニング出来ておりません。
2~5時間ごとに1blockな状態なのでPowLimit辺りを疑って作業していた次第です。
bitsも恐らく最小値である1秒にしても同じような結果なので別の要因が働いている物と推測しています。
motty氏がアップロードしていたバイナリでも同じ結果でした。

discordのmotty氏の画像を見る限りちゃんとマイニング出来ているようなので恐らくここがmottyさんが言っていたバッチの部分なのか?と考えcontrib/signet/miner付近にlyra2re2_hashを入れる所があるのではないかと思い調べています。

monadでsignetはマイニングは可能ではあるのですが、monacoindと同期が出来ないと思われます。
ただパラメータのチェックにはちょうど良いという判断でした。

@monacoin-core
Copy link
Author

下記コメントで脇Pさん向けに、デフォルトSignetを10分で動かす方法を説明しています。
monacoinproject#107 (comment)

これを実行していれば、目標とすべき正しい姿が認識できたはずです。
その上でmonadで試行錯誤して何故だろう?と考えるのが賢い手順だと思います。

@monacoin-core
Copy link
Author

monacoin-core commented May 7, 2023

contrib/signet/miner付近にlyra2re2_hashを入れる所があるのではないかと思い調べています。

上記テストを実施していれば、この発想は出てこないはずです。

現状うまくマイニング出来ておりません。
2~5時間ごとに1blockな状態なのでPowLimit辺りを疑って作業していた次第です。
bitsも恐らく最小値である1秒にしても同じような結果なので別の要因が働いている物と推測しています。
motty氏がアップロードしていたバイナリでも同じ結果でした。

monadはSignetのブロック形成に必要なパラメータを欠いているのですから、マイニングを実施しても何やってるんだか意味不明ですよ。
何らかの検証機構は持っているのでしょうからそれとの兼ね合いで2~5時間ごとに1blockな状態になっているのではないでしょうか?
そもそも、bitcoinの場合にbtcdでSignetのマイニングができるという情報があるのでしょうか?(無いはず)

結論から言うと、やっていることが無意味です。

@wakiyamap
Copy link
Owner

wakiyamap commented May 7, 2023

あぁいやmonacoindで今はやっているのですが、それでマイニングに手こずっている次第です。一応monadの方でマイニングする分には90秒ベースにはなります。

@monacoin-core
Copy link
Author

monacoin-core commented May 7, 2023

motty氏がアップロードしていたバイナリでも同じ結果でした。

「でも」というと、どういうバイナリでテストしているのでしょうか?
そして、motty氏がアップロードしていたバイナリというのは脇P向けのv22.1のことですか?

一応monadの方でマイニングする分には90秒ベースにはなります。

monadをマイニングする場合のマイナーは何を使っているのですか?

@wakiyamap
Copy link
Owner

そして、motty氏がアップロードしていたバイナリというのは脇P向けのv22.1のことですか?

そうですね。

monadをマイニングする場合のマイナーは何を使っているのですか?

monad自体にマイニング機能が付いているのでそれを利用しています。

@monacoin-core
Copy link
Author

現在v22.1でマイニングの検証をしていますが、とにかく変ですね。
原因を調べます。

@monacoin-core
Copy link
Author

原因が判明しました。
monacoin-utilのバグです。
https://github.com/monacoin-core/monacoin-22.1/blob/8953d46b3bcf50878c056da65c678896d2ac4b6a/src/monacoin-util.cpp#L97
GetPoWHash()にしなければいけない。

取り敢えずv24.0に同梱されているmonacoin-utilを使用して試験を続けてください。
https://github.com/monacoin-core/monacoin/releases/tag/v24.0.5

@monacoin-core
Copy link
Author

さてと、当方は修正版のビルドを開始しました。
脇P用はとくにいじりません。

現在までの推定をまとめると、
・monadで作ったチェーンはmonacoindで同期しない
・monacoindで作ったチェーンはmonadで同期する
ということになると思います。

これを確認してください。

@monacoin-core
Copy link
Author

「monacoindで作ったチェーンはmonadで同期する」の確認には注意が必要です。
monadのPowLimitが小さい場合、まずそちらで引っかかるでしょう。
PowLimitをmonacoindに合わせる必要があります。

@monacoin-core
Copy link
Author

おかげさまで対策完了しました。
https://github.com/monacoin-core/monacoin-22.1/releases

@wakiyamap
Copy link
Owner

まだmonadの方、パラメータ確定させてないのですが……

@monacoin-core
Copy link
Author

まだmonadの方、パラメータ確定させてないのですが……

monadのmainだかmasterにコミットされたら反映します。
取り敢えず、明らかなバグは修正しないとね。

@monacoin-core
Copy link
Author

ネットワーク識別用のパラメータSIGNET_HEADERについて説明しておきます。
https://github.com/monacoin-core/monacoin-22.1/blob/ca3c8836e421df511c12dbd262b114bc4a6c8529/src/signet.cpp#L26

値は見ての通り、0xecc7daa2です。
使われ方はこれ
https://techmedia-think.hatenablog.com/entry/2019/11/11/180253
のこのへん

コインベーストランザクションのwitness commitmentは、2つ目のコミットメント(署名/解答)を含むよう拡張される:

1-4 bytes - 以下の (x + 4) byteをプッシュする
4 bytes - Signetヘッダー (0xecc7daa2)
x bytes - 解答 (sigScript)

4バイトのSignetヘッダーで始まらないプッシュ操作は無視される。4バイトのSignetヘッダーを持つ複数のプッシュ操作は、最初のエントリーを除いて無視される。

を見てください。

それで、minerがこのへんの処理をするために、SIGNET_HEADERを持っています。
https://github.com/monacoin-core/monacoin-22.1/blob/ca3c8836e421df511c12dbd262b114bc4a6c8529/contrib/signet/miner#L34

monadがSIGNET_HEADEを持っているか、しつこく全文検索を繰り返しましたが、結論として持っていません。
まあ、マイニングのプログラムにも無いでしょうね。
ですから、正しいsignetのブロックを形成できないはずです。

よって、小生の推論が正しいはずなのですが・・・

@wakiyamap
Copy link
Owner

wakiyamap commented May 7, 2023

調査していただきありがとうございます。

monadでsignetはマイニングは可能ではあるのですが、monacoindと同期が出来ないと思われます。
ただパラメータのチェックにはちょうど良いという判断でした。

上で書いているようにCPUマイニングで掘るので恐らくmonacoind側ではbad signatureかなんかで同期出来ないと思われます。

@wakiyamap
Copy link
Owner

wakiyamap commented May 7, 2023

image
monacoindだとやはりマイニングは厳しそうです。lyra2rev2ではおかげさまで掘れるようになったようではあるのですが、他にも引っかかる所がある?

自己解決しました。こういうの書いたとたんに解決するのなんなんでしょうね

@monacoin-core
Copy link
Author

解決したなら良かったです。
多分monadでやってたマイニングとイメージが違うのではないかと思います。
小生が過去に言及していた省エネマイニングとかの意味が飲み込めたのではないでしょうか?

せっかくここまできたので、monad側が同期するのか確認したいですね。

@wakiyamap
Copy link
Owner

同期確認出来ました。改めてありがとうございます。

@monacoin-core
Copy link
Author

そりゃー良かった。小生もホッとしました。

@monacoin-core
Copy link
Author

なかなかmainブランチにコミットされませんね。
パラメータさえ決まっていればSignetは先行してサーバの運転を開始してしかるべきかと思います。
いつから運転するつもりですか?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants