智能合约是一种特殊协议,旨在提供验证及执行合约。具体来说,智能合约是***被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。
智能合约是存储在***节点中的一段代码案例I8I流程**259I技术3365过程代码的逻辑定义了合约的规则
智能合约运行在分享的、复制的账本上,可以处理信息,接收、存储和发送价值
***存储的是状态,智能合约是***用于状态转换的方式
每个交易对创建流动性。
function mint(address to) external lock returns (uint li) {
因为在调用mint函数之前,在addLi函数已经完成了转账,所以,从这个函数的角度,两种代币数量的计算方式如下
:
uint balance0 = IERC20(token0).balanceOf(address(this));
uint balance1 = IERC20(token1).balanceOf(address(this));
uint amount0 = balance0.sub(_reserve0);
uint amount1 = balance1.sub(_reserve1);
当前的balance是当前的reserve加上注入的流动性的代币数量。
uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
if (_totalSupply == 0) {
li =rt(amount0.mul(amount1)).sub(MINIMUM_LI);
_mint(address(0), MINIMUM_LI); // permanently lock the first MINIMUM_LI tokens
} else {
li = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
}
_mint(to, li);
智能合约的作用
智能合约并不只是一个可以自动执行的计算机程序,也是一个系统参与者,它可以对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。
智能合约就像一个可以被信任的人,可以临时保存资产,总是按照事先的规则执行操作。
智能合约被部署在分享的、复制的账本上,可以维持自己的状态,控制自己的资产和对接收到的外界信息或者资产进行回
应。
function implementation() public view returns (address);
function() external payable {
address _impl = implementation();
require(_impl != address(0), "implementation contract not set");
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize)
let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
let size := returndatasize
returndatacopy(ptr, 0, size)
switch result
case 0 { revert(ptr, size) }
default { return(ptr, size) }
}
}