Development
為什麼沒有用於查詢區塊鏈並將數據檢索到堆棧的 OP_CODE?
區塊鏈數據是不可變的,因此一旦有效,交易將始終有效,全節點可以對其進行驗證。
我認為擁有這些將是一個糟糕的想法有幾個原因。
- 可擴展性。如果腳本可以訪問區塊鏈的任意部分,則完全驗證節點將需要(快速!)訪問整個鏈。目前情況並非如此——完全驗證節點不需要完整的鏈,而只需要一個包含未使用交易輸出的小型數據庫(小於 3 GiB,並且增長速度要慢得多)。
- 記憶體池管理。如果腳本的有效性取決於區塊鏈的狀態,則未確認的交易可能會被新區塊無效。可以建構這些假設的區塊鏈檢查操作碼,以便新塊永遠不會使事物無效(例如,只有從塊中獲取的操作碼,如果未找到該塊,則立即導致腳本失敗)。但是,即使在這種情況下,有效性也可能會受到重組的影響。這實際上意味著每次重組後都需要重新驗證整個記憶體池。
- 可替代性。與前一點相關的是,甚至深度大於 1 的重組可能會影響已確認交易的有效性。這意味著錢包軟體在接受有效性取決於區塊鏈狀態的交易時需要格外小心,因為即使發送者完全誠實,重組也有更大的機會消除它們。現在的交易並非如此——在重組期間刪除的交易總是可以在新分支的新塊中重新接受。