馬蹄鏈DAPP代幣合約流動(dòng)性挖礦分紅系統(tǒng)開發(fā)詳細(xì)及方案(polygon馬蹄鏈開發(fā))
Smart contract is a kind of computer program or transaction protocol,which records the information,events and behaviors of transaction terms,aiming at reducing the demand,arbitration and execution costs for trusted intermediaries.On the Chang'an chain,users can write smart contracts in high-level languages(Golang,Rust,solidity,TinyGo,and C++).After compilation,they are stored in the blockchain in the form of binary files,WASM,and EVM bytecodes.Users can trigger the execution of codes in smart contracts by sending transactions.
args:Dictionary-來自事件的參數(shù)。
event:String-事件名稱。
logIndex:Number-塊中日志索引位置的整數(shù)。
transactionIndex:Number-創(chuàng)建的交易索引位置日志的整數(shù)。
transactionHash:String,32 Bytes-創(chuàng)建此日志的事務(wù)的哈希值。
address:String,32 Bytes-此日志的來源地址。
blockHash:String,32 Bytes-此日志所在塊的哈希值。當(dāng)它掛起時(shí)為null。
blockNumber:Number-此日志所在的塊號(hào)。當(dāng)它掛起時(shí)為null
如下,是一個(gè)簡(jiǎn)單的demo,大家應(yīng)根據(jù)自己的業(yè)務(wù)場(chǎng)景,具體的去解析鏈上結(jié)果:
def _filter_event_transfer(self,tx_receipt_event_log)->List[ORDER_TX_RES_DETAILS_LIKE]:
"""開發(fā)合約I59詳細(xì)2OO7系統(tǒng)3O69
事件日志的解碼和整理
:param tx_receipt_event_log:
:return:
"""
log_details:List[ORDER_TX_RES_DETAILS_LIKE]=[]
if isinstance(tx_receipt_event_log,Tuple):開發(fā)流程:yy625019
#assert len(tx_receipt_event_log)==2,"此函數(shù)解析交易,理應(yīng)只得到2筆Transfer記錄"
if len(tx_receipt_event_log)!=2:#交易失敗的情況:()
self._logger.error("事件日志函數(shù)解析交易,理應(yīng)只得到2筆Transfer記錄")
for d in tx_receipt_event_log:
if d.get("event")=="Transfer":
coin_name:str=self.coin_name_to_addr_dict_reverse[d["address"]]
transfer_vol:str=str(self.from_wei(d["args"]["value"],decimals=self.coin_decimals_dict[coin_name]))
from_addr:str=d["args"]["from"]
to_addr:str=d["args"]["to"]
if from_addr in self.account_addr_list:#如果是賬號(hào)的地址
print(f"是賬號(hào)的地址{from_addr}:{coin_name}減少{transfer_vol}")
order_res:ORDER_TX_RES_DETAILS_LIKE={"coin_name":coin_name,"side":"sell","vol":transfer_vol,"account_addr":from_addr}
log_details.append(order_res)
elif from_addr in self.pair_name_to_addr_dict.values():#如果是pair合約的地址
print(f"是pair合約的地址{from_addr}:{coin_name}減少{transfer_vol}")
else:
print(f"未知地址{from_addr}:{coin_name}減少{transfer_vol}")
if to_addr in self.account_addr_list:#如果是賬號(hào)的地址
print(f"是賬號(hào)的地址{to_addr}:{coin_name}增加{transfer_vol}")
order_res:ORDER_TX_RES_DETAILS_LIKE={"coin_name":coin_name,"side":"buy","vol":transfer_vol,"account_addr":to_addr}
log_details.append(order_res)
elif to_addr in self.pair_name_to_addr_dict.values():#如果是pair合約的地址
print(f"是pair合約的地址{to_addr}:{coin_name}增加{transfer_vol}")
else:
print(f"未知地址{to_addr}:{coin_name}增加{transfer_vol}")
return log_details