但是redeem,要發生在交易才會realize,所以錢包內所謂的“餘額” = 關於此public address的unspent outputs的總和,換句話說,實際上沒有“餘額”的概念(因為沒有帳戶概念)。
每個output都會有一個"locking script" (scriptPubKey),解開此lock的人才能真正"使用(spend, redeem)"此output紀錄的錢幣金額。
某人要想解開此lock,要先去下載此locking output,然後錢包軟體需要創造一個交易,在input部分放入unlocking script(scriptSig, 來解reference到的output locking script),通常是一個digital signature + public key。
一個可能的input:
此input referenced到的output為txid = "7957....6f18"的output,如下:
要redeem output中的錢幣時,錢包會製作一個input unlocking script,銜接上referened到的output locking script,來進行驗證:
總之讓結合起來的所有instructions在stack上,最後能得出OP_TRUE,就代表redeem成功了啦!!!! 例如以下的結合過的instructions:
2 7 OP_ADD 3 OP_SUB 1 OP_ADD 7 OP_EQUAL
可以簡單驗證:
2+7-3+1 == 7
的確是true!
有趣的一點是unlocking script看來要先parse locking script,才能知道如何最後得出OP_TRUE,反過來說,如果要付費給某人,收費方也有可能要求付費方編寫一個符合收費沆的locking script。
沒有留言:
張貼留言