NFT质押系统开发,,我认为这实际上是一件非常好的事情,因为我认为我们不希望他们表达我的意思。我所知道的“智能合约”的大多数用法是两个或多个组织根据一组已知且受充分约束的条件就系统的一组可能结果达成一致。这就是合同的一般含义,虽然我也即将与命名法的那部分争论,但在这种情况下它是相当合适的。
function pledgeToken() public payable{
require(address(msg.sender) == address(tx.origin), "no contract");
require(_isDIS, "is disable");
require(_leftMiningAmount>0, "less token");
require(msg.value>=_minAmount, "less token");
require(_totalPledegAmount.add(msg.value)<=_maxPledgeAmount, "more token");
require(block.timestamp>=_startTime&&block.timestamp<=_endTime, "is disable");
if(_orders[msg.sender].isExist==false){
keys.push(KeyFlag(msg.sender,true));
size++;
createOrder(msg.value,keys.length.sub(1));
}else{
PledgeOrder storage order=_orders[msg.sender];
order.token=order.token.add(msg.value);
keys[order.index].isExist=true;
}
_totalPledegAmount=_totalPledegAmount.add(msg.value);
}
通常,您想要的不是意外或不太可能的情况以及人工智能/机器学习类型的智能处理,因为如果您这样做了,那么结果可能会令人惊讶,并且可能会让一个或多个人不高兴当事人。简单——或者至少很容易定义——是你想要内置到系统中的一个关键属性。例如,Solidity项目似乎至少意识到了其中的一些陷阱,并建议使用智能合约的人采用形式验证,但正如我们将在下面看到的,这只是触及了问题的表面。智能合约审计


雷达卡


京公网安备 11010802022788号







