btcd checkScript的時(shí)間點(diǎn)

在checkConnectBlock(...)方法中,找到了如下的判斷規(guī)則: 如果當(dāng)前處于某個(gè)checkpoint范圍內(nèi)并且當(dāng)前需要檢測(cè)的區(qū)塊高度比這個(gè)chekpoint的高度低,則認(rèn)為這是一個(gè)安全的區(qū)塊,不進(jìn)行script的校驗(yàn)。

    // Don't run scripts if this node is before the latest known good
    // checkpoint since the validity is verified via the checkpoints (all
    // transactions are included in the merkle root hash and any changes
    // will therefore be detected by the next checkpoint).  This is a huge
    // optimization because running the scripts is the most time consuming
    // portion of block handling.
    checkpoint := b.LatestCheckpoint()
    runScripts := true
    if checkpoint != nil && node.height <= checkpoint.Height {
        runScripts = false
    }

        ....

        // 下面提到ECDSA signature 檢查是非常耗費(fèi)CPU資源的。
    // Now that the inexpensive checks are done and have passed, verify the
    // transactions are actually allowed to spend the coins by running the
    // expensive ECDSA signature check scripts.  Doing this last helps
    // prevent CPU exhaustion attacks.
    if runScripts {
        err := checkBlockScripts(block, view, scriptFlags, b.sigCache,
            b.hashCache)
        if err != nil {
            return err
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容