For Developers
目次
Waves Node REST API[編集]
内容[編集]
住所[編集]
GET / addresses[編集]
ノードのウォレット内のすべてのアカウントのアドレスのリストを取得します。 応答:
[ "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7" ]
GET / addresses / seq / {from} / {to}[編集]
ノードのウォレット内のこの範囲のインデックスを持つアカウントアドレスのリストを取得します。
応答:
[ "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7" ]
POST / addresses[編集]
ウォレットに新しいアカウントアドレスを生成します。 API_KEYを提供する必要があります 要求:
'レスポンスJSONの例:' { "アドレス": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7" }
アドレス/残高/ {住所}[編集]
{住所}のWAVESで口座残高を取得する: "address" - Base58形式のアカウントのアドレス 'レスポンスJSONの例:' { "アドレス": "3N3keodUiS8WLEw9W4BKDNxgNdUpwSnpb3K"、 "確認":0、 "balance":100945889661986 }
アドレス/残高/ {住所} / {確認書}[編集]
{confirmations}の後、{address}までにWAVESの口座残高を取得しましょう: "address" - Base58形式のアカウントのアドレス "確認" - 確認のN 'レスポンスJSONの例:'
{ "アドレス": "3N3keodUiS8WLEw9W4BKDNxgNdUpwSnpb3K"、 "確認":500、 "balance":100945388397565 }
資産取引[編集]
パブリック関数[編集]
GET / assets / balance / {住所}[編集]
指定されたアカウントに過去にあったすべての資産の残高(WAVE以外)。
"address" - Base58形式のアカウントのアドレス '応答パラメータ:'
"address" - Base58形式のアカウントのアドレス 「残高」 - 指定された口座に残っている資産の残高オブジェクトのリスト "assetId" - Base58形式のアセットID "残高" - その資産の残高 "issued" - このアセットがそのアカウントによって発行されたかどうかを示すブールフラグ 'レスポンスJSONの例:'
{ "アドレス": "3Mv61qe6egMSjRDZiiuvJDnf3Q1qW9tTZDB"、 "バランス":[ { "assetId": "Ax9T4grFxx5m3KPUEKjMdnQkCKtBktf694wU2wJYvQUD"、 "balance":4879179221、 "発行済み":true }、 { "assetId": "49KfHPJcKvSAvNKwM7CTofjKHzL87SaSx8eyADBjv5Wi"、 "balance":0、 "issued":false } ] }
GET / assets / balance / {address} / {assetId}[編集]
指定されたアセットのアカウントの残高。 "address" - Base58形式のアカウントのアドレス "assetId" - Base58形式のアセットID
'レスポンスJSONの例:'
{ "アドレス": "3Mv61qe6egMSjRDZiiuvJDnf3Q1qW9tTZDB"、 "assetId": "Ax9T4grFxx5m3KPUEKjMdnQkCKtBktf694wU2wJYvQUD"、 "balance":4879179221 }
POST / assets / broadcast / issue[編集]
署名された資産発行トランザクションをネットワークに公開する。
'paramsをリクエストする:'
"name" - アセット名は、固有ではなく、4から16バイトの長さで、プレーンテキストで指定することができます。 "description" - 資産の説明、最大長は1000バイト、プレーンテキストです。 「送信者」 - ノードのウォレットに存在する送信者アカウントのアドレス、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた 「手数料」 - 資産発行手数料、分= 100000000(1WAVES)。 "小数点以下の桁数" - 資産を表す小数点以下の桁数、最大= 8。 「量」 - 発行する資産の数(分割不可能な資産の数)。 "reissuable" - 追加のアセットを発行できるかどうかを示すブールフラグ。 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのリクエスト例:'
{ "name": "Test Asset 1"、 "description": "いくらかの説明"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 「数量」:100000000000、 "小数":8、 "再発行可能":true、 「手数料」:100000000、 "タイムスタンプ":1479287120875、 "signature": "3cCKi3D17ysyEVg2cd3JGpCzm6ovL3HF8qDksX41oPLEqiRmMVZ2C8QJjs2Utd9YfQfzuEVRyzLsqPer89qAfo1A" }
'応答パラメータ:'
"type" - トランザクションタイプ(IssueTransactionの場合は3) "id" - Base58形式のトランザクションのId(ハッシュ) "assetId" - Base58形式のアセットID、実質的にtx idと等しい 「手数料」 - 取引手数料 "timestamp" - トランザクションのタイムスタンプ "送信者" - 送信者アカウントのアドレス、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた "name" - アセット名 "description" - 資産の説明 「数量」 - 資産の数量 "小数点以下桁数" - 資産を表す小数点以下の桁数 "reissuable" - 追加のアセットを発行できるかどうかを示すブールフラグ。 「署名」 - すべての取引データの署名、Base58でコード化された 'レスポンスJSONの例:'
{ "タイプ":3、 "id": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "name": "2bNcNL6HTQeVaJe9v"、 "description": "BJa6cfyHD5f9r6B4A9kEmB"、 「数量」:100000000000、 "小数":8、 "再発行可能":true、 「手数料」:100000000、 "タイムスタンプ":1479210401734、 "署名": "4AKyeVcMMx9hUNpqQpeF5QPf5oWquyWk8avy524ZCXM6KdbYWpQZYf72NidzqSF3Prc6HA3DKEgdrCEhCcqw6Xbq" }
投稿/資産/放送/再発行[編集]
資産の追加分を再発行する。署名済み資産再発行トランザクションをネットワークに公開する。
'paramsをリクエストする:' "assetId" - 以前発行された資産ID、Base58でエンコードされたID "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた 「手数料」 - 資産発行手数料、最小= 100000 「数量」 - 発行する資産の追加量(分割できない資産の数) "reissuable" - 追加のアセットを発行できるかどうかを示すブールフラグ "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのリクエスト例:'
「数量」:22300000000、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "再発行可能":true、 "fee":100000、 "タイムスタンプ":1479221697312、 "署名": "49Gp5qit4GF5723LxQLjsBRoyJKKH41LpNUzwwi2ZM6dXuE9a18ApAJt9sfK3uMpjD1PiHXshS31nN9NtpYm8veu" } '応答パラメータ:'
"type" - トランザクションタイプ(ReissueTransactionの場合は5) その他の[ブロードキャスト発行資産]と同じです 'レスポンスJSONの例:' '
{ "タイプ":5、 "id": "2fA4nzfCXrPmpAscwGrLoL6JHTa1u4eRLv5vbohzVxBn"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 「数量」:22300000000、 "再発行可能":true、 "fee":100000、 "タイムスタンプ":1479221697312、 "署名": "49Gp5qit4GF5723LxQLjsBRoyJKKH41LpNUzwwi2ZM6dXuE9a18ApAJt9sfK3uMpjD1PiHXshS31nN9NtpYm8veu" }
POST / assets / broadcast / burn[編集]
資産の燃焼量。署名されたAsset Burnトランザクションをネットワークに公開する。
'paramsをリクエストする:'
"assetId" - 以前発行された資産ID、Base58でエンコードされたID "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた 「手数料」 - 資産発行手数料、最小= 100000 「金額」 - 燃える資産の量(分割できない資産の数) "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのリクエスト例:'
{ "senderPublicKey": "EHDZiTW9uhZmpfKRyJtusHXCQ3ABwJ3t9dxZdiPp2GZC"、 「手数料」:100000000、 "タイムスタンプ":1495623946088、 "signature": "4sWPrZFpR379XC4Med1y8AK2Avmx8nVUxVAzsE4QMzEeMtQyHgjzfQsi2Y5VY7diCqMAzohy9ZSTP3yfiB3QPQMd"、 "assetId": "AP5dp4LsmdU7dKHDcgm6kcWmeaqzWi2pXyemrn4yTzfo"、 「金額」:50000 } 'レスポンスJSONの例:'
{ "type":6、 "id": "AoqmyXSurAoLqH5zbcKPtksdPwadgudhE7tZ495cQDWs"、 "送信者": "3HRUALDoUaWAmAndWRqhbiQFoqgamhAVggE"、 "senderPublicKey": "EHDZiTW9uhZmpfKRyJtusHXCQ3ABwJ3t9dxZdiPp2GZC"、 「手数料」:100000000、 "タイムスタンプ":1495623946088、 "signature": "4sWPrZFpR379XC4Med1y8AK2Avmx8nVUxVAzsE4QMzEeMtQyHgjzfQsi2Y5VY7diCqMAzohy9ZSTP3yfiB3QPQMd"、 "assetId": "AP5dp4LsmdU7dKHDcgm6kcWmeaqzWi2pXyemrn4yTzfo"、 「金額」:50000 }
POST / assets / broadcast / transfer[編集]
ネットワークへのトランザクションとして、署名されたアセット転送をあるアドレスから別のアドレスにパブリッシュする。
'paramsをリクエストする:'
"assetId" [オプション] - 転送時にそのパラメータを転送または省略するための資産ID WAVES、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた "recipient" - 受信者アカウントのアドレス、Base58-encoded "手数料" - 資産移転のための取引手数料、最小= 100000(WAVEレット) "feeAssetId" [オプション] - 取引手数料の資産ID。空であるか欠けている場合、デフォルトでWAVES 「金額」 - 移転する資産のレット(またはウェーブレット)の金額 "attachment" - トランザクションに含まれる任意の追加データ、最大長は140バイト、Base58エンコード "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのリクエスト例:'
{ "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "fee":100000、 「金額」:5500000000、 "attachment": "BJa6cfyGUmzBFTj3vvvaew"、 "タイムスタンプ":1479222433704、 "署名": "2TyN8pNS7mS9gfCbX2ktpkWVYckoAmRmDZzKH3K35DKs6sUoXHArzukV5hvveK9t79uzT3cA8CYZ9z3Utj6CnCEo" } '応答パラメータ:'
"type" - トランザクションタイプ(TransferTransactionの場合は4) "id" - のID(ハッシュ) トランザクション、Base58エンコード "assetId" - Base58形式のアセットID、実質的にトランザクションIDと等しい "timestamp" - トランザクションのタイムスタンプ "送信者" - 送信者アカウントのアドレス、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた "recipient" - 受信者アカウントのアドレス、Base58-encoded 「feeAsset」 - 取引手数料の資産IDです(現在は空です)、つまり「WAVES」 「手数料」 - 取引手数料 "attachment" - 添付ファイル、Base58エンコード 「署名」 - すべての取引データの署名、Base58でコード化された 'レスポンスJSONの例:'
{ "type":4、 "id": "3xPyT73TGV7c5PKEJpicwSsX7PXyi3Lm1JFNQivFRLuy"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 「金額」:5500000000、 "feeAsset":null、 "fee":100000、 "タイムスタンプ":1479222433704、 "attachment": "BJa6cfyGUmzBFTj3vvvaew"、 "署名": "2TyN8pNS7mS9gfCbX2ktpkWVYckoAmRmDZzKH3K35DKs6sUoXHArzukV5hvveK9t79uzT3cA8CYZ9z3Utj6CnCEo" }
POST / assets / broadcast / batch-transfer[編集]
ネットワークへのトランザクションとして、署名された多数のアセット転送を1つのアドレスから別のアドレスにパブリッシュします。送信されるJSONオブジェクトのサイズの現在の制限は1メガバイトです。
'paramsをリクエストする:'
JSONオブジェクトの配列: "assetId" [オプション] - 転送時にそのパラメータを転送または省略するための資産ID WAVES、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた "recipient" - 受信者アカウントのアドレス、Base58-encoded "手数料" - 資産移転のための取引手数料、最小= 100000(WAVEレット) "feeAssetId" [オプション] - 取引手数料の資産ID。空であるか欠けている場合、デフォルトでWAVES 「金額」 - 移転する資産のレット(またはウェーブレット)の金額 "attachment" - トランザクションに含まれる任意の追加データ、最大長は140バイト、Base58エンコード "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのリクエスト例:'
[{ "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "fee":100000、 「金額」:5500000000、 "attachment": "BJa6cfyGUmzBFTj3vvvaew"、 "タイムスタンプ":1479222433704、 "署名": "2TyN8pNS7mS9gfCbX2ktpkWVYckoAmRmDZzKH3K35DKs6sUoXHArzukV5hvveK9t79uzT3cA8CYZ9z3Utj6CnCEo" }] '応答パラメータ:'
JSONオブジェクトの配列: "type" - トランザクションタイプ(TransferTransactionの場合は4) "id" - Base58でエンコードされたトランザクションのID(ハッシュ) "assetId" - Base58形式のアセットID、実質的にトランザクションIDと等しい "timestamp" - トランザクションのタイムスタンプ "送信者" - 送信者アカウントのアドレス、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた "recipient" - 受信者アカウントのアドレス、Base58-encoded 「feeAsset」 - 取引手数料の資産IDです(現在は空です)、つまり「WAVES」 「手数料」 - 取引手数料 "attachment" - 添付ファイル、Base58エンコード 「署名」 - すべての取引データの署名、Base58でコード化された 'レスポンスJSONの例:'
[{ "type":4、 "id": "3xPyT73TGV7c5PKEJpicwSsX7PXyi3Lm1JFNQivFRLuy"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 「金額」:5500000000、 "feeAsset":null、 "fee":100000、 "タイムスタンプ":1479222433704、 "attachment": "BJa6cfyGUmzBFTj3vvvaew"、 "署名": "2TyN8pNS7mS9gfCbX2ktpkWVYckoAmRmDZzKH3K35DKs6sUoXHArzukV5hvveK9t79uzT3cA8CYZ9z3Utj6CnCEo" }]
プライベート関数[編集]
すべてのプライベート機能では、api_keyヘッダーとして、すべてのHTTPリクエストにAPI Keyを提供する必要があります。そのキーは、.json設定ファイルのapiKeyHash設定に対応する必要があります。
投稿/資産/問題[編集]
ノードのウォレットに存在するアドレスに新しいAssetを発行します。
'paramsをリクエストする:'
`senderPublicKey`、` timestamp`と `signature`の他に[Broadcast Issue Assets]と同じです。 「送信者」 - ノードのウォレットに存在する送信者アカウントのアドレス、Base58でエンコードされた 'JSONのリクエスト例:'
{ "name": "Test Asset 1"、 「数量」:100000000000、 "description": "いくらかの説明"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "小数":8、 "再発行可能":true、 「手数料」:100000000 } '応答パラメータ:'
[ブロードキャスト発行資産]と同じです 'レスポンスJSONの例:'
[ブロードキャスト発行資産]と同じです
投稿/資産/再発行[編集]
資産の追加分を再発行する
'paramsをリクエストする:'
`senderPublicKey`、` timestamp`と `signature`パラメータ以外の[Broadcast Reissue Assets]と同じです。 「送信者」 - ノードのウォレットに存在する送信者アカウントのアドレス、Base58でエンコードされた 'JSONのリクエスト例:'
{ 「数量」:22300000000、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "送信者": "3NBVqYXrapgJ P9atQccdBPAgJPwHDKkh6A8 "、" reissuable ":true、" fee ":100000} '応答パラメータ:'
[Broadcast Reissue Assets]の場合と同じです 'レスポンスJSONの例:'
[Broadcast Reissue Assets]の場合と同じです
POST / assets / burn[編集]
資産の燃焼量。
'paramsをリクエストする:'
"assetId" - 以前発行された資産ID、Base58でエンコードされたID "送信者" - 送信者アドレス、Base58でエンコードされた 「手数料」 - 資産発行手数料、最小= 100000 「金額」 - 燃える資産の量(分割できない資産の数) 'JSONのリクエスト例:'
{ "送信者": "EHDZiTW9uhZmpfKRyJtusHXCQ3ABwJ3t9dxZdiPp2GZC"、 「手数料」:100000000、 "assetId": "AP5dp4LsmdU7dKHDcgm6kcWmeaqzWi2pXyemrn4yTzfo"、 「金額」:50000 } 'レスポンスJSONの例:'
{ "type":6、 "id": "AoqmyXSurAoLqH5zbcKPtksdPwadgudhE7tZ495cQDWs"、 "送信者": "3HRUALDoUaWAmAndWRqhbiQFoqgamhAVggE"、 "senderPublicKey": "EHDZiTW9uhZmpfKRyJtusHXCQ3ABwJ3t9dxZdiPp2GZC"、 「手数料」:100000000、 "タイムスタンプ":1495623946088、 "signature": "4sWPrZFpR379XC4Med1y8AK2Avmx8nVUxVAzsE4QMzEeMtQyHgjzfQsi2Y5VY7diCqMAzohy9ZSTP3yfiB3QPQMd"、 "assetId": "AP5dp4LsmdU7dKHDcgm6kcWmeaqzWi2pXyemrn4yTzfo"、 「金額」:50000 }
POST / assets / transfer[編集]
あるアドレスから別のアドレスに資産を転送するトランザクションを作成します。
'paramsをリクエストする:'
`senderPublicKey`、` timestamp`と `signature`パラメータ以外の[Broadcast Transfer Assets]と同じです。 「送信者」 - ノードのウォレットに存在する送信者アカウントのアドレス、Base58でエンコードされた 'JSONのリクエスト例:'
{ "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "fee":100000、 「金額」:5500000000、 "attachment": "BJa6cfyGUmzBFTj3vvvaew" } '応答パラメータ:'
[ブロードキャスト転送アセット]と同じです。 'レスポンスJSONの例:'
[ブロードキャスト転送アセット]と同じです。
POST / assets / make-asset-name-unique[編集]
アセット名を一意にするトランザクションを作成します。
'paramsをリクエストする:'
"assetId" - 以前発行された資産ID、Base58でエンコードされたID "送信者" - 送信者アドレス、Base58でエンコードされた 「手数料」 - 資産発行手数料、最小= 100000 "networkByte" - ネットワークバイト( 'W' - 87 - メインネット、 'T' - 84 - テストネット) 'JSONのリクエスト例:'
{ "sender": "3Hb3qXPdr3UikMBefgyu6dZKwG5Hjuphpc4"、 「手数料」:1000000000、 "assetId": "91MxUYbum9hrpJUcRwVe4no36ViqnQGAUaSmM8V8L8Jx"、 "networkByte":73 } 'レスポンスJSONの例:'
{ "タイプ":11、 "id": "GRhSHwLLNFz2HmxabiPU521U4NAkLshk2wgqbD9EBqEA"、 "sender": "3Hb3qXPdr3UikMBefgyu6dZKwG5Hjuphpc4"、 "senderPublicKey": "8fYJWvPAyUQgVCMuSVNwpZEAgg4E4vn8gz9hRWMsRu31"、 「手数料」:1000000000、 "タイムスタンプ":1495637586986、 「署名」:「2XCbkLbKhKJrcnCUg18LEBykC54cUqtxCMbVpNrzDkXHJG11ZLQB9vSz2Ha8r4hCqgFPRAvvoo4zFecv27v4DCB3」、 "assetId": "91MxUYbum9hrpJUcRwVe4no36ViqnQGAUaSmM8V8L8Jx"、 "networkByte":73 }
リース取引[編集]
投稿/リース/リース[編集]
リース取引を作成します。
'リクエストパラメータ'
"送信者" - 送信者アドレス、Base58でエンコードされた 「手数料」 - 取引手数料 「金額」 - リースされた波の量 'JSONのサンプルリクエスト'
{ "送信者": "3HgqG68qfeVz5dqbyvqnxQceFaH49xmGvUS" 「手数料」:500000000、 「金額」:500000000、 "受信者": "アドレス:3HQanDJhZSsSLbCjTCsMYpPvuj2ieGwKwQ9" } 'レスポンスJSONの例'
{ "type":10、 "id": "9q7X84wFuVvKqRdDQeWbtBmpsHt9SXFbvPPtUuKBVxxr" "送信者": "3MtrNP7AkTRuBhX4CBti6iT21pQpEnmHtyw"、 "senderPublicKey": "G6h72icCSjdW2A89QWDb37hyXJoYKq3XuCUJY2joS3EU"、 「手数料」:100000000、 "タイムスタンプ":46305781705234713、 「署名」:「4gQyPXzJFEzMbsCd9u5n3B2WauEc4172ssyrXCL882oNa8NfNihnpKianHXrHWnZs1RzDLbQ9rcRYnSqxKWfEPJG」、 "エイリアス": "dajzmj6gfuzmbfnhamsbuxivc" }
投稿/リース/キャンセル[編集]
リース取消トランザクションを作成します。
'リクエストパラメータ'
"送信者" - 送信者アドレス、Base58でエンコードされた 「手数料」 - 取引手数料 "leaseId" - キャンセル用のリースID 'JSONのサンプルリクエスト'
{ "送信者": "3HgqG68qfeVz5dqbyvqnxQceFaH49xmGvUS" 「手数料」:500000000、 "leaseId": "CYPYhYe9M94t958Nsa3DcYNBZTURwcFgQ3ojyjwEeZiK" } 'レスポンスJSONの例'
{ "type":9、 "id": "895ryYABK7KQWLvSbw8o8YSjTTXHCqRJw1yzC63j4Fgk"、 "送信者": "3HgqG68qfeVz5dqbyvqnxQceFaH49xmGvUS" "senderPublicKey": "DddGQs63eWAA1G1ZJnJDVSrCpMS97NH4odnggwUV42kE"、 「手数料」:500000000、 "タイムスタンプ":1495625418143、 "signature": "2SUmFj4zo7NfZK7Xoqvqh7m7bhzFR8rT7eLtqe9Rrp18ugFH9SSvoTx1BtekWhU7PN1uLrnQCpJdS8JhmcBAjmb9"、 "leaseId": "CYPYhYe9M94t958Nsa3DcYNBZTURwcFgQ3ojyjwEeZiK" }
投稿/リース/ブロードキャスト/リース[編集]
署名されたリース取引を作成します。
'リクエストパラメータ'
"senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた 「手数料」 - 取引手数料 「金額」 - リースされた波の量 "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのサンプルリクエスト'
{ "senderPublicKey": "DddGQs63eWAA1G1ZJnJDVSrCpMS97NH4odnggwUV42kE"、 「手数料」:500000000、 "タイムスタンプ":1495625416995、 "signature": "rpvX5xpSZBxHSp8bais3MAzi4RbqiSWiCUQsgTt392ni8xEoohXv9TaHNYcXG4AsYNs8iUi8jQ5kLNokZiYDV1f"、 「金額」:500000000、 "受信者": "アドレス:3HQanDJhZSsSLbCjTCsMYpPvuj2ieGwKwQ9" } 'レスポンスJSONの例'
{ "type":8、 "id": "CYPYhYe9M94t958Nsa3DcYNBZTURwcFgQ3ojyjwEeZiK"、 "送信者": "3HgqG68qfeVz5dqbyvqnxQceFaH49xmGvUS" "senderPublicKey": "DddGQs63eWAA1G1ZJnJDVSrCpMS97NH4odnggwUV42kE"、 「手数料」:500000000、 "タイムスタンプ":1495625416995、 "signature": "rpvX5xpSZBxHSp8bais3MAzi4RbqiSWiCUQsgTt392ni8xEoohXv9TaHNYcXG4AsYNs8iUi8jQ5kLNokZiYDV1f"、 「金額」:500000000、 "受信者": "アドレス:3HQanDJhZSsSLbCjTCsMYpPvuj2ieGwKwQ9" }
投稿/リース/放送/キャンセル[編集]
署名されたリース取消トランザクションを作成します。
'リクエストパラメータ'
"senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた 「手数料」 - 取引手数料 "leaseId" - キャンセル用のリースID "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのサンプルリクエスト'
{ "senderPublicKey": "DddGQs63eWAA1G1ZJnJDVSrCpMS97NH4odnggwUV42kE"、 「手数料」:500000000、 "タイムスタンプ":1495625418143、 "signature": "2SUmFj4zo7NfZK7Xoqvqh7m7bhzFR8rT7eLtqe9Rrp18ugFH9SSvoTx1BtekWhU7PN1uLrnQCpJdS8JhmcBAjmb9"、 "leaseId": "CYPYhYe9M94t958Nsa3DcYNBZTURwcFgQ3ojyjwEeZiK" } 'レスポンスJSONの例'
{ "type":9、 "id": "895ryYABK7KQWLvSbw8o8YSjTTXHCqRJw1yzC63j4Fgk"、 "送信者": "3HgqG68qfeVz5dqbyvqnxQceFaH49xmGvUS" "senderPublicKey": "DddGQs63eWAA1G1ZJnJDVSrCpMS97NH4odnggwUV42kE"、 「手数料」:500000000、 "タイムスタンプ":1495625418143、 "signature": "2SUmFj4zo7NfZK7Xoqvqh7m7bhzFR8rT7eLtqe9Rrp18ugFH9SSvoTx1BtekWhU7PN1uLrnQCpJdS8JhmcBAjmb9"、 "leaseId": "CYPYhYe9M94t958Nsa3DcYNBZTURwcFgQ3ojyjwEeZiK" }
別名トランザクション[編集]
POST /エイリアス/ブロードキャスト/作成[編集]
送信者のアドレス用に署名された別名トランザクションを作成します。
'リクエストパラメータ'
"senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた 「手数料」 - 取引手数料 "エイリアス" - 送信者のアドレスのエイリアス "timestamp" - トランザクションのタイムスタンプ 「署名」 - すべての取引データの署名、Base58でコード化された 'JSONのサンプルリクエスト'
{ "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "fee":100000、 "エイリアス": "エイリアス"、 "タイムスタンプ":1488807184731、 "署名": "3aB6cL1osRNopWyqBYpJQCVCXNLibkwM58dvK85PaTK5sLV4voMhe5E8zEARM6YDHnQP5YE3WX8mxdFp3ciGwVfy" } 'レスポンスJSONの例'
{ "type":10、 "id": "9q7X84wFuVvKqRdDQeWbtBmpsHt9SXFbvPPtUuKBVxxr" "送信者": "3MtrNP7AkTRuBhX4CBti6iT21pQpEnmHtyw"、 "senderPublicKey": "G6h72icCSjdW2A89QWDb37hyXJoYKq3XuCUJY2joS3EU"、 「手数料」:100000000、 "タイムスタンプ":46305781705234713、 「署名」:「4gQyPXzJFEzMbsCd9u5n3B2WauEc4172ssyrXCL882oNa8NfNihnpKianHXrHWnZs1RzDLbQ9rcRYnSqxKWfEPJG」、 "エイリアス": "dajzmj6gfuzmbfnhamsbuxivc" }
POST /エイリアス/作成[編集]
'リクエストパラメータ'
"送信者" - 送信者のアドレス、Base58でエンコードされた 「手数料」 - 取引手数料 "エイリアス" - 送信者のアドレスのエイリアス 'JSONのサンプルリクエスト'
{ "送信者": "3MtrNP7AkTRuBhX4CBti6iT21pQpEnmHtyw"、 "fee":100000、 "エイリアス": "エイリアス"、 } 'レスポンスJSONの例'
{ "type":10、 "id": "9q7X84wFuVvKqRdDQeWbtBmpsHt9SXFbvPPtUuKBVxxr" "送信者": "3MtrNP7AkTRuBhX4CBti6iT21pQpEnmHtyw"、 "senderPublicKey": "G6h72icCSjdW2A89QWDb37hyXJoYKq3XuCUJY2joS3EU"、 「手数料」:100000000、 "タイムスタンプ":46305781705234713、 「署名」:「4gQyPXzJFEzMbsCd9u5n3B2WauEc4172ssyrXCL882oNa8NfNihnpKianHXrHWnZs1RzDLbQ9rcRYnSqxKWfEPJG」、 "エイリアス": "dajzmj6gfuzmbfnhamsbuxivc" }
GET /エイリアス/ by-alias / {エイリアス}[編集]
'リクエストパラメータ'
"エイリアス" - エイリアス 'レスポンスJSONの例'
{ "アドレス": "アドレス:3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7" }
GET /エイリアス/ by-address / {address}[編集]
'リクエストパラメータ'
"住所" - 住所 'レスポンスJSONの例'
[ "エイリアス:HUMANREADABLE1"、 "エイリアス:HUMANREADABLE2"、 "エイリアス:HUMANREADABLE3"、 ]
支払い処理[編集]
投稿/波/作成署名付き決済[編集]
提供されたウォレットシードを使用して支払いをサインします。
推奨されていません。代わりにブロードキャスト転送アセットを使用してください。
'JSONのリクエスト例:'
{ "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "senderWalletSeed": "FQgbSAm6swGbtqA3NE8PttijPhT4N3Ufh4bHFAkyVnQz"、 "タイムスタンプ":1479217631000、 "senderAddressNonce":0、 「金額」:100000000、 「手数料」:100000 } 'レスポンスJSONの例:'
{ "タイムスタンプ":1479217631000、 「金額」:100000000、 "fee":100000、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "senderPublicKey": "DZUxn4pC7QdYrRqacmaAJghatvnn1Kh1mkE2scZoLuGJ"、 "送信者": "3N3keodUiS8WLEw9W4BKDNxgNdUpwSnpb3K"、 "signature": "2neH3aRvLcoeu21cvW1Cj49DsSpByK67DUVAbU7Gtody2DY1h6moqE4Aio1L7LgEwVb7A3jgD84czCC5mrkd98uW" }
POST / waves / broadcast-signed-payment[編集]
署名された支払い(/ waves / create-signed-paymentで作成)をネットワークに公開する。
推奨されていません。代わりにブロードキャスト転送アセットを使用してください。
要求:
{ "タイムスタンプ":1479217631000、 「金額」:100000000、 "fee":100000、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 "senderPublicKey": "DZUxn4pC7QdYrRqacmaAJghatvnn1Kh1mkE2scZoLuGJ"、 "送信者": "3N3keodUiS8WLEw9W4BKDNxgNdUpwSnpb3K"、 "signature": "2neH3aRvLcoeu21cvW1Cj49DsSpByK67DUVAbU7Gtody2DY1h6moqE4Aio1L7LgEwVb7A3jgD84czCC5mrkd98uW" } '応答パラメータ:'
"タイプ" - 取引タイプ(PaymentTransactionの場合は2) "id" - トランザクションのID = signature 「手数料」 - 取引手数料 "timestamp" - トランザクションのタイムスタンプ "seder" - 送信者アカウントのアドレス、Base58でエンコードされた "senderPublicKey" - 送信者アカウントの公開鍵、Base58でエンコードされた "recipient" - 受信者アカウントのアドレス、Base58-encoded 「金額」 - WAVESの取引金額 「署名」 - すべての取引データの署名、Base58でコード化された 'レスポンスJSONの例:'
{ "タイプ":2、 "id": "2neH3aRvLcoeu21cvW1Cj49DsSpByK67DUVAbU7Gtody2DY1h6moqE4Aio1L7LgEwVb7A3jgD84czCC5mrkd98uW" "fee":100000、 "タイムスタンプ":1479217631000、 "signature": "2neH3aRvLcoeu21cvW1Cj49DsSpByK67DUVAbU7Gtody2DY1h6moqE4Aio1L7LgEwVb7A3jgD84czCC5mrkd98uW" "送信者": "3N3keodUiS8WLEw9W4BKDNxgNdUpwSnpb3K"、 "senderPublicKey": "DZUxn4pC7QdYrRqacmaAJghatvnn1Kh1mkE2scZoLuGJ"、 "recipient": "3Mx2afTZ2KbRrLNbytyzTtXukZvqEB8SkW7"、 「金額」:100000000 }
- 取引
GET / transactions / info / {id}[編集]
トランザクションID(署名またはハッシュ)でトランザクションデータを返します。
'paramsをリクエストする:'
「署名」 - トランザクションID 'レスポンスJSONの例:'
{ "type":4、 "id": "52GG9U2e6foYRKp5vAzsTQ86aDAABfRJ7synz7ohBp19"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 「金額」:100000、 "feeAsset":null、 "fee":100000、 "タイムスタンプ":1479313236091、 "attachment": "文字列"、 「署名」:「GknccUA79dBcwWgKjqB7vYHcnsj7caYetfncJhRkkaetbQon7DxbpMmvK9LYqUkirJp17geBJCRTNkHEoAjtsUm」、 "身長":7782 }
GET /トランザクション/アドレス/ {アドレス} /制限/ {制限}[編集]
指定されたアカウント番号で最新のトランザクションの指定された数を返します。
'paramsをリクエストする:'
"address" - アカウントのアドレスBase58-encoded "limit" - 返すトランザクションの数、最大= 50 'レスポンスJSONの例:'
[ [ { "タイプ":2、 "id": "4XE4M9eSoVWVdHwDYXqZsXhEc4q8PH9mDMUBegCSBBVHJyP2Yb1ZoGi59c1Qzq2TowLmymLNkFQjWp95CdddnyBW"、 "fee":100000、 "タイムスタンプ":1479313097422、 「署名」:「4XE4M9eSoVWVdHwDYXqZsXhEc4q8PH9mDMUBegCSBBVHJyP2Yb1ZoGi59c1Qzq2TowLmymLNkFQjWp95CdddnyBW」、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3N9iRMou3pgmyPbFZn5QZQvBTQBkL2fR6R1"、 「金額」:1000000000 } ] ]
GET /トランザクション/未確認[編集]
ノードプール内の未確認トランザクションのリストを返します。
'レスポンスJSONの例:'
[ { "type":4、 "id": "52GG9U2e6foYRKp5vAzsTQ86aDAABfRJ7synz7ohBp19"、 sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG"、 「金額」:100000、 "feeAsset":null、 "fee":100000、 "タイムスタンプ":1479313236091、 "attachment": "文字列"、 「署名」:「GknccUA79dBcwWgKjqB7vYHcnsj7caYetfncJhRkkaetbQon7DxbpMmvK9LYqUkirJp17geBJCRTNkHEoAjtsUm」 } ]
ピア[編集]
'接続された同僚'
現在接続されているすべてのピアのノードへのリストを返します。
'レスポンスJSONの例:'
{ "仲間":[ { "address": "52.51.92.182/52.51.92.182:6863"、 "declaredAddress": "N / A"、 "peerName": "zx 182"、 "peerNonce":183759 }、 { "住所": "ec2-52-28-66-217.eu-central-1.compute.amazonaws.com/52.28.66.217:6863"、 "declaredAddress": "N / A"、 "peerName": "zx 217"、 "peerNonce":1021800 } ] } 'ブラックリストに載った同僚'
現在ブラックリストに登録されているすべてのピアのリストをノードに返します。
'すべての既知の同僚'
公表されている宣言されたアドレスを持つ、ブラックリストに載っていない同名のピアのリストを返します。
ブロック[編集]
GET /ブロック/高さ[編集]
現在のブロックチェインの高さを返します。
'レスポンスJSONの例:'
{ "身長":7788 }
GET /ブロック/ラスト[編集]
最後のブロックデータを返す
'レスポンスJSONの例:'
{ "バージョン":2、 "タイムスタンプ":1479313809528、 「参照」:「4MLXQDbARiJDEAoy5vZ8QYh1yNnDhdGhGWkDKna8J6QXb7agVpFEi16hHBGUxxnq8x4myG4w66DR4Ze8FM5dh8Gi」、 "nxtconsensus":{ "basetarget":464、 "generationsignature": "7WUV2TufaRAyjiCPFdnAWbn2Q7Jk7nBmWbnnDXKDEeJv" }、 "トランザクション":[ { "タイプ":2、 "id": "64hxaxZvB9iD1cfRf1j8KPTXs4qE7SHaDWTZKoUvgfVZotaJUtSGa5Bxi86ufAfp5ifoNAGknBqS9CpxBKG9RNVR"、 "fee":100000、 "タイムスタンプ":1479313757194、 "signature": "64hxaxZvB9iD1cfRf1j8KPTXs4qE7SHaDWTZKoUvgfVZotaJUtSGa5Bxi86ufAfp5ifoNAGknBqS9CpxBKG9RNVR"、 "sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"、 "senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw"、 "recipient": "3N8UPtqiy322NVr1fLP7SaK1AaCU7oPaVuy"、 「金額」:1000000000 } ]、 "ジェネレータ": "3N5GRqzDBhjVXnCn44baHcz2GoZy5qLxtTh"、 "署名": "4ZhZdLAvaGneLU4K4b2eTgRQvbBjEZrtwo1qAhM9ar3A3weGEutbfNKM4WJ9JZnV8BXenx8JRGVNwpfxf3prGaxd"、 "fee":100000、 "ブロックサイズ":369 }
GET /ブロック/ at / {height}[編集]
与えられた高さでブロックデータを返す
GET / blocks / seq / {from} / {to}[編集]
与えられた高さの範囲でブロックデータを返す
GET /ブロック/署名/ {署名}[編集]
指定したBase58エンコードされた署名でブロックデータを返す
GET /ブロック/アドレス/ {address} / {from} / {to}[編集]
指定されたアドレスによって生成されたブロックのリストを取得する
Utils[編集]
POST / utils / hash / secure[編集]
指定されたメッセージの安全なハッシュを生成します。
要求:
リエットウェーブ! 'レスポンスJSONの例:'
{ "message": "ridethewaves!"、 "ハッシュ": "H6nsiifwYKYEx6YzYD7woP1XCn72RVvx6tC1zjjLXqsu" }
POST / utils / hash / fast[編集]
指定されたメッセージの高速ハッシュ。
要求:
リエットウェーブ! 'レスポンスJSONの例:'
{ "message": "ridethewaves!"、 "ハッシュ": "DJ35ymschUFDmqCnDJewjcnVExVkWgX7mJDXhFy9X8oQ" }
GET / utils / seed / {length}[編集]
指定された長さのランダムシードを生成します。
'レスポンスJSONの例:'
{ "種": "3XcHLU6bYRax1c" }
GET / utils / seed[編集]
ランダムなシードを生成します。
'レスポンスJSONの例:' { 「種」:「2uwLAe7Rp7TuNiBTKsmTEJ5wxGqkBHjcyPq2tMXiWye7」 }
暗号の実用的な詳細[編集]
説明[編集]
このドキュメントは、シード、公開鍵からのアドレス、ブロック、およびトランザクションの署名からプライベートおよび公開鍵を作成するためにプロジェクトで使用されるアルゴリズムをどのようにして記述しますか。プロジェクトエリアには、暗号アルゴリズムの使用に関するすべての詳細があります。
簡単に言うと、プロジェクトでは、ハッシュチェーンの形式で(別々に)Blake2b256 と Keccak256 'アルゴリズムで使用される暗号化ハッシュを作成するプロジェクトです。 Curve25519 'スキームを適用して署名を作成し検証します。 Base58 'は、バイトの文字列形式を作成するために使用されます。アプリケーションを作成する場合は、プログラミング言語でこれらのアルゴリズムの実装を見つける必要があります
Base58をエンコードするバイト[編集]
人間が読みやすくするために、プロジェクトのバイト配列はすべてBitcoinアルファベットのBase58アルゴリズムでエンコードされています。
例[編集]
文字列 teststring はバイト [5、83、9、-20、82、-65、120、-11] 'にコード化されています。バイト [1、2、3、4、5] 'は文字列' '7bWpTW' 'にコード化されています。
シードからプライベートキーを作成する[編集]
シード文字列はエントロピーの表現であり、1つのウォレットのすべての秘密鍵を確定的に再作成できます。それは、選択の確率が非現実的で無視できるほど十分に長くすべきである。
実際には、シードは任意のバイト配列にすることができますが、暗記を簡単にするために、シードが単語で構成されていることを保証するためにライトウォレットがBrainwalletを使用します。書き留めたり覚えたりする。このアプリケーションでは、文字列のUTF-8バイトを取り出し、キーとアドレスを作成するために使用します。
例えば、シード文字列「」マニュアルリコール収穫シリーズ砂漠を管理し、警察は、中空の道徳的な誓約の子猫の位置が追加バラ溶融は「」UTF-8バイトとして読み込み、Base58文字列にそれらをコードした後、「」xrv7ffrv2A9g5pKSxt7gHGrPYJgRnsEMDyc4G7srbia6PhXYLDKVsDxnqsEqhAVbbko7N1tDyaSrWCZBoMyvdwaFNjWNPjKdcoZTKbKr2Vw9vu53Uf4dYpyWCyvfPbRskHfgt9q「」としてコード化されています。
シード文字列は、秘密鍵の作成に関係します。秘密鍵を作成するには、最初は0の値を持ち、新しいアドレスを作成するたびに増加する4バイトのint 'nonce'フィールド(ビッグエンディアン表現)に、シードバイトの前に追加する必要があります。次に、このバイト配列をハッシュ `keccak256(blake2b256(bytes))`の計算に使用します。この結果得られるバイトの配列は `account seed`と呼ばれ、そこから秘密鍵と公開鍵のペアを生成することができます。次に、このバイトハッシュは `Curve25519`アルゴリズムの公開鍵と秘密鍵のペアを生成する方法で渡されました。いくつかの `Curve25519`ライブラリ(プロジェクトで使用されているもの)の中には、Sha256ハッシュが組み込まれているものもあれば、(ほとんどのc / c ++ / pythonライブラリのように)ハッシュ化されていないものもあります。
次に、このバイトハッシュは、 Curve25519 アルゴリズムの公開鍵と秘密鍵のペアを作成する方法で渡されました。
例[編集]
ブレインウォレットシードストリング 手動リコール収穫シリーズを管理する砂漠の溶融警察は中空道徳的な誓約子猫の位置の追加をバラ Base58でエンコードされたUTF-8バイト xrv7ffrv2A9g5pKSxt7gHGrPYJgRnsEMDyc4G7srbia6PhXYLDKVsDxnqsEqhAVbbko7N1tDyaSrWCZBoMyvdwaFNjWNPjKdcoZTKbKr2Vw9vu53Uf4dYpyWCyvfPbRskHfgt9q ハッシュ関数適用前のアカウントシードバイト 1111xrv7ffrv2A9g5pKSxt7gHGrPYJgRnsEMDyc4G7srbia6PhXYLDKVsDxnqsEqhAVbbko7N1tDyaSrWCZBoMyvdwaFNjWNPjKdcoZTKbKr2Vw9vu53Uf4dYpyWCyvfPbRskHfgt9q アカウントシード H4do9ZcPUASvtFJHvESapnxfmQ8tjBXMU7NtUARk9Jrf `Sha256`ハッシュ後のアカウントシード(あなたのライブラリがあなた自身でそれをしない場合、オプションです) 49mgaSSVQw6tDoZrHSr9rFySgHHXwgQbCRwFssboVLWX 作成された秘密鍵 3kMEhU5z3v8bmer1ERFUUhW58Dtuhyo9hE5vrhjqAWYT 作成された公開鍵 HBqhfdFASRQ5eBBpu2y6c6KKi1az6bMx8v1JxX4iW1Q8
公開鍵からアドレスを作成する[編集]
公開鍵から得られた私たちのネットワークアドレスはbyte chainId(testnetでは 'T'、mainnetでは 'W')に依存しているため、異なるネットワークが単一のシード(したがって公開鍵)に対して異なるアドレスを取得しました。バイトアドレスの作成の詳細は、hereを参照してください。
例[編集]
公開鍵 HBqhfdFASRQ5eBBpu2y6c6KKi1az6bMx8v1JxX4iW1Q8
メインネットネットワーク(chainId 'W')にこのアドレスが作成されます 3PPbMwqLtwBGcJrTA5whqJfY95GqnNnFMDX
署名[編集]
Curve25519 はプロジェクト内のすべての署名に使用されます。
プロセスは次のとおりです。署名用の特別なバイトを作成します(トランザクションまたはブロックの場合は[1]を参照してください)、これらを使用して署名を作成しますバイトと秘密鍵のバイト。
署名の検証には、十分な署名バイト、署名されたオブジェクトバイト、公開鍵が必要です。
1つのバイト配列(ブロックまたはトランザクション)に対して有効な(ユニークではない!)シグネチャが多数あることを忘れないでください。また、ブロックやトランザクションのIDが一意であると仮定しないでください。衝突は1日に発生する可能性があります!彼らはすでにいくつかの弱いキーのために行われています。
例[編集]
トランザクションデータ: &lt; table&gt; &lt; tr&gt; &lt; th align = "left"&gt; Field&lt; / th&gt; &lt; th align = "right"&gt; Value&lt; / th&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;送信者アドレス(情報のためだけに使用されない)&lt; / td&gt; <td align = "right"> 3N9Q2sdkkhAnbR4XCveuRaSMLiVtvebZ3wp </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;秘密鍵(署名に使用され、txデータには使用されません)&lt; / td&gt; <td align = "right"> 7VLYNhmuvAo5Us4mNGxWpzhMSdSSdEbEPFUDKSnA6eBv </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;公開鍵&lt; / td&gt; <td align = "right"> EENPV1mRhUD9gSKbcWt84cqnfSGQP5LkCu5gMBfAanYH </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;受信者アドレス&lt; / td&gt; <td align = "right"> 3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8 </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt; Asset id&lt; / td&gt; &lt; td align = "right"> BG39cCNUFWPQYeyLnu7tjKHaiUGRxYwJjvntt9gdDPxG </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt; Amount&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt; Fee&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;料金資産ID&lt; / td&gt; &lt; td align = "right"> BG39cCNUFWPQYeyLnu7tjKHaiUGRxYwJjvntt9gdDPxG </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;タイムスタンプ&lt; / td&gt; &lt; td align = "right"&gt; 1479287120875&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "left"&gt;添付ファイル(バイト配列として)&lt; / td&gt; &lt; td align = "right"&gt; [1,2,3,4] </ td> &lt; / tr&gt; &lt; / table&gt;
バイト数: &lt; table&gt; &lt; tr&gt; &lt; th align = "right">#</ th> &lt; th align = "left"&gt;フィールド名&lt; / th&gt; &lt; th align = "center"&gt; Type&lt; / th&gt; &lt; th align = "right"&gt; Position&lt; / th&gt; &lt; th align = "right"&gt; Length&lt; / th&gt; &lt; th align = "right"&gt; Value&lt; / th&gt; &lt; th align = "right"&gt; Base58 bytes value&lt; / th&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "left"&gt;取引タイプ(0x04)&lt; / td&gt; &lt; td align = "center"&gt; Byte&lt; / td&gt; &lt; td align = "right"> 0&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"> 4&lt; / td&gt; &lt; td align = "right"> 5 </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"&gt; 2&lt; / td&gt; &lt; td align = "left"&gt;送信者の公開鍵&lt; / td&gt; &lt; td align = "center"&gt; Bytes&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 32&lt; / td&gt; &lt; td align = "right"&gt; ...&lt; / td&gt; <td align = "right"> EENPV1mRhUD9gSKbcWt84cqnfSGQP5LkCu5gMBfAanYH </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"&gt; 3&lt; / td&gt; &lt; td align = "left"&gt;金額の資産フラグ(0波、1資産)&lt; / td&gt; &lt; td align = "center"&gt; Byte&lt; / td&gt; &lt; td align = "right"&gt; 33&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 2&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 4&lt; / td&gt; &lt; td align = "left"&gt;金額のアセットID(使用されている場合は、*)&lt; / td&gt; &lt; td align = "center"&gt; Bytes&lt; / td&gt; &lt; td align = "right"> 34 </ td> &lt; td align = "right"> 0(32 *)&lt; / td&gt; &lt; td align = "right"&gt; ...&lt; / td&gt; &lt; td align = "right"> BG39cCNUFWPQYeyLnu7tjKHaiUGRxYwJjvntt9gdDPxG </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 5 </ td> &lt; td align = "left"&gt;料金の資産フラグ(0波、1資産)&lt; / td&gt; &lt; td align = "center"&gt; Byte&lt; / td&gt; &lt; td align = "right"&gt; 34(66 *)&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 2&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 6 </ td> &lt; td align = "left"&gt;料金のアセットID(使用されている場合は、**)&lt; / td&gt; &lt; td align = "center"&gt; Bytes&lt; / td&gt; &lt; td align = "right"> 35(67 *)&lt; / td&gt; &lt; td align = "right"> 0(32 **)</ td> &lt; td align = "right"&gt; ...&lt; / td&gt; &lt; td align = "right"> BG39cCNUFWPQYeyLnu7tjKHaiUGRxYwJjvntt9gdDPxG </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"&gt; 7&lt; / td&gt; &lt; td align = "left"&gt;タイムスタンプ&lt; / td&gt; &lt; td align = "center"&gt; Long&lt; / td&gt; &lt; td align = "right"&gt; 35(67 *)(99 **) &lt; td align = "right"&gt; 8&lt; / td&gt; &lt; td align = "right"&gt; 1479287120875&lt; / td&gt; <td align = "right"> 11frnYASv </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"&gt; 8&lt; / td&gt; &lt; td align = "left"&gt; Amount&lt; / td&gt; &lt; td align = "center"&gt; Long&lt; / td&gt; &lt; td align = "right"&gt; 43(75 *)(107 **) &lt; td align = "right"&gt; 8&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 11111112&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 9 </ td> &lt; td align = "left"&gt; Fee&lt; / td&gt; &lt; td align = "center"&gt; Long&lt; / td&gt; &lt; td align = "right"> 51(83 *)(115 **) &lt; td align = "right"&gt; 8&lt; / td&gt; &lt; td align = "right"&gt; 1&lt; / td&gt; &lt; td align = "right"&gt; 11111112&lt; / td&gt; &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 10 </ td> &lt; td align = "left"&gt;受信者のアドレス&lt; / td&gt; &lt; td align = "center"&gt; Bytes&lt; / td&gt; &lt; td align = "right"> 59(91 *)(123 **) &lt; td align = "right"> 26 </ td> &lt; td align = "right"&gt; ...&lt; / td&gt; <td align = "right"> 3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8 </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 11 </ td> &lt; td align = "left"&gt;添付ファイルの長さ(N)&lt; / td&gt; &lt; td align = "center"&gt; Short&lt; / td&gt; &lt; td align = "right"> 85(117 *)(149 **) &lt; td align = "right"&gt; 2&lt; / td&gt; &lt; td align = "right"> 4&lt; / td&gt; <td align = "right"> 15 </ td> &lt; / tr&gt; &lt; tr&gt; &lt; td align = "right"> 12 </ td> &lt; td align = "left"&gt;添付ファイルのバイト数&lt; / td&gt; &lt; td align = "center"&gt; Bytes&lt; / td&gt; &lt; td align = "right"&gt; 87(119 *)(151 **) &lt; td align = "right"&gt; N&lt; / td&gt; &lt; td align = "right"&gt; [1,2,3,4]&lt; / td&gt; <td align = "right"> 2VfUX </ td> &lt; / tr&gt; &lt; / table&gt; 符号の合計データバイト: Ht7FtLJBrnukwWtywum4o1PbQSNyDWMgb4nXR5ZkV78krj9qVt17jz74XYSrKSTQe6wXuPdt3aCvmnF5hfjhnd1gyij36hN1zSDaiDg3TFi7c7RbXTHDDUbRgGajXci8PJB3iJM1tZvh8AL5wD 4o4DCo1VJoKk2PUWX3cUydB7brxWGUxC6mPxKMdXefXwHeB4khwugbvcsPgk8F6YB
トランザクションデータバイトの署名(無限の有効な署名の1つ): 2mQvQFLQYJBe9ezj7YnAQFq7k9MxZstkrbcSKpLzv7vTxUfnbvWMUyyhJAc1u3vhkLqzQphKDecHcutUrhrHt22D
署名付きトランザクションの合計バイト数: 6zY3LYmrh981Qbzj7SRLQ2FP9EmXFpUTX9cA7bD5b7VSGmtoWxfpCrP4y5NPGou7XDYHx5oASPsUzB92aj3623SUpvc1xaaPjfLn6dCPVEa6SPjTbwvmDwMT8UVoAfdMwb7t4okLcURcZCFugf2Wc 9tBGbVu7mgznLGLxooYiJmRQSeAACN8jYZVnUuXv4V7jrDJVXTFNCz1mYevnpA5RXAoehPRXKiBPJLnvVmV2Wae2TCNvweHGgknioZU6ZaixSCxM1YzY24Prv9qThszohojaWq4cRuRHwMAA5VUBvUs
トランザクションIDの計算[編集]
トランザクションIDはトランザクションバイトに格納されず、ほとんどのトランザクション(Payment以外)では blake2b256(bytes_for_signing )を使用して署名する特別なバイトから簡単に計算できます。