ブロックチェーンについて復習します
これを読めばサルでもわかるかも?
1604 views
「トランザクション」とはどの金額が、どのように送金されたのか表現するデータのこと。
トランザクションデータ自体には、個人を特定するデータは含まない。
しかし、秘密鍵や公開鍵を用いた電子署名を使うことで、所有権を証明するんや。
ブロックチェーンは、ブロック同士が数珠つなぎになり、前後で依存関係を持つことで、全体の整合性を保つ。トランザクションデータも同じく数珠つなぎにする構造やで。
[入力]
import requests
APIURL = "https://blockchain.info/rawtx/"
#TXID = "0e942bb178dbf7ae40d36d238d559427429641689a379fc43929f15275a75fa6"
TXID = "0e942bb178dbf7ae40d36d238d559427429641689a379fc43929f15275a75fa6"
r = requests.get(APIURL + TXID + "?format=hex")
print(r.text)
[出力]
010000000245d50a313eb89a71bb501380334e58973b7b3c0fb4614f8645d07d728b8574aa010000008c493046022100b3c7f1c56384c6145673b94fa226af8d02a263a1ed9f3505fdf0e94cc681193e022100d677eb3cbb9b82da961626ccfdc31a6041195123ae236b5ed1a34250c4163e73014104545e7c6d2acc161567860039bc3068d4af5432b1afe34d2909bf8996b95c10a6445692bc3f458a0503c45084f99329d5e90d84f21a52a5d11add62eb26340db2ffffffff49de1cd30c20d1f22a2e966b0d195d20b0f133e8de426f7d1610525a64a09daf000000008b483045022100d4ea6ce46296548d38f02da337daebef00f443134f3b68f4ad8946a961728b0402207573dc96e324037d1934fa5105a517608364a2b273e694dce53714745fa135f4014104e89667c1c2cf4eb91324debcc7742b8eb22406c59d6033794124efb7cce37b78ddd5e3c3474aeb9dbf7689c9d36d776b7d21debe4d75142cb43a2529fb3a6da4ffffffff0100286bee000000001976a914c1ac9042b50a9d2e7a6a1b42bad66e61a9ec3f6b88ac00000000
[入力]
import requests
APIURL = "https://blockchain.info/rawtx/"
#TXID = "0e942bb178dbf7ae40d36d238d559427429641689a379fc43929f15275a75fa6"
TXID = "0e942bb178dbf7ae40d36d238d559427429641689a379fc43929f15275a75fa6"
r = requests.get(APIURL + TXID )
print(r.text)
[出力]
{
"ver":1,
"inputs":[
{
"sequence":4294967295,
"witness":"",
"prev_out":{
"spent":true,
"spending_outpoints":[
{
"tx_index":0,
"n":0
}
],
"tx_index":0,
"type":0,
"addr":"1BNZJx7pM4GTqe8MgEZoji2fUS3fKnJH2i",
"value":500000000,
"n":1,
"script":"76a91471c4f6b0f56fef3cbdbae6f297631a27ab159f9888ac"
},
"script":"493046022100b3c7f1c56384c6145673b94fa226af8d02a263a1ed9f3505fdf0e94cc681193e022100d677eb3cbb9b82da961626ccfdc31a6041195123ae236b5ed1a34250c4163e73014104545e7c6d2acc161567860039bc3068d4af5432b1afe34d2909bf8996b95c10a6445692bc3f458a0503c45084f99329d5e90d84f21a52a5d11add62eb26340db2"
},
~~~以下省略~~~
UTXOとは、未使用のトランザクションアウトプットの意味やで。
UTXOは複数に分割することができん。
イメージは千円札を半分に切っても500円にならないのと一緒や。
ユーザーが送金を行い、トランザクションを組成するとき、UTXOをかき集め、支払いたい金額より大きくなるようにするんや。(7500円払うために10000円札出すようなもの。)
この時、支払い額より多かったらおつり分を新しいUTXOでもらえるで
ブロックチェーンにおける残高を管理する方法は
の二つがある。
[長所]
[短所]
[長所]
[短所]
報酬を獲得する取引を「コインベース取引」という。
例えば、マイニングに成功したマイナーはマイニング報酬を得るとかやな。
トランザクションはinputとoutputが連鎖する。
その始点がコインベース取引やで。
コインベース取引の特徴は「input」の値を持たない。
つまり、消費するUTXOを持たないただ一つのトランザクションやで。
※UTXOは合計の値が増加するタイミング
スクリプト言語とは、スタックと呼ばれるデータ構造を利用した言語や。
LIFO形式。
ビットコインで使用する言語
ステートレスという特徴を持つんやで。
トランザクションには3つの種類がある
方式 | 説明 |
---|---|
P2PKH(pay-to-public-key-hash) | 公開鍵のハッシュ値をLocking |
P2PK(pay-to-public-key) | 公開鍵をLocking scriptに配置 |
P2SH(pay-to-secret-hash) | 複雑なスクリプトをハッシュ値でシンプルにする |
P2PKH方式は2019年時点でよく使われる。
outputに公開鍵のハッシュ値が配置される。
比較的古い方式やで
新しい方式でより複雑な取引を扱うことができるんやで。
Page 8 of 9.
owl
駆け出しエンジニア
だいたいweb系をかじってる
最近ちょとブロックチェーンに興味出てきた