区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。
该技术方案主要让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块(block),每个数据块中包含了一定时间内的系统全部信息交流数据,并且生成数据指纹用于验证其信息的有效性和链接(chain)下一个数据库块。
智能合约事实上是由计算机代码构成的一段程序,其缔结过程是:第一步,参与缔约的双方或多方用户商定后将共同合意制定成一份智能合约;
第二步,该智能合约通过区块链网络向全球各个区块链的支点广播并存储;
第三步,构建成功的智能合约等待条件达成后自动执行合约内容。
Uniswap V1中ERC20代币的相互兑换主要是以ETH为中介进行,也就是说其中一种ERC20代币兑换成ETH,再由ETH兑换成目标ERC20代币
#notice Convert Tokens(self.token)to Tokens(token_addr).
#dev User specifies exact input and minimum output.
#param tokens_sold Amount of Tokens sold.支付的代币数量
#param min_tokens_bought Minimum Tokens(token_addr)purchased.购买的代币的最小值
#param min_eth_bought Minimum ETH purchased as intermediary.作为中介的ETH的最小值
#param deadline Time after which this transaction can no longer be executed.
#param token_addr The address of the token being purchased.目标代币的ERC20合约地址
#return Amount of Tokens(token_addr)bought.最终购买的代币数量
#根据输入的代币数量兑换相应数量的目标代币
public
def tokenToTokenSwapInput(tokens_sold:uint256,min_tokens_bought:uint256,min_eth_bought:uint256(wei),deadline:timestamp,token_addr:address)->uint256:
#获得目标代币的兑换合约地址
exchange_addr:address=self.factory.getExchange(token_addr)
return self.tokenToTokenInput(tokens_sold,min_tokens_bought,min_eth_bought,deadline,msg.sender,msg.sender,exchange_addr)
#notice Convert Tokens(self.token)to Tokens(token_addr)and transfers
#Tokens(token_addr)to recipient.
#dev User specifies exact input and minimum output.
#param tokens_sold Amount of Tokens sold.支付的代币数量
#param min_tokens_bought Minimum Tokens(token_addr)purchased.购买的代币的最小值
#param min_eth_bought Minimum ETH purchased as intermediary.作为中介的ETH的最小值
#param deadline Time after which this transaction can no longer be executed.