btcd checkScript的时间点

在checkConnectBlock(...)方法中,找到了如下的判断规则: 如果当前处于某个checkpoint范围内并且当前需要检测的区块高度比这个chekpoint的高度低,则认为这是一个安全的区块,不进行script的校验。

    // 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 检查是非常耗费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
        }
    }

你可能感兴趣的:(btcd checkScript的时间点)