42-coin

提供: tezos-wiki
移動先: 案内検索

歴史[編集]

42-coinは、2014年1月初めに、hendo420という名前のユーザーによってbitcointalk.orgフォーラムに導入されました。彼の考えは、「稀少な」硬貨を作り、「採掘する硬貨は42個」としました。ダグラス・アダムスの「ヒッチハイカーの銀河ガイド」によると、この42という数字は、1950年代のアメリカの野球選手、ジャッキー・ロビンソンが使用した数字に関係しています。 1997年、メジャーリーグは、ロビンソン記念品の価格を屋根の向こう側に追いやって、スポーツの歴史のなかで最初にメジャーリーグチーム全員に渡ってナンバー42のシャツナンバーを普段から辞めさせていきました。

そのピーク値42で、1つのコイン当たり1900.00BTCの最高率で取引された。当時(2014年1月13日)、流通していたコインはわずか0.8個で、これは100万ドルを超える最初の暗号コインであり、1枚以下のコインが流通したことを意味しています。

42年の歴史の中で注目すべき点は、2014年の春までにコインの供給が42で終わったのですが、2014年3月17日にGitHubユーザーのsherlockcoin(別名soopy452000)が無制限になりました。彼はKGWの実装の下で働いていたが、誰もこの小さな変化に気付かなかったのです。

一方、コインの数は増えており、価格は下がっていました。 2014年5月29日、hendo420はプロジェクトを去り、次のように説明しました。

「ヒッピー・テックの絶え間ない弾幕と絶え間ない価格下落は、私を深い落ち込みにさせた。私の医者は助けてくれる薬剤を私に処方したが、彼は私にうつ病/自殺を引き起こしていた活動を続行しないことを勧めた...感情的に続けることはできない... "

彼はsoopy452000にコインを渡したが、これはプロジェクトの1ヶ月後に降伏しました。

2015年7月、Woodcoinの開発者は、コードを見直したときに、実際にはコインの供給が明らかに42を超えないことを確認しました。しかし、このバグを修正するためにプルリクエストを提出しましたが、更新されたクライアントがないため、ほとんどの人が制限付きのチェーンをサポートできませんでした。

2015年10月26日に、hendo420は42を復活させ、「誰のコインも危険にさらすことなく総コインを42に戻す」という約束を返す。しかし、しばらくしてから、彼はbitcointalk.orgフォーラムで42のスレッドをすべて閉じて、説明なしに行いました。

hendo420からの復活を待ってから7ヶ月以上経った2016年6月7日、42-coinの新しい糸が別のユーザー、Lasergunによって開始されました。投票5ヶ月後、コミュニティーは、新しいコイン(84)をスワップして取引を確認する追加の方法として証拠を追加することによって、限られた供給の元の考えを返すという決定を下しました。さらに、ブロック時間が42秒から7分に増加しました。高速トランザクションは42で本当に必要でないことが判明しました。[Novacoin]ソースコードに基づく新しいブロックチェーンは、2016年11月12日に開始されました。

技術的な特徴[編集]

ブロック[編集]

取引の履歴はブロックと呼ばれる項目を通じてネットワークに永久に記録されます。ブロックは、まだ記録されていない最新の取り引きの一部または全ての取り引き履歴です。
? ブロック構造

フィールド タイプ サイズ 説明
マジックナンバー 符号なしint 4 常に0xE5E9E8E4
ブロックサイズ 符号なしint 4 ブロックの終わりまで続くバイト数
ブロックヘッダー 構造体 80 4項目のうち6項目
トランザクション数 可変整数 1-9 -
トランザクションセット トランザクション トランザクションサイズ 取引のリスト
ヘッダー署名 符号なしchar <= 72 ステークの証印がここに置かれています。

トランザクション[編集]

トランザクションは、ネットワークにブロードキャストされ、ブロックに収集される、署名されたデータセクションです。これは、通常、以前のトランザクションを参照し、そこから一定数の42を1つまたは複数の新しい公開鍵に割り当てます。現在、いくつかの取引タイプがあります。

ユーザー操作 '

これらの取引は通常、未払い入力から42を引き換えるために使用されます。通常、未使用入力を参照し、指定された値と宛先を持つ新しい出力を作成します。

'Coinbase'

Coinbaseには単一の入力があり、この入力にはscriptSigの代わりに 'coinbase'パラメータがあります。 'coinbase'のデータは何でもかまいません。それは使用されていません。 42は、現在のコンパクトフォーマットのターゲットとそこに任意精度の「extraNonce」番号を置きます。これは、ブロックヘッダーのNonceフィールドがオーバーフローするたびに増えます。 extranonceは作業の証明機能のドメインを拡大するのに貢献します。

これらの取引は、作業実績のある鉱夫に報酬を与えるために使用されます。 Proof-of-stakeブロックもコインベーストランザクションを持ちますが、空の出力があります。

'Coinstake'
これらのトランザクションは、ステークのブロックブロックヘッダーの適切な証拠を提供するために使用されます。このタイプはユーザトランザクションに似ていますが、いくつかの違いがあります。

  • 最初の出力は空でなければなりません。
  • この取引の最初の入力は、現行のステークの難易度を満たすために必要です。
  • 負の手数料を支払って新しいコインを生成することは許可されています。
  • 2番目の出力先はPay-to-Pubkey(後述)でなければなりません。

'一般的な取引フォーマット'

フィールド タイプ サイズ 説明
バージョン 符号なしint 4 現在1
タイムスタンプ 符号なしint 4 トランザクションタイムスタンプ
入力数 変数int 1-9 -
入力配列 TxIn 入力セットサイズ 入力配列またはcoinbaseプロパティ
出力数 変数int 1-9 -
出力配列 TxOut 出力サイズを設定する 出力構造体の配列
ロック時間 符号なしint 4 トランザクションが最後である場合のブロックの高さまたはタイムスタンプ

'入力形式'
入力は、別のトランザクションの出力への参照です。複数の入力は、しばしばトランザクション内にリストされます。参照された出力の値が合計され、合計がこのトランザクションの出力で使用可能になります。

フィールド タイプ サイズ 説明
txid 符号なしchar 32 前取引のID
n 符号なしint 4 消費予定トランザクションの出力のインデックス番号
scriptSigLength 変数int 1-9 scriptSigの長さ
scriptSig 符号なしchar - スクリプトの前半、scriptPubKeyの署名
nSequence 符号なしint 4 トランザクションバリアント番号。nLockTimeが指定されていない場合は関係ありません。デフォルトでは0xffffffffです。詳細については、このリンクを参照してください。

'出力形式'
値には42を送信するための指示が含まれています。値は、[Satoshi](1 42 = 100,000,000 Satoshi、42の1 Satoshiは「Dent」とも呼ばれます)の数で、この出力は主張されたときに価値があります。

フィールド タイプ サイズ 説明
nValue 符号なしlong int 8 転送されるSatoshisの数(42/108)
scriptPubKeyLength 変数int 1-9 scriptPubKeyの長さ
scriptPubKey 符号なしchar - スクリプトの後半、指示書

'目的地'
ユーザーとコインベースのトランザクションには、3つの宛先タイプが許可されています。

  • 公開鍵(Pay-to-Pubkey)

scriptPubKey:[pubKey] OP_CHECKSIG
scriptSig:[sig]

  • 公開鍵hash(Pay-to-PubkeyHash)

scriptPubKey:OP_DUP OP_HASH160 [pubKeyHash] OP_EQUALVERIFY OP_CHECKSIG
scriptSig:[sig] [pubKey]

  • スクリプトハッシュ(Pay-to-Scriptハッシュ)

スクリプトハッシュに送信:
scriptPubKey:OP_HASH160 [{[pubkey]の20バイトハッシュOP_CHECKSIG}] OP_EQUAL
scriptSig:<入力タイプに応じて>

例を使用:
scriptPubKey:OP_HASH160 [{[pubkey]の20バイトハッシュOP_CHECKSIG}] OP_EQUAL
scriptSig:[署名] {[pubkey] OP_CHECKSIG}

  • 空の宛先

scriptPubKey:(空)
scriptSig:(空)

  • 非標準のスクリプト

誰でも使える:
scriptPubKey:(空)
scriptSig:OP_TRUE

実績証明書[編集]

実績証明は、困難な(コストのかかる)数学的な課題の解決策です。データが主張された要件を満たすかどうかをチェックするには、この解決策は自明でなければなりません。

現時点での作業証明は、暗号通貨の初期ミリングを提供する最も実用的な方法です。だから私たちはハイブリッドデザインの一環としてそれを保つことに決めました。

42貨幣はhashcashメソッドを使用して作業の証明を提供します。この作業の難しさは、新しいブロックがネットワークによって要求される目標スペーシングレート(10?30分)に生成される速度を制限するように調整されます。証明生成が成功する可能性が非常に低いため、ネットワーク内のどのワーカーコンピュータが次のソリューションを生成できるかは予測できません。

「仕事の証明を生成するのにどれくらいの時間がかかりますか?」「 '
誰も正確に言うことはできません。しかし、それがどれくらい時間がかかるかの推定があります。

1 MH / sハッシング速度のハードウェアがあるとします。現在の42コインの作業証明の難しさで、平均して労働証明の世代があなたからどのくらいの時間を取るかを見積もりましょう。

難易度1.0は、 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ターゲットの値。

したがって、成功の証明を得るには、0xFFFFFFFFFFFFFFFF / 0x00000000FFFFFFFFまたは?4294967297回の試行を実行する必要があります。

難易度360で?360 * 4294967297 = 1546188226920の試行が必要です。毎秒1 MH /秒または1000000ハッシュがある場合、1546188226920/1000000 = 1546188秒または1546188/86400 = 1789日以内にそのようなハッシュ量をスキャンできます。

ある日のブロック生成が成功する確率は、公式を使用して利用可能なハッシュ・レートから計算できます。 P = nHashesPerSecond * 86400 /(4294967297 *難易度)

それはどのように機能するのですか? '
6つのフィールドの構造で表される各ブロックヘッダー、このフィールドのいくつかはかなり自由に変更することができます。

フィールド タイプ サイズ 説明
nVersion 符号なしint 4 手動で変更しないでください
hashPrevBlock 符号なしchar 32 手動で変更しないでください
hashMerkleRoot 符号なしchar 32 それはメルクルツリーのハッシュです。トランザクションの変更、追加または削除により変更可能
nTime 符号なしint 4 [max tx timestamp、time()+ 3600] intervalから任意の値に手動で更新できます
nBits 符号なしint 4 手動で更新しないでください
nNonce 符号なしint 4 実証試験に反対します。新しいハッシュを試みるたびにこのフィールドを更新する必要があります

報酬はどうですか? '
ブロック報酬はゼロであり、鉱夫は取引からのみ手数料を集めることができます。

ステークの証拠[編集]

ステーク・オブ・ステークは、2012年8月19日にサニー・キングがPeercoinに仕事の証拠とともに提出したものです。ステークの証言は、一定の目標を達成するために通貨自体(所有権)を使用することを意味します。 42では、これは、作業記録と同等のマイニングとトランザクション処理を提供するために使用されます。

42コインは、Coin Age / CoinDayWeightの混合手法を使用してステークの証拠を提供します。ステークスの難易度は、新しいブロックがネットワークによって生成される速度を7分間の目標スペーシングレートに制限するように調整されます。証明生成が成功する可能性は非常に低いため、ネットワーク内のどのコンピュータが次のソリューションを生成できるかは予測できません。

'コイン・エイジ' '
コイン年齢は、txnインプットの年齢を指します。コインの年齢は、送られたコインの枚数とこれらのコインの平均年齢を乗算したものに等しい。年齢は日単位で測定されます。コインが送られたときはいつでも、そしてコインがサインを提供するときはいつでも、年齢は0にリセットされます。コイン・エイジは、義務的手数料を計算するために使用することができます。

'CoinDayWeight'
コイン年齢に似ていますが、年齢は上限なしで42時間オフセットを使用して計算されます。 CoinDayWeightは、立証証拠システムにおける証拠開示対象のパラメータです。

nBlockTarget = CoinDayWeight * nNetworkTarget

証明ハッシュはnBlockTargetを満たさなければなりません。したがって、CoinDayWeightが大きければ大きいほど、確証証拠ブロックが生成される可能性が高くなります。

'Coinstake kernel' '
Coinstakeカーネルは、ステークのブロックの検証を試みている間に作成された仮想構造です。この構造はデータベースとメモリに存在しますが、ネットワークには存在しません。カーネルパラメータについては、次の表で説明します。

フィールド タイプ サイズ 説明
nStakeModifier 符号なしlong int 8 決定論的修正子、計算をスクランブルして、硬貨の確認時に将来の証拠を事前計算することを非常に困難にする
nTimeBlockFrom 符号なしint 4 以前のトランザクションを提供したブロックのタイムスタンプにより、ノードが将来の優位性のためにトランザクションを生成するのに良いタイムスタンプを推測することを防止する
nTxPrevOffset 符号なしint 4 ブロック内での前回のトランザクションのオフセット。ノードが同時にカーネルを起動する機会を減らすために使用されます。
nTxPrevTime 符号なしint 4 前回のトランザクションのタイムスタンプ。同時にノードのコインスタークカーネルを生成する機会を減らすために使用されます。
nPrevoutNum 符号なしint 4 以前のトランザクションの出力数。同時にノードがcoinstakeカーネルを生成する可能性を減らすために使用されます。
nTimeTx 符号なしint 4 現在のタイムスタンプ

それはどうしたらいいの?
次の条件を満たす幸運なものを見つけるために、利用可能なすべての入力をスキャンすることによって実行されます。

SHA256(SHA256(カーネル))<CoinDayWeight * NetworkTarget

Minerは目標値以下のSHA256ハッシュを見つけなければなりません。ターゲットはCoinDayWeightパラメータを使用してネットワークターゲットから導出されます。証明は、カーネルのハッシュとヘッダーの署名によって提示されます。 6つのフィールドの構造によって表される各起動カーネルは、このフィールドのいくつかはかなり自由に変更できます。

フィールド タイプ サイズ 説明
nStakeModifier 符号なしlong int 8 手動で変更しないでください
nTimeBlockFrom 符号なしint 4 以前のトランザクションを提供したブロックのタイムスタンプ
nTxPrevOffset 符号なしint 4 ブロック内の前回のトランザクションのオフセット
nTxPrevTime 符号なしint 4 前取引のタイムスタンプ
nPrevoutNum 符号なしint 4 前取引の出力数
nTimeTx 符号なしint 4 現在のタイムスタンプ

有効なProof-of-Stake値のハッシュ結果は、ブロックのターゲットよりも低くなければなりません。マイナーは、適切なCoinDayWeightで利用可能なすべての未使用入力をスキャンすることによって、この適切な解決策を見つけようとします。

ステークホルダーを生成するのにどれくらいの時間がかかりますか?
実証実験のように、誰も正確に言うことはできません。しかし、それがどれくらい時間がかかるかの推定があります。計算はProof-of-Workと非常によく似ていますが、ハッシュの代わりにここではコインが秒単位で表示されます。したがって、難易度1.0では、ブロックを見つけるのに?4294967297コイン*日が必要です。

ある日の成功したブロック生成の確率は、公式を使用して利用可能なCoinDayWeightから計算できます。

P = CoinDayWeight * 86400 /(4294967297 *難易度)

平均ブロック生成時間は次のように計算できます。

T = 4294967297 *難易度/(CoinDayWeight * 86400)

ステークブロックの生成を開始することが可能なときは、どうすればいいのですか?



'
残高がある場合、42dは自動的に証明ハッシュを生成しようとします。

報酬はどうですか? '
ブロック報酬はゼロであり、PoSブロックでは手数料が払われない - これにより、デフレ・コイン

マイニングとブロックチェーン[編集]

鉱業とは、42コインブロックチェーン用の新しいブロックの生成を指す用語です。取引の確認や操作履歴の保護が必要です。

'ブロックヘッダー' '
ブロックヘッダは、ブロックチェーン内のブロックをリンクするために使用されるメタデータ構造です。ブロックヘッダーのサイズは80バイトで、6つのフィールドで構成されています。

フィールド タイプ サイズ 説明 更新時
nVersion 符号なしint 4 ブロックヘッダバージョン あなたはソフトウェアをアップグレードし、新しいバージョンを指定します
hashPrevBlock 符号なしchar 32 ブロックヘッダーをリストにリンクするために使用される前のブロックヘッダーハッシュ 新しいブロックが承認されました
hashMerkleRoot 符号なしchar 32 ブロックヘッダーとブロックの内容をリンクするために使用されるMerkleツリーハッシュトランザクションプールが更新されました
nTime 符号なしint 4 Unixのタイムスタンプ Proof-of-Work、Proof-of-Stakeの成功した試行のたびに数秒ごとに
nBits 符号なしint 4 要求された証明難易度のコンパクト表現 難易度は調整されています
nNonce 符号なしint 4 実証試験の試みを試みる 新しいProof-of-Workハッシュが試された

各ブロックヘッダーは、要求された証明を満たす必要があります。


4941/5000 それはどうしたらいいの?
すべての鉱夫は、確認されていないすべての有効な取引のコピーを自身の取引プールに保有しています。通常、マイニングプロセスは4つの段階で実行されます。

  • トランザクションプールから一連のトランザクションを取得する。
  • この一連のトランザクションのMerkle Treeハッシュを計算します。
  • ブロックヘッダーテンプレートを作成し、Merkleツリーハッシュを使用してこのトランザクションセットにリンクします。
  • 前に作成したブロックヘッダーに適した証明ハッシュを見つけようとします。

証拠を得ることは非常に難しい作業ですが、難しさは現在の参加者数に依存します。各ブロックヘッダーは前のブロックヘッダーにリンクされているので、ブロックヘッダーのリストをリンクしており、リストの一貫性は難しいことによって保証されています。このリンクリストは、ブロックチェーンとも呼ばれます。

証拠として使うことができるものは何ですか? '
証拠の唯一の必要な特性は、取得するのが非常に難しいが、チェックするのが非常に簡単だということです。実証実験、杭打ち証明、焼成証明など、多くの実証的な概念が存在します。 42コインは、ブロックヘッダーの適切な証拠を提供するためにステークまたは作業の使用をサポートします。

'設定ファイルの例'
以下の例は本番用ではありません。いくつかの設定の目的を説明するためにここに配置されました。


  1. 42.conf設定ファイル。#で始まる行はコメントです。
  2. ネットワーク関連の設定:
  3. 実際の42コインネットワークの代わりにテストネットワーク上で実行します。
  4. testnet = 0
  5. socks4プロキシ経由で接続する - デフォルトなし
  6. proxy = 127.0.0.1:9050
  7. 着信接続を受け入れる
  8. listen = 1
  9. あなたが好きなだけ多くのaddnode =設定を使用して、特定のピアに接続します
  10. addnode = 193.23.181.148
  11. addnode = 91.235.143.61:4242
  12. ...またはあなたが接続したいだけ多くのconnect =設定を使用する
  13. 特定のピアに:
  14. connect = 193.23.181.148
  15. connect = 91.235.143.61:4242
  16. インバウンド+アウトバウンド接続の最大数。
  17. maxconnections =
  18. JSON-RPCオプション(実行中の42dプロセスを制御するため)
  19. rpcuserとrpcpasswordを設定して、JSON-RPC APIを保護する必要があります
  20. rpcuser =ユリシーズ
  21. rpcpassword = YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED
  22. HTTP接続が確立された後、42コインが完全なRPC HTTP要求を待つ秒数。
  23. rpctimeout = 30
  24. デフォルトでは、localhostからのRPC接続のみが許可されます。他のホストからの接続を許可するのと同じくらい多くのrpcallowip =設定を指定します(*はワイルドカード文字として使用できます)。
  25. rpcallowip = 10.1.1.34
  26. rpcallowip = 192.168.1。*
  27. このTCPポートでRPC接続を待ち受ける:
  28. rpcport = 2121
  29. 42dを使用して、このオプションを使用して別のホストで実行されている42dにコマンドを送ることができます:
  30. rpcconnect = 127.0.0.1
  31. Secure Sockets Layer(TLSまたはHTTPSとも呼ばれます)を使用して、42d
  32. rpcssl = 1
  33. rpcssl = 1のときに使用されるOpenSSL設定
  34. rpcsslciphers = TLSv1 + HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
  35. rpcsslcertificatechainfile = server.cert
  36. rpcsslprivatekeyfile = server.pem
  37. その他のオプション
  38. この多くの公開鍵/秘密鍵のペアを事前に生成するので、ウォレットバックアップは、以前のトランザクションと数十の将来のトランザクションの両方で有効になります。
  39. keypool = 100
  40. データディレクトリパス、キーストア、ブロックチェーンのコピー、および未使用の出力インデックスがここに格納されます。
  41. datadir = D:\ 42
  42. ウォレットファイル名
  43. wallet = wallet.dat
  44. チェックポイントポリシー(可能な値は厳密であり、勧告です)
  45. cppolicy = strict
  46. 変更の確認が必要(デフォルトでは無効)
  47. confchange = 0
  48. 正式なPUSH演算子を使用するトランザクションスクリプトを強制するenforcecanonical = 1

42の硬貨取引所と市場[編集]

200ブロック、貿易手数料:0.2%、引き落とし手数料:0.00000002、最小取引:0.00005 BTC(BTC)、42 / BTC、42 / DOGE、42 / LTC -

42 / BTC、42 / USD、42 / ETH - 預金確認:8ブロック、貿易手数料:0.2%、引き落とし手数料:0.000001、最低取引額:0.0001 BTC

42ブロック/ BTC、42 / LTC、42 / DOGE - 入金確認:12ブロック、貿易手数料:0.2%、引き落とし手数料:0.00000002、最低取引額:0.000005 BTC

'CoinsMarkets.com' :42 / BTC - デポジットの確認:?ブロック、貿易手数料:0.25%、引き落とし手数料:0.00000003、最小取引:0.00001 42

42ブロック/ BTC、42 / ETH、42 / LTC、42 / MOON、42 / KIC - 預金確認:40ブロック、貿易手数料:0.2%、引き落とし手数料:0.00000001 、最小取引:0.0000002 BTC

リンク[編集]