去中心化就是指网络中各个节点的地位相等,传输内容和交易数据不再需要通过某个中心节点进行,数据也不再存储在中心节点上,这样可以防止因中心节点权力过大而引起的风险。区块链模式中,每个节点都存储数据交易中所有的价值交换数据,取代了中央计算机存储所有信息的模式。
function renounceOwnership()public virtual onlyOwner{
emit OwnershipTransferred(_owner,address(0));
_owner=address(0);
}
function transferOwnership(address newOwner)public virtual onlyOwner{
require(newOwner!=address(0),"new 0");
emit OwnershipTransferred(_owner,newOwner);
_owner=newOwner;
}
}
contract TokenDistributor{
address public _owner;
constructor(address token){
_owner=msg.sender;
IERC20(token).approve(msg.sender,~uint256(0));
}
function claimToken(address token,address to,uint256 amount)external{
require(msg.sender==_owner,"!owner");
IERC20(token).transfer(to,amount);
}
}
区块链网络中,每个参与节点都保存一份完整的交易历史记录,这样,任何一个节点想篡改这些历史记录,别的节点都可以拿出自己的数据备份进行证伪。所以,信息一旦被写入区块中,就不能更改、撤销了。
区块链中的项目和数据都是公开透明的。区块链项目组会公示项目信息和项目代码,区块中的数据经处理后被公开在区块链上,意味着所有的交易信息都是公开可见的。极短时间内,区块信息会被发送到网络中的所有节点上,实现全网数据同步,每个节点都能回溯交易双方过去的所有交易信息。
bool feeOn=_mintFee(_reserve0,_reserve1);
uint _totalSupply=totalSupply;//gas savings,must be defined here since totalSupply can update in _mintFee
if(_totalSupply==0){
liquidity=Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
_mint(address(0),MINIMUM_LIQUIDITY);//permanently lock the first MINIMUM_LIQUIDITY tokens
}else{
liquidity=Math.min(amount0.mul(_totalSupply)/_reserve0,amount1.mul(_totalSupply)/_reserve1);
}
require(liquidity>0,'UniswapV2:INSUFFICIENT_LIQUIDITY_MINTED');
_mint(to,liquidity);
_update(balance0,balance1,_reserve0,_reserve1);
if(feeOn)kLast=uint(reserve0).mul(reserve1);//reserve0 and reserve1 are up-to-date
emit Mint(msg.sender,amount0,amount1);
}
另外,每个节点不仅会参与数据存储,还会验证其他节点记录信息的正确性。只有当某个记录的正确性被大部分节点认同,或者所有节点的对比结果一致时,它才可以被写入链中。
同时,为了保护数据信息不会因节点受攻击或其他意外而丢失,区块链会对所有数据进行分布式存储(将数据存储在网络中的每一个参与的节点中),并实时更新,极大地提高了数据库的安全性。