区块链(blockchain)中将上一个区块的信息数据传递给下一个区块,是通过哈希(Hash)算法完成的。哈希算法也叫“安全散列函数”,又称信息摘要。区块链使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值,以此类推,一个个包含哈希值的区块串连起来,形成一条区块链。哈希算法是区块链的底层技术,其上述特性赋予了区块链技术的可靠性。
current_value=my_token.price(balance)
target_value=2*current_value
while True:
value_now=my_token.price(my_token.balance())
if value_now>=target_value:
my_token.sell(my_token.balance(),slippage=0.1,speed=1.5)
break
time.sleep(1)
consumed_token_address设置所支付的代币的erc20合约地址。
consumed_token_amount:设置所支付的代币数量。
slippage:设置所能容忍的滑点,默认为百分之一。
timeout:设置该笔交易的超时时间。
speed:设置该笔交易的区块确认速度,通过平均的gas_price乘以speed设置该笔交易的gas_price,所以speed的值越大,gas_price也越大,使得该笔交易的确认速度也越快。
def buy(self,consumed_token_amount,consumed_token_address=ETH_ADDRESS,slippage=0.01,timeout=900,speed=1):
gas_price=int(self.web3.eth.gasPrice*speed)
consumed_token_address=Web3.toChecksumAddress(consumed_token_address)
received_amount=self.received_amount_by_swap(consumed_token_amount,consumed_token_address)
min_out=int(received_amount*(1-slippage))
if consumed_token_address==self.ETH_ADDRESS:
func=self.router.functions.swapExactETHForTokens(min_out,[consumed_token_address,self.address],
self.wallet_address,int(time.time()+timeout))
params=self.create_transaction_params(value=consumed_token_amount,gas_price=gas_price)
else:
if not self.is_approved(consumed_token_address,consumed_token_amount):
self.approve(consumed_token_address,gas_price=gas_price,timeout=timeout)
func=self.router.functions.swapExactTokensForTokens(consumed_token_amount,min_out,
[consumed_token_address,self.address],
self.wallet_address,int(time.time()+timeout))
params=self.create_transaction_params(gas_price=ga
区块链是分布式系统,各个节点是分布式分类账本,其不只记录其他节点传递来的信息。作为共识系统的一部分,其必须确保记录的交易已经完成,与共识相匹配。