在网络上,每隔一段时间就会生成一个块。该块等效于网络记录簿,该记录簿用于记录一段时间内发生的相关信息。记录已满时,将生成一个新记录。一旦记录了信息,记录簿将通知所有参与者并更新每个人的记录簿。
这些记录最终链接在一起,这就是区块链技术。由于采用了加密技术,如果有人要单方面篡改消息,区块链算法保护机制将验证时间不正确,相关信息将不匹配,其他人将不会更新自己的记录簿。该信息将不起作用。因此,区块链技术比传统的信息存储技术更加安全、透明、信息不可逆。
contract ERC20Basic{
function totalSupply()public view returns(uint256);
function balanceOf(address who)public view returns(uint256);
function transfer(address to,uint256 value)public returns(bool);
event Transfer(address indexed from,address indexed to,uint256 value);
}
contract BasicToken is ERC20Basic{完整逻辑需求开发看我昵称
using SafeMath for uint256;//通过这种方式引用SafeMath更方便
mapping(address=>uint256)balances;
uint256 totalSupply_;
}
function transfer(address _to, uint256 _value) public {
_transfer(msg.sender, _to, _value);
}
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(_value <= allowance[_from][msg.sender]);
allowance[_from][msg.sender] -= _value;
_transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) public
returns (bool success) {
allowance[msg.sender][_spender] = _value;
return true;
}
//此处也存在整数溢出漏洞,但是在_transfer中经过了严格的检查,最后仍然会抛出异常并回退。暂且不考虑
function buy() payable public {
uint amount = msg.value / buyPrice;
_transfer(this, msg.sender, amount);
}
function totalSupply()public view returns(uint256){
return totalSupply_;
}