国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站色哦優(yōu)化8888電商如何從零做起

網(wǎng)站色哦優(yōu)化8888,電商如何從零做起,wordpress 上傳 重命名,河南網(wǎng)站建設(shè)公司排名如果不是只讀取數(shù)據(jù)的合約函數(shù),需要異步的執(zhí)行,因此并不能直接獲取到合約函數(shù)的返回值,需要等到交易執(zhí)行完畢,得到確認(rèn)后才能獲取到合約函數(shù)的返回值。而且合約函數(shù)返回值一般是通過(guò)事件日志獲取到的。 這里給出一個(gè)例子來(lái)展示我…

如果不是只讀取數(shù)據(jù)的合約函數(shù),需要異步的執(zhí)行,因此并不能直接獲取到合約函數(shù)的返回值,需要等到交易執(zhí)行完畢,得到確認(rèn)后才能獲取到合約函數(shù)的返回值。而且合約函數(shù)返回值一般是通過(guò)事件日志獲取到的。

這里給出一個(gè)例子來(lái)展示我是如何獲取合約函數(shù)返回值的。
我使用的以太坊版本為:github.com/ethereum/go-ethereum v1.13.0

solidity合約:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract StoreString {event ItemSetStr(bytes32 indexed hash,string key,string value);mapping (string => string) public itemstr;function setItemstr(string memory _key, string memory _value) external returns(bytes32){itemstr[_key] = _value;bytes32 hash=sha256(abi.encodePacked(_key,_value));emit ItemSetStr(hash,_key,_value);return hash;}
}

這是一個(gè)存儲(chǔ)鍵值對(duì)的合約,利用函數(shù)setItemstr向map中存儲(chǔ)鍵值對(duì),并通過(guò)key,value計(jì)算哈希值,要求返回哈希值。通過(guò)事件ItemSetStr將哈希值(返回值)、key、value記錄下來(lái)。

將合約的abi編碼通過(guò)abigen工具生成go代碼后。
以下是測(cè)試獲取合約函數(shù)返回值的代碼:

func TestSetStoreString(t *testing.T) {url="" //節(jié)點(diǎn)鏈接client, err := ethclient.Dial(url)if err != nil {log.Fatal(err)}//合約地址contractAddress := common.HexToAddress("0xd9Ed5E352F84E182eB499ae1b5F9935C06d78Ddb")privateKeyStr := "" //私鑰字符串auth := InitAuth(privateKeyStr, client, nil)//得到合約實(shí)例storeString, err := NewStoreString(contractAddress, client)if err != nil {log.Fatal("NewStoreString: ", err)}tx, err := storeString.SetItemstr(auth, "key10", "9900")if err != nil {log.Fatal("SetItemstr: ", err)}//等待交易確認(rèn),獲取到交易的收據(jù)receipt, err := bind.WaitMined(context.Background(), client, tx)if err != nil {log.Fatal("WaitMined: ", err)}//如果交易成功if receipt.Status == 1 {//解析該交易收據(jù)里包含的日志eventItemSetStr, err := storeString.ParseItemSetStr(*receipt.Logs[0])if err != nil {log.Fatal("ParseItemSetStr: ", err)}fmt.Println("交易成功!")fmt.Println("txHash:", tx.Hash().Hex())fmt.Println("返回值:", eventItemSetStr.Hash)fmt.Println("日志Key:", eventItemSetStr.Key)fmt.Println("日志Value:", eventItemSetStr.Value)} else {t.Error("交易失敗")}}func InitAuth(privateKeyStr string, client *ethclient.Client, value *big.Int) *bind.TransactOpts {privateKeyECDSA, err := crypto.HexToECDSA(privateKeyStr)if err != nil {log.Fatal("crypto.HexToECDSA: ", err)}chainID, err := client.ChainID(context.Background())if err != nil {log.Fatal("ChainID: ", err)}auth, err := bind.NewKeyedTransactorWithChainID(privateKeyECDSA, chainID)if err != nil {log.Fatal("NewKeyedTransactorWithChainID: ", err)}//設(shè)置交易參數(shù),例如gas費(fèi)等,這里全部由區(qū)塊鏈系統(tǒng)評(píng)估決定auth.GasFeeCap = big.NewInt(1).Mul(big.NewInt(10), big.NewInt(1000000000)) // maxFee Per Gas:100gwei//獲取平均小費(fèi)gasTipCap, err := client.SuggestGasTipCap(context.Background())if err != nil {log.Fatal("SuggestGasTipCap: ", err)}auth.GasTipCap = gasTipCap //priorityfee Per Gas:auth.GasLimit = uint64(3000000)//還需要設(shè)置鎖定金額auth.Value = valuereturn auth
}

返回值并不能立馬獲得,需要等待交易成功上鏈。再?gòu)氖录罩局薪馕龀龇祷刂?。因此這個(gè)過(guò)程中用到了兩個(gè)重要代碼:

bind包下的WaitMined:等待tx交易的確認(rèn),并獲取其收據(jù),該收據(jù)中必然包含我們想要的日志

func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transaction) (*types.Receipt, error)

合約代碼自動(dòng)生成的go文件中的ParseItemSetStr,傳入日志即可解析出信息。

func (_StoreString *StoreStringFilterer) ParseItemSetStr(log types.Log) (*StoreStringItemSetStr, error)
http://aloenet.com.cn/news/33705.html

相關(guān)文章:

  • 南京服務(wù)好建設(shè)網(wǎng)站哪家好seo快速優(yōu)化方法
  • 網(wǎng)站首頁(yè)結(jié)構(gòu)推廣app軟件
  • ui設(shè)計(jì)做兼職的網(wǎng)站刷推廣鏈接的網(wǎng)站
  • 高性能網(wǎng)站建設(shè)指南 書seo搜索引擎優(yōu)化平臺(tái)
  • 旅游開發(fā) 網(wǎng)站建設(shè)山西網(wǎng)站seo
  • 醫(yī)療網(wǎng)站建設(shè)計(jì)劃書電子商務(wù)網(wǎng)站建設(shè)方案
  • 專業(yè)的外貿(mào)行業(yè)網(wǎng)站制作深圳百度總部
  • 修文縣生態(tài)文明建設(shè)局網(wǎng)站游戲推廣怎么做引流
  • 自己公司網(wǎng)站維護(hù)百度推廣效果
  • 網(wǎng)站空間的控制面板首頁(yè)seo推廣培訓(xùn)
  • 局網(wǎng)站建設(shè)寧波好的seo外包公司
  • 用什么網(wǎng)站做微信推送今日頭條淄博新聞
  • 簡(jiǎn)單的wordpress主題保定關(guān)鍵詞優(yōu)化軟件
  • wordpress 中文兩欄博客主題 style.css狼雨seo網(wǎng)站
  • 上??娝乖O(shè)計(jì)公司官網(wǎng)windows11優(yōu)化大師
  • 中國(guó)建設(shè)銀行官網(wǎng)站企業(yè)網(wǎng)銀營(yíng)銷策劃與運(yùn)營(yíng)
  • 山東大學(xué)網(wǎng)站設(shè)計(jì)與建設(shè)seo排名關(guān)鍵詞
  • 贛州市鐵路建設(shè)辦公室網(wǎng)站湖南靠譜關(guān)鍵詞優(yōu)化
  • 高唐企業(yè)網(wǎng)站建設(shè)北京seo代理計(jì)費(fèi)
  • 鎮(zhèn)江特色seo的基本步驟包括哪些
  • 制作視頻網(wǎng)站開發(fā)電商關(guān)鍵詞工具
  • 小米wordpress東莞seo網(wǎng)站推廣建設(shè)
  • 網(wǎng)站旁邊的小圖標(biāo)怎么做的無(wú)憂seo
  • win server wordpress關(guān)鍵詞優(yōu)化是什么工作
  • 藍(lán)色企業(yè)網(wǎng)站做網(wǎng)站推廣需要多少錢
  • 中國(guó)自適應(yīng)網(wǎng)站建設(shè)模板網(wǎng)站好還是自助建站好
  • 營(yíng)銷型單頁(yè)面網(wǎng)站制作百度電腦版下載
  • 網(wǎng)站google排名出現(xiàn)過(guò)幾分鐘seo是什么意思 為什么要做seo
  • 坊網(wǎng)站建設(shè)seo和sem的概念
  • 自己電腦上做網(wǎng)站南寧百度快速優(yōu)化