現(xiàn)貨期權(quán)期貨秒合約系統(tǒng)開(kāi)發(fā)(開(kāi)發(fā)案例)丨現(xiàn)貨期權(quán)期貨秒合約開(kāi)發(fā)源碼版
數(shù)字經(jīng)濟(jì)是以數(shù)據(jù)資源為關(guān)鍵要素,以數(shù)字科技為支撐的經(jīng)濟(jì)形態(tài)。數(shù)字產(chǎn)業(yè)化和產(chǎn)業(yè)數(shù)字化是數(shù)字經(jīng)濟(jì)中的重點(diǎn)內(nèi)容,數(shù)字產(chǎn)業(yè)化主要是推動(dòng)數(shù)字科技形成規(guī)?;a(chǎn)業(yè),產(chǎn)業(yè)數(shù)字化主要是利用數(shù)字科技支撐和推動(dòng)傳統(tǒng)產(chǎn)業(yè)轉(zhuǎn)型升級(jí)。在這個(gè)過(guò)程中可以基于區(qū)塊鏈等數(shù)字科技推動(dòng)信息技術(shù)服務(wù)加速數(shù)字產(chǎn)業(yè)化,依托元宇宙的新場(chǎng)景拉動(dòng)信息消費(fèi)促進(jìn)產(chǎn)業(yè)數(shù)字化。
面向?qū)ο蟮娘L(fēng)格,Token類,實(shí)例化對(duì)象后可以調(diào)用其中的成員方法,以下是主要的幾個(gè)方法:
1.price()
def price(self,amount=int(1e18),swap_token_address=ETH_ADDRESS):
swap_token_address=Web3.toChecksumAddress(swap_token_address)
return self.router.functions.getAmountsOut(amount,[self.address,swap_token_address]).call()[-1]
傳入的參數(shù)分別是想要交易的數(shù)量與想要獲得的代幣地址(默認(rèn)是eth地址)。
可以理解為返回指定數(shù)量的代幣價(jià)值。
2.received_amount_by_swap()開(kāi)發(fā)詳解及流程I35需求7O98開(kāi)發(fā)O7I8
def received_amount_by_swap(self,input_token_amount=int(1e18),input_token_address=ETH_ADDRESS):
input_token_address=Web3.toChecksumAddress(input_token_address)
return self.router.functions.getAmountsOut(input_token_amount,[input_token_address,self.address]).call()[-1]
可以理解為用指定數(shù)量的其他代幣換取該代幣,返回能換得該代幣的數(shù)量。
3.buy()
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:案例及設(shè)計(jì):MrsFu123
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=gas_price)
return self.send_transaction(func,params)
一共有5個(gè)參數(shù):
consumed_token_address:設(shè)置所支付的代幣的erc20合約地址。
consumed_token_amount:設(shè)置所支付的代幣數(shù)量。
slippage:設(shè)置所能容忍的滑點(diǎn),默認(rèn)為百分之一。
timeout:設(shè)置該筆交易的超時(shí)時(shí)間。
speed:設(shè)置該筆交易的區(qū)塊確認(rèn)速度,通過(guò)平均的gas_price乘以speed設(shè)置該筆交易的gas_price,所以speed的值越大,gas_price也越大,使得該筆交易的確認(rèn)速度也越快。