所有語言
分享
來源:Bitcoin Magazine;編譯:鄧通,金色財經
契約:通常是一種正式的、莊嚴的、具有約束力的協議。
這個詞已經成為比特幣領域最受關注的詞之一。它們是自切片麵包以來最棒的東西。它們是自原子彈以來最危險的東西。它們實際上不會對比特幣的擴展產生任何影響,但它們很棒。
每個人對它們的態度都完全不同。我們有支持派、反對派和矛盾派。更糟糕的是,坦率地說,“契約”是一個非常模糊的術語,它描述了將被歸類為契約的協議的成熟和具體提案。
提出的不同提案的功能之間的差異程度是巨大的。其中一些為在比特幣之上構建的可能性創造了全新的設計空間,而其他一些嚴格來說根本沒有添加任何新功能,它們只是優化了目前已經可能實現的事情,但具有很大的複雜性和開銷。
讓我們創建一個特定於比特幣的新定義。
契約:任何保證使用契約腳本花費輸入的交易所產生的部分或全部輸出的腳本都必須符合某些特定標準,以使支出交易達到共識有效。
因此,從不太嚴格的意義上講,如果比特幣腳本目前通過要求授權證明(即加密簽名)來限制誰可以使用一枚硬幣,或者何時可以使用,即在時間鎖到期后或使用者可以向哈希显示原像,那麼契約腳本會限制如何使用它,即給誰、給哪個人多少等等。契約腳本甚至可以限制一枚硬幣,使其必須花在另一個契約腳本上。
最後一部分是契約一詞如此有爭議的核心。許多人對添加一種新的“鎖定”比特幣的方式有很大保留,這種方式可以自我傳播並確保未來的硬幣以類似的方式受到限制。許多人擔心這被用來破壞可互換性或建立審查制度。
我覺得有必要指出,這兩件事現在都可以完成,不需要契約腳本功能,只需使用多重簽名即可。任何機構都可以拒絕允許從交易所提款,除非他們使用 2-of-2 多重簽名,該機構持有一個密鑰。從那裡,他們可以簡單地拒絕簽署發送到他們沒有所需密鑰的地址的交易,並以不透明的方式完全在鏈下建立他們想要的任何黑名單或白名單方案。
儘管如此,比特幣用戶仍然需要掌握和理解目前存在的所有不同契約提案之間的權力和靈活性差異。
為了限制比特幣的使用方式,契約尋求實現兩個核心功能,即自省和前向數據傳輸。
自省是指在嘗試使用特定比特幣時檢查正在評估的交易的不同部分的能力。因此,例如,如果您想限制比特幣,使其必須花到特定地址,則必須能夠將輸入的契約腳本中指定的地址與花費該硬幣的交易輸出中指定的地址進行比較。啟用自省的操作碼使我們能夠將支出交易的不同部分與正在評估的腳本中包含的限制進行比較。自省對可以檢查交易的哪些特定部分了解得越詳細,它就越強大。
前向數據傳遞與自省有關,並且在許多方面是自省的結果,它允許您確保某些信息被傳遞並包含在每個新的契約腳本中,以便在下一次評估契約腳本時使用。這是通過使用自省來嚴格限制交易的某些部分來實現的,以至於它們必須包含所需的確切數據,否則它們將無效。您擁有的自省能力越強大,您傳遞數據的靈活性就越高,使用這些數據的靈活性就越高。
這隻是接下來幾周將要發布的一系列文章的第一篇介紹,這些文章將介紹所有處於成熟狀態、最近受到關注或在概念上至關重要以至於開發人員同意其有用性但尚未具體設計的契約提案。這不會 100% 完成,但它會相對全面。其中一些也不是嚴格意義上的契約,但與它們緊密相關。
這些將包括:
檢查模板驗證
來自堆棧的檢查信號
TXHASH
OP_VAULT
檢查合同驗證
貓
調整驗證