智能合约看上去就是一段计算机执行程序,满足可准确自动执行即可。那么为什么用传统的技术很难实现,而需要用区块链技术等新技术呢?
传统技术即使通过软件限制、性能优化等方法,也无法同时实现区块链的以下特性:
1、数据无法删除、
2、去中心化
基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。
//returns sorted token addresses,used to handle return values from pairs sorted in this order
//两个地址排序
function sortTokens(address tokenA,address tokenB)internal pure returns(address token0,address token1){
require(tokenA!=tokenB,'UniswapV2Library:IDENTICAL_ADDRESSES');
(token0,token1)=tokenA<tokenB?(tokenA,tokenB):(tokenB,tokenA);
require(token0!=address(0),'UniswapV2Library:ZERO_ADDRESS');
}
//calculates the CREATE2 address for a pair without making any external calls
//计算交易对地址,注意这个init code hash...这是个坑
function pairFor(address factory,address tokenA,address tokenB)internal pure returns(address pair){
(address token0,address token1)=sortTokens(tokenA,tokenB);
pair=address(uint(keccak256(abi.encodePacked(
hex'ff',
factory,
keccak256(abi.encodePacked(token0,token1)),