RealPath:
WebPath:
2016/12/30 23:31 (JST) 更新
ウォレット >>

BTC送金

Contents

前提

今回は regtest 環境の初期状態から始めることにする。

$ bitcoin-cli generate 101
$ bitcoin-cli getaccountaddress koba1
$ bitcoin-cli getaccountaddress koba2
$ bitcoin-cli listaccounts 0
{
  "": 50.00000000, … 1ブロック分のブロック生成報酬 50 BTC が手に入った状態
  "koba1": 0.00000000,
  "koba2": 0.00000000
}

指定アドレスに送金: sendtoaddress

アカウント koba1 に対して BTC を送金するために koba1 のアドレスを得る。

$ bitcoin-cli getaccountaddress koba1 … koba1 というアカウント名のアドレスを取得 (無ければ生成される)
mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m

 
アカウント koba1 のアドレスに対して 10 BTC を送金。

$ bitcoin-cli sendtoaddress mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m 10 … 指定アドレスに対して 10 BTC 送金
8506dd216598493f435dfa1e7a2be2b34812b69ef45b55cd1630ca1a36e51227 … トランザクションID (txid) が返る

 
結果。

$ bitcoin-cli listaccounts 0
{
  "": 39.99996160, … 50 BTC から 10 BTC が引かれた。さらに若干の送金手数料も引かれるため、ぴったり 40 BTC にはならない。
  "koba1": 10.00000000, … 10 BTC 増えた
  "koba2": 0.00000000
}

 
ちなみに listaccounts の引数を省略すると、承認数 1 以上のトランザクションのみが反映された情報が表示される。
sendtoaddress を実行したばかりのトランザクションは承認数が 0 であるため、アカウント koba1 の残高はまだ増えない。

$ bitcoin-cli listaccounts
{
  "": 39.99996160, … 送信元の残高はすぐに減る。
  "koba1": 0.00000000, … トランザクション承認数が 0 のため、まだ残高が反映されない。
  "koba2": 0.00000000
}

トランザクションの情報確認: gettransaction

トランザクションID (txid) を指定して該当トランザクションの詳細情報を表示。

$ bitcoin-cli gettransaction 8506dd216598493f435dfa1e7a2be2b34812b69ef45b55cd1630ca1a36e51227
{
  "amount": 0.00000000,
  "fee": -0.00003840, … 送金手数料
  "confirmations": 0, … トランザクションの承認数
  "trusted": true,
  "txid": "8506dd216598493f435dfa1e7a2be2b34812b69ef45b55cd1630ca1a36e51227", … トランザクションID
  "walletconflicts": [
  ],
  "time": 1483101895, … トランザクション生成日時 (2016/12/30 12:44:55 GMT)
  "timereceived": 1483101895, … トランザクション生成日時 (2016/12/30 12:44:55 GMT)
  "bip125-replaceable": "no",
  "details": [
    {
      "account": "", … 送信元アカウント:""
      "address": "mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m", … 送信先アドレス
      "category": "send", … 種別:送信
      "amount": -10.00000000, … BTC量:10 BTC
      "label": "koba1", … 送信先アカウント:"koba1"
      "vout": 1,
      "fee": -0.00003840, … 手数料:0.00003840 BTC
      "abandoned": false
    },
    {
      "account": "koba1", … 受信アカウント:"koba1"
      "address": "mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m", … 受信アドレス
      "category": "receive", … 種別:受信
      "amount": 10.00000000, … BTC量:10 BTC
      "label": "koba1", … 受信アカウント:"koba1"
      "vout": 1
    }
  ],
  "hex": "02000000013c32cc0ff09a5ba589aceda24284bdc28f1b7c726ae37e0d85983da7bb062ecd000000004847304402202c682d387a06cbaaed2d0ab89630ccda4953e6669a3068b51219d999fc510929022032a39a412a91c318bd5649f494ea06f4df8ee97beb93b9c73f585808d1e98f7101feffffff0200196bee000000001976a914bcd457a3dad9a7b6776a7dd03ea57b3c3690f6af88ac00ca9a3b000000001976a9140b86fabbc4946099a7188af68e61b4a53106dfa688ac17000000"
}

このトランザクションはまだブロックに取り込まれていない。

トランザクションの承認

ブロックを生成すると、浮いているトランザクションはブロックに取り込まれる。
トランザクションはブロックに取り込まれたことをもって、承認数が 1 つ増えたとみなされる。

 
ブロックを追加で1つ生成。

$ bitcoin-cli generate 1
[
  "76daf600e9e341c5ee41032972ce5354b17404227d8710f45e004916955abd57" … 新しく生成されたブロックのハッシュ
]

 

$ bitcoin-cli gettransaction 8506dd216598493f435dfa1e7a2be2b34812b69ef45b55cd1630ca1a36e51227
{
  "amount": 0.00000000,
  "fee": -0.00003840,
  "confirmations": 1, … 承認数が1つ増える
  "blockhash": "76daf600e9e341c5ee41032972ce5354b17404227d8710f45e004916955abd57", … トランザクションは最新ブロックに取り込まれた
  "blockindex": 1,
  "blocktime": 1483102359,
  "txid": "8506dd216598493f435dfa1e7a2be2b34812b69ef45b55cd1630ca1a36e51227",
  "walletconflicts": [
  ],
  "time": 1483101895,
  "timereceived": 1483101895,
  "bip125-replaceable": "no",
  "details": [
    {
      "account": "",
      "address": "mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m",
      "category": "send",
      "amount": -10.00000000,
      "label": "koba1",
      "vout": 1,
      "fee": -0.00003840,
      "abandoned": false
    },
    {
      "account": "koba1",
      "address": "mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m",
      "category": "receive",
      "amount": 10.00000000,
      "label": "koba1",
      "vout": 1
    }
  ],
  "hex": "02000000013c32cc0ff09a5ba589aceda24284bdc28f1b7c726ae37e0d85983da7bb062ecd000000004847304402202c682d387a06cbaaed2d0ab89630ccda4953e6669a3068b51219d999fc510929022032a39a412a91c318bd5649f494ea06f4df8ee97beb93b9c73f585808d1e98f7101feffffff0200196bee000000001976a914bcd457a3dad9a7b6776a7dd03ea57b3c3690f6af88ac00ca9a3b000000001976a9140b86fabbc4946099a7188af68e61b4a53106dfa688ac17000000"
}

 
さらにブロックを追加で1つ生成。

$ bitcoin-cli generate 1
[
  "40f85ff9d827a07f0a03a50ee547754465aa5818ab94917269dd0ef2fe9b5e1d"
]

 

$ bitcoin-cli gettransaction 8506dd216598493f435dfa1e7a2be2b34812b69ef45b55cd1630ca1a36e51227
{
  "amount": 0.00000000,
  "fee": -0.00003840,
  "confirmations": 2, … 承認数がさらに1つ増える
  "blockhash": "76daf600e9e341c5ee41032972ce5354b17404227d8710f45e004916955abd57",
  ....
}

 
この状態では listaccounts の引数を省略しても (該当トランザクションの承認数は 1 以上となっているため) koba1 の残高が反映されていることが確認できる。

$ bitcoin-cli listaccounts
{
  "": 139.99996160, … こちらは副次的な効果であるが、2つブロックを生成したため、ブロック生成報酬 50 BTC x 2 が増えた
  "koba1": 10.00000000, … トランザクションの承認数が 1 以上になったため、残高が反映された
  "koba2": 0.00000000
}

再度同じアカウントに対して BTC を送金してみる

再度 koba1 に対して BTC を送金するために koba1 のアドレスを得る。

$ bitcoin-cli getaccountaddress koba1
mzuB7mFtvLq15kb2egwU1WTAPEb4iuEeBW … さきほどの mgZuRhWNWtcB5hasqJw2wQXoZehmRUQk2m は既に受信に使われたので、別の新しいアドレスが返る

 
アカウント koba1 のアドレスに対して 5 BTC を送金。

$ bitcoin-cli sendtoaddress mzuB7mFtvLq15kb2egwU1WTAPEb4iuEeBW 5
38a08e6681d6ff4ad4d717878cbc7c9d8691fe1fe6d36b7d034f49c224470e93 … 生成されたトランザクションID (txid)

 
結果。

$ bitcoin-cli listaccounts 0
{
  "": 134.99991660, … 5 BTC と若干の送金手数料が減った
  "koba1": 15.00000000, … 10 BTC に加えて 5 BTC がさらに増えた
  "koba2": 0.00000000
}

 
トランザクション詳細を確認。

$ bitcoin-cli gettransaction 38a08e6681d6ff4ad4d717878cbc7c9d8691fe1fe6d36b7d034f49c224470e93
{
  "amount": 0.00000000,
  "fee": -0.00004500, … 送金手数料は固定ではないことに注意
  "confirmations": 0, … 承認数はまだ 0
  "trusted": true,
  "txid": "38a08e6681d6ff4ad4d717878cbc7c9d8691fe1fe6d36b7d034f49c224470e93",
  "walletconflicts": [
  ],
  "time": 1483102709,
  "timereceived": 1483102709,
  "bip125-replaceable": "no",
  "details": [
    {
      "account": "",
      "address": "mzuB7mFtvLq15kb2egwU1WTAPEb4iuEeBW",
      "category": "send",
      "amount": -5.00000000,
      "label": "koba1",
      "vout": 1,
      "fee": -0.00004500,
      "abandoned": false
    },
    {
      "account": "koba1",
      "address": "mzuB7mFtvLq15kb2egwU1WTAPEb4iuEeBW",
      "category": "receive",
      "amount": 5.00000000,
      "label": "koba1",
      "vout": 1
    }
  ],
  "hex": "02000000012712e5361aca3016cd555bf49eb61248b3e22b7a1efa5d433f49986521dd0685010000006a4730440220257677adee9c2c3664bd73c69990101eb71f101fb9a3f77bfdc96cc64d92635f02202d9afa844d6717d44b16a4f3ab894239b63e37a5c7e143c05dc09843652c23420121032d5334450da2966cdf2ae81caf4dacae7d434299b1a4d4555fd8476c15711859feffffff026c53cd1d000000001976a9140c66e8f54f1f661b45f8b6371de37777908796c288ac0065cd1d000000001976a914d49e3eab876722c5a0bc69a6ed8f9d6f38b42e2b88ac67000000"
}

 
さらにブロックを生成することによりトランザクションをブロックに取り込む。

$ bitcoin-cli generate 1
[
  "16f961ec6d7781952ddc9fcdc195e1673080fdd1e2383e815ceb1d4f64cf3e05"
]

 
トランザクションの状態を再確認。

$ bitcoin-cli gettransaction 38a08e6681d6ff4ad4d717878cbc7c9d8691fe1fe6d36b7d034f49c224470e93 | head -20
{
  "amount": 0.00000000,
  "fee": -0.00004500,
  "confirmations": 1, … 承認数が 1 増えた
  "blockhash": "16f961ec6d7781952ddc9fcdc195e1673080fdd1e2383e815ceb1d4f64cf3e05",
  "blockindex": 1,
  "blocktime": 1483102830,
  ....

 
結果。(承認数 1 以上のトランザクションが反映された結果)

bitcoin-cli listaccounts
{
  "": 184.99991660, … こちらは副次的な効果であるが、1つブロックを生成したため、ブロック生成報酬 50 BTC が増えた
  "koba1": 15.00000000, … 該当トランザクションの承認数が 1 以上になったため、BTC 残高の増加が反映された
  "koba2": 0.00000000
}

koba1 から koba2 に BTC を送金してみる

アカウント koba2 に対して BTC を送金するために koba2 のアドレスを得る。

$ bitcoin-cli getaccountaddress koba2 … koba2 というアカウント名のアドレスを取得 (無ければ生成される)
mk7GMK2kip2hvHumgWGedjyYN2QuJS5KfC

 
koba1 から koba2 のアドレス mk7GMK2kip2hvHumgWGedjyYN2QuJS5KfC に対して 1 BTC を送金。

$ bitcoin-cli sendfrom koba1 mk7GMK2kip2hvHumgWGedjyYN2QuJS5KfC 1
822c520191883caa18aae86c7c8097844bb86ca4a77aa4fb0f02235df1b274d3 … 生成されたトランザクションID (txid)

 
結果。

$ bitcoin-cli listaccounts 0
{
  "": 184.99991660,
  "koba1": 13.99995480, … 1 BTC と若干の送金手数料が減った
  "koba2": 1.00000000 … 1 BTC 増えた
}

 
実際にはまだ該当トランザクションの承認数は 0 なので listaccounts の引数を省略すると koba2 の BTC 残高は 0 と表示される。

$ bitcoin-cli listaccounts
{
  "": 184.99991660,
  "koba1": 13.99995480,
  "koba2": 0.00000000
}

 
さきほどと同じようにブロックを1つ生成する。これで該当トランザクションの承認数は 1 に増える。(さきほどと同様の内容なのでトランザクション詳細表示は省略)

$ bitcoin-cli generate 1
[
  "1c4e25ded8c047cb861fc0ef7ff82c18ece23992aa02b1dd41cae0133849a69f"
]

 
listaccounts の引数を省略した状態でも koba2 の BTC 残高の増加が反映していることを確認できた。

$ bitcoin-cli listaccounts
{
  "": 234.99991660,
  "koba1": 13.99995480,
  "koba2": 1.00000000
}