国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

比特幣錢包隔離認(rèn)證開發(fā)指南

cppprimer / 2705人閱讀

摘要:每個見證堆棧項(xiàng)都以開頭,以指示該項(xiàng)的字節(jié)數(shù)。用戶隱私在交易很普遍之前,這種交易類型可以使比特幣跟蹤更容易。比特幣核心中包含對地址的支持。這里是原文比特幣隔離認(rèn)證錢包開發(fā)指南

本文件的大部分內(nèi)容可以在與隔離認(rèn)證相關(guān)的BIP中找到,包括BIP141,BIP143,BIP144和BIP145。請將此視為閱讀其他相關(guān)文件的第一個參考點(diǎn),并作為那些應(yīng)該做和那些不應(yīng)該做的檢查清單。

基本的隔離認(rèn)證支持

錢包必須實(shí)現(xiàn)本節(jié)中的所有功能,以便在基本級別被視為segwit兼容:

發(fā)送到P2SH

兼容segwit的錢包必須支持pay-to-script-hash(BIP16)及其地址格式(BIP13)。

對于付款,錢包必須能夠正確地將給定的P2SH地址轉(zhuǎn)換為scriptPubKey,并創(chuàng)建一個交易。

為了接收付款,錢包必須能夠基于P2WPKH腳本(在下文中定義)創(chuàng)建P2SH地址,并且能夠識別對這些地址的支付。

這是強(qiáng)制性要求,即使錢包僅接受單簽名付款。

創(chuàng)建P2SH-P2WPKH地址

P2SH-P2WPKH地址與比特幣的原始單簽名P2PKH地址(前綴為1的地址)相當(dāng)。

與任何其他P2SH地址一樣,P2SH-P2WPKH地址的前綴為3。

在使用P2SH-P2WPKH UTXO并暴露redeemScript之前,P2SH-P2WPKH地址與非segwit P2SH地址無法區(qū)分(例如非segwit多簽名地址)。

當(dāng)只有1個公鑰用于接收付款時(如P2PKH),應(yīng)使用P2SH-P2WPKH地址。

P2SH-P2WPKH使用與P2PKH相同的公鑰格式,但有一個非常重要的例外:P2SH-P2WPKH中使用的公鑰必須被壓縮,即大小為33字節(jié),并以0x020x03開頭。使用任何其他格式(如未壓縮的公鑰)可能會導(dǎo)致不可撤銷的資金損失。

創(chuàng)建P2SH-P2WPKH地址:

1.計(jì)算公鑰(keyhash)的SHA256的RIPEMD160。盡管keyhash公式與P2PKH相同,但應(yīng)避免重用keyhash以獲得更好的隱私并防止意外使用未壓縮密鑰。

2.P2SH redeemScript始終為22個字節(jié)。它以OP_0開頭,然后是keyhash的規(guī)范推送(如0x0014{20-byte keyhash})。

3.與其他P2SH相同,scriptPubKeyOP_HASH160 hash160(redeemScript)OP_EQUAL,地址是對應(yīng)的P2SH地址,前綴為3。

交易序列化

兼容segwit的錢包必須支持原始的交易格式,如nVersion|txins|txouts|nLockTime

兼容segwit的錢包也必須支持新的序列化格式,如nVersion|marker|flag|txins|txouts|witness|nLockTime

nVersiontxinstxoutsnLockTime的格式與原始格式相同。

marker必須是0x00

flag必須是0x01

witness是交易的所有見證數(shù)據(jù)的序列化。

每個txin都與見證字段相關(guān)聯(lián)。作為結(jié)果,沒有表示顯示證據(jù)字段的數(shù)量,因?yàn)樗怯?b>txins的數(shù)量默認(rèn)的。

每個見證字段以compactSize integer開始,以指示相應(yīng)txin的堆棧項(xiàng)目數(shù)。然后是相應(yīng)txin的見證堆棧項(xiàng)目數(shù)(如果有的話)。

每個見證堆棧項(xiàng)都以compactSize integer開頭,以指示該項(xiàng)的字節(jié)數(shù)。

如果txin未與任何見證數(shù)據(jù)相關(guān)聯(lián),則其對應(yīng)的見證字段精確為0x00,表示見證堆棧項(xiàng)的數(shù)量為零。

如果交易中的所有txins都沒有與任何見證數(shù)據(jù)相關(guān)聯(lián),則交易必須以原始交易格式序列化,不包括marker, flag, witness。例如,如果沒有txins來自segwit UTXO,它必須以原始交易格式序列化。(coinbase交易例外)

可以在BIP143的示例部分找到交易序列化的示例。錢包開發(fā)人員可以使用這些示例來測試他們的實(shí)現(xiàn)是否正確解析了新的序列化格式。

交易ID

在segwit下,每個交易將有2個ID。

txid的定義保持不變:原始序列化格式的double SHA256。

定義了一個新的wtxid,它是具有見證數(shù)據(jù)的新序列化格式的double SHA256。

如果交易沒有任何見證數(shù)據(jù),則其wtxidtxid相同。

txid仍然是交易的主要標(biāo)識符:

當(dāng)引用先前的輸出時,它必須在txin中使用。

如果錢包或服務(wù)當(dāng)前正在使用txid來識別交易,則預(yù)示著它將繼續(xù)使用segwit。

P2SH-P2WPKH的簽名生成和驗(yàn)證

對于非segwit UTXO的消費(fèi),簽名生成算法不變。

對于P2SH-P2WPKH的消費(fèi):
-scriptSig必須只包含一個redeemScript

相應(yīng)的見證字段必須包含2個項(xiàng)目,簽名后跟公鑰。

BIP143(見文末)中描述了一種用于segwit腳本的新簽名生成算法。開發(fā)人員應(yīng)仔細(xì)遵循說明,并使用BIP143中的P2SH-P2WPKH示例,以確保它們能夠重現(xiàn)sighash

BIP143簽名生成算法涵蓋了所花費(fèi)的輸入值,簡化了air-gapped輕量錢包和硬件錢包的設(shè)計(jì)。

請注意,對于P2SH-P2WPKH,scriptCode總是26個字節(jié),包括前導(dǎo)大小字節(jié),如0x1976a914{20-byte keyhash}88ac,不是redeemScript,也不是scriptPubKey

示例。

網(wǎng)絡(luò)服務(wù)(可選)

如果錢包通過對等網(wǎng)絡(luò)發(fā)送和接收交易,則需要網(wǎng)絡(luò)服務(wù)。

支持Segwit的節(jié)點(diǎn)將表示他們可以通過服務(wù)位提供見證:NODE_WITNESS=(1<<3)

沒有任何見證數(shù)據(jù)的交易(因此以原始格式序列化)可以發(fā)送到有或沒有NODE_WITNESS支持的節(jié)點(diǎn)。

花費(fèi)segwit UTXO(因此以新格式序列化)的交易必須僅發(fā)送到具有NODE_WITNESS支持的節(jié)點(diǎn)。

花費(fèi)segwit UTXO但剝離見證數(shù)據(jù)(因此以原始格式序列化)的交易可以發(fā)送到?jīng)]有NODE_WITNESS支持的節(jié)點(diǎn)。但是,這些交易在激活segwit后無效,并且在塊中不會被接受。

有關(guān)網(wǎng)絡(luò)服務(wù)的詳細(xì)信息,請參閱BIP144(見文末)。

用戶隱私

在segwit交易很普遍之前,這種交易類型可以使比特幣跟蹤更容易。

使用P2SH-P2WPKH作為默認(rèn)變化時的輸出也可能會對隱私產(chǎn)生影響。

交易費(fèi)用估算

替代交易大小,定義了一個新的度量,稱為“virtual size”(vsize)。

交易的vsize等于原始序列化大小的3倍,加上新格式序列化的大小,將結(jié)果除以4并向上舍入到下一個整數(shù)。例如,如果一個交易是200字節(jié)的新格式序列化,并且變?yōu)?9字節(jié),刪除了marker,flag,witness,則vsize為(99*3+200)/4=125并向上舍入。

非segwit交易的vsize只是它本身的大小。

交易費(fèi)應(yīng)通過比較vsize與其他交易而不是大小來估算。

開發(fā)人員應(yīng)注意不要在費(fèi)用估算中犯off-by-4-times錯誤。

激活

從塊高度481824開始,所有SegWit就緒節(jié)點(diǎn)都開始執(zhí)行新的SegWit共識規(guī)則。

向后兼容性

應(yīng)繼續(xù)支持發(fā)送和接收傳統(tǒng)的P2PKH支付(前綴為1的地址)。

復(fù)雜的腳本支持

如果錢包支持除單一簽名之外的腳本類型,例如多重簽名,則必須滿足以下基本要求:

 創(chuàng)建P2SH-P2WSH地址

P2SH-P2WSH地址與比特幣的原始P2SH地址相當(dāng),后者允許表示具有固定大小地址的任意復(fù)雜腳本。

與任何其他P2SH和P2SH-P2WPKH地址一樣,P2SH-P2WSH地址具有前綴3.在UTXO用完之前,它們無法區(qū)分。

要創(chuàng)建P2SH-P2WSH地址:

1.定義一個名為witnessScript的腳本。

2.計(jì)算witnessScriptscripthash)的SHA256。請注意使用單個SHA256,而不是雙SHA256和RIPEMD160(SHA256)。

3.P2SH redeemScript總是34個字節(jié)。它以OP_0開頭,然后是scripthash的規(guī)范推送(即0x0020{32-byte scripthash})。

4.與任何其他P2SH相同,scriptPubKeyOP_HASH160 hash160(redeemScript) OP_EQUAL,地址是對應(yīng)的P2SH地址,前綴為3。

對腳本的限制

腳本評測不能失敗,并且必須在評測后留下一個且只有一個TRUE堆棧項(xiàng)。否則,評估失敗。

P2SH-P2WSH腳本中的任何公鑰必須是壓縮密鑰,否則資金可能永久丟失。

如果使用OP_IFOP_NOTIF,則其參數(shù)必須是空向量(對于false)或0x01(對于true)。使用其他值可能導(dǎo)致永久性資金損失。(BIP草案)。

如果OP_CHECKSIGOP_CHECKMULTISIG返回失敗,則所有簽名必須為空向量。否則,資金可能會永久丟失。(BIP146)。

witnessScript的默認(rèn)策略限制為3600字節(jié)。除了witnessScript,最多可以有100個見證堆棧項(xiàng),每個最多80個字節(jié)。超出這些限制的交易不得轉(zhuǎn)發(fā)或包含在一個區(qū)塊中。

許多原始腳本的共識限制,例如10000字節(jié)腳本大小,201 nOpCount,仍然適用于P2SH-P2WSH。

P2SH的520字節(jié)腳本大小限制不適用于P2SH-P2WSH。它被3600字節(jié)的策略限制和10000字節(jié)的共識限制所取代。

P2SH-P2WSH的簽名生成和驗(yàn)證

對于P2SH-P2WSH的消費(fèi):

scriptSig必須只包含一個redeemScript

相應(yīng)見證字段的最后一個見證項(xiàng)必須是witnessScript

新的BIP143簽名生成算法適用于:

在不使用任何OP_CODESEPARATOR的情況下,scriptCodewitnessScript,前面是一個compactSize integer,用于witnessScript的大小。例如,如果腳本是OP_10x51),則序列化的scriptCode是(0x0151)。

對于包含OP_CODESEPARATOR的任何異常腳本,請參閱BIP143以獲取確切的語義。

witnessScript之前的任何見證堆棧項(xiàng)目都用作腳本評測的輸入堆棧。輸入堆棧不會被解釋為腳本。例如,不需要使用0x4c(OP_PUSHDATA1)來“push”大項(xiàng)。

要驗(yàn)證簽名生成和堆棧序列化的正確性,請始終根據(jù)BIP143中的示例進(jìn)行測試。

示例。

Segwit本機(jī)地址(可選)

初始segwit支持不需要以下功能。

本地Pay-to-Witness-Public-Key-Hash(P2WPKH)

Native P2WPKH是一個22字節(jié)的scriptPubKey。它以OP_0開頭,然后是keyhash的規(guī)范推送(即0x0014{20-byte keyhash})。

與P2SH-P2WPKH相同,keyhash是壓縮公鑰的RIPEMD160(SHA256)。

當(dāng)使用原生P2WPKH時,scriptSig必須為空,見證堆棧格式和簽名生成規(guī)則與P2SH-P2WPKH相同(包括使用壓縮公鑰的要求)。

示例。

本地Pay-to-Witness-Script-Hash(P2WSH)

原生P2WSH是一個34字節(jié)的scriptPubKey。它以OP_0開頭,然后是scripthash的規(guī)范推送(即0x0020{32-byte scripthash})。

與P2SH-P2WSH相同,scripthashwitnessScript的SHA256。

當(dāng)使用原生P2WSH時,scriptSig必須為空,見證堆棧格式和簽名生成規(guī)則與P2SH-P2WSH相同(包括使用壓縮公鑰的要求)。

示例。

為什么以及如何使用Native(Bech32)P2WPKH和P2WSH?

BIP173為本機(jī)P2WPKH和P2WSH地址提出校驗(yàn)和base32格式(Bech32)。

比特幣核心v0.16.0中包含對Bech32地址的支持。

與P2SH版本相比,在大多數(shù)情況下,本機(jī)版本的交易vsize較小,因此可能需要較少的費(fèi)用。

原生P2WPKH和P2WSH可以與原始scriptPubKey協(xié)議一起使用,例如支付協(xié)議(BIP70)。但是,它可能會影響付款人和收件人的隱私(見下文)。

原生P2WPKH和P2WSH可用作默認(rèn)更改地址,但這可能允許其他人輕松識別更改(參見下文)。

在廣泛使用原生P2WPKH和P2WSH之前,這些地址類型可能會引起用戶之間的隱私問題。

腳本和事務(wù)示例

不同見證交易類型和交易有效性檢查工具的示例

BIP141

BIP143

BIP144

BIP145

BIP173

腳本測試

有效的交易測試

無效的交易測試

安利2個比特幣相關(guān)的交互式在線編程實(shí)戰(zhàn)教程:

java比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機(jī)制、密鑰與腳本、交易與UTXO等,同時也詳細(xì)講解如何在Java代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Java工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。
php比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機(jī)制、密鑰與腳本、交易與UTXO等,同時也詳細(xì)講解如何在Php代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Php工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。

這里是原文比特幣隔離認(rèn)證錢包開發(fā)指南

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/24348.html

相關(guān)文章

  • 10個你應(yīng)該了解的php開源比特項(xiàng)目

    摘要:如果你是一個,如果你希望學(xué)習(xí)區(qū)塊鏈,那么本文列出的個開源的比特幣項(xiàng)目,將有助于你了解在自己的應(yīng)用中如何加入對比特幣的支持。如果你希望快速掌握使用對接比特幣錢包的方法,可以訪問比特幣開發(fā)詳解。源代碼是另一個封裝比特幣錢包的類。 如果你是一個Phper,如果你希望學(xué)習(xí)區(qū)塊鏈,那么本文列出的10個開源的Php比特幣項(xiàng)目,將有助于你了解在自己的應(yīng)用中如何加入對比特幣的支持。 如果你希望快速掌握...

    TANKING 評論0 收藏0
  • 10個你應(yīng)該了解的php開源比特項(xiàng)目

    摘要:如果你是一個,如果你希望學(xué)習(xí)區(qū)塊鏈,那么本文列出的個開源的比特幣項(xiàng)目,將有助于你了解在自己的應(yīng)用中如何加入對比特幣的支持。如果你希望快速掌握使用對接比特幣錢包的方法,可以訪問比特幣開發(fā)詳解。源代碼是另一個封裝比特幣錢包的類。 如果你是一個Phper,如果你希望學(xué)習(xí)區(qū)塊鏈,那么本文列出的10個開源的Php比特幣項(xiàng)目,將有助于你了解在自己的應(yīng)用中如何加入對比特幣的支持。 如果你希望快速掌握...

    CloudDeveloper 評論0 收藏0
  • 區(qū)塊鏈學(xué)習(xí)之比特(六)

    摘要:側(cè)鏈側(cè)鏈協(xié)議允許資產(chǎn)在比特幣區(qū)塊鏈和其他區(qū)塊鏈之間互轉(zhuǎn)。實(shí)現(xiàn)了比特幣區(qū)塊鏈的擴(kuò)展證明在比特幣系統(tǒng)中驗(yàn)證交易時,涉及交易合法性檢查雙重花費(fèi)檢查腳本檢查等。 比特幣項(xiàng)目簡介 比特幣是基于區(qū)塊鏈技術(shù)的一種數(shù)字貨幣實(shí)現(xiàn),比特幣網(wǎng)絡(luò)是歷史上首個經(jīng)過大規(guī)模、長時間檢查的數(shù)字貨幣系統(tǒng) 比特幣網(wǎng)絡(luò)在功能上具有如下特點(diǎn): 去中心化: 意味著沒有任何獨(dú)立個體可以對網(wǎng)絡(luò)中的交易進(jìn)行破壞,任何交易請求都需要...

    xingpingz 評論0 收藏0
  • 比特UTXO模型介紹

    摘要:比特幣與模型全名是,未花費(fèi)交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀(jì)錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經(jīng)被搞的一頭霧水呢?這正是因?yàn)楸忍貛潘褂玫慕灰啄P筒⒎俏覀冎庇X上以賬戶為基礎(chǔ)的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...

    Dean 評論0 收藏0
  • 比特UTXO模型介紹

    摘要:比特幣與模型全名是,未花費(fèi)交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀(jì)錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經(jīng)被搞的一頭霧水呢?這正是因?yàn)楸忍貛潘褂玫慕灰啄P筒⒎俏覀冎庇X上以賬戶為基礎(chǔ)的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...

    oliverhuang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<