LoginSignup
14
12

More than 5 years have passed since last update.

ビットコインのブロックチェーンから入金確認をする

Last updated at Posted at 2016-01-27

ブロックチェーンから入金確認

入金確認し残高を反映するにはデータベースが必要になります。

用語

UTXO

  • unspent transaction output
  • 未使用トランザクション出力

まだ支払いに使っていないトランザクションのこと。
(ビットコインではこれを合計したものが残高です)

TXID

  • transaction id
  • トランザクションID

トランザクションにつけられたID

VOUT

  • value out
  • 出力

トランザクション内の出力番号。
一つのトランザクションで複数のアドレスへ送金できるため
トランザクション内の送金番号のようなもの。

入金のフロー

  • ビットコインのアドレスに着金したUTXOがあるか確認
  • UTXOが存在したらTXIDとVOUTで複合キーまたはユニークIDを作り未承認状態としてデータベースに登録する
  • データベースにTXIDとVOUTが存在していたら登録しない
  • TXIDで取得したトランザクションが承認されたか確認し承認されたら承認状態とし残高に反映する
  • 承認されなかった場合はエラー状態にする

※TXIDは入金の主キーとして使うことはできないので気をつける。
※承認されなかった場合とはトランザクションがTXIDで取得できなくなること。(複数のブロックエクスプローラを参照している場合は片方届いてもう片方届いてない場合もあるので時間差も考慮する)

UTXOのサンプル

insightへアクセスする

https://insight.bitpay.com/api/addr/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX/utxo

入金があれば以下のようなUTXOが得られる

[
{
 "address":"12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
 "txid":"a162df9f7653ad982e8f630c95c7f7c2bd42d38a1fd4ec4588f611fab4d19b53",
 "vout":5,
 "scriptPubKey":"76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
 "amount":0.0002023,
 "satoshis":20230,
 "height":417969,
 "confirmations":1666
},{
 "address":"12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
 "txid":"99d1be2407a19c0bfd5909d7a70cf7267877eaaf1987dc8789efeedb5a6993ad",
 "vout":1,
 "scriptPubKey":"76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac",
 "amount":0.000055,
 "satoshis":5500,
 "height":411497,
 "confirmations":8138
}
]
14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12