Contracts
我可以探勘非最終交易嗎?
我知道非最終交易(未來的鎖定時間和序列號 < MAX_UINT)不會“被礦工接受”。但是,我無法弄清楚確切的行為。
如果我用非最終交易開采了自己的區塊,該區塊是否會被視為有效,即客戶是否會將其添加到他們的鏈副本中,而其他礦工是否會在該區塊之上建構?(我想答案是“不”,否則可能會攻擊合約。)
否。在參考客戶端中,main.cpp 在“AcceptBlock”期間執行此檢查:
// Check that all transactions are finalized BOOST_FOREACH(const CTransaction& tx, block.vtx) if (!IsFinalTx(tx, nHeight, block.GetBlockTime())) return state.DoS(10, error("AcceptBlock() : contains a non-final transaction"), REJECT_INVALID, "bad-txns-nonfinal");
如果它包含非最終交易,它將拒絕您的塊。一個客戶端接受一個塊,該塊包含一個具有未來鎖定時間且序列號小於
std::numeric_limits<unsigned int>::max()
分叉失敗方的交易。