国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如果Fabric的智能合約函數(shù)陷入死循環(huán)會怎么樣

這篇具有很好參考價值的文章主要介紹了如果Fabric的智能合約函數(shù)陷入死循環(huán)會怎么樣。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

大家好,我是powervip!今天和大家一起探討一下:如果Fabric的智能合約函數(shù)陷入死循環(huán)會怎么樣

先看一段合約函數(shù)代碼:

func (t *SimpleChaincode) Test(stub shim.ChaincodeStubInterface, args []string) pb.Response {

// 選擇商品價格在1元到100元之間的商品名稱和數(shù)量

s := "{\"fields\": [\"GoodsName\", \"GoodsCount\"], \"selector\":{ \"$and\": [{\"GoodPrice\":{\"$gte\": 1}}, {\"GoodPrice\":{\"$lte\": 100}}] }}"

resultsIterator, err := stub.GetQueryResult(q)

defer resultsIterator.Close()

if err != nil {

return shim.Error(err.Error())

}

var count uint64

for resultsIterator.HasNext() {

count++

// resultsIterator.Next() // 注釋掉該語句,函數(shù)將陷入死循環(huán)

fmt.Println("count=", count)

}

msg := fmt.Sprintf("count: %d", count)

return shim.Success([]byte(msg))

}

上面的代碼由于把 resultsIterator.Next() 這行代碼注釋掉,返回的數(shù)據(jù)集如果包含有1條記錄或以上,游標(biāo)就會一直停留在第一條數(shù)據(jù)記錄上,導(dǎo)致 resultsIterator.HasNext() 永遠(yuǎn)為true,從而陷入死循環(huán)。

合約函數(shù)陷入死循環(huán)后,由于Fabric一般默認(rèn)的智能合約函數(shù)調(diào)用時長最長為30秒,超過30秒后,F(xiàn)abric會返回類似于下面的超時提示:

Error: endorsement failure during invoke. response: status:500 message:"failed to execute transaction 81f3c7715ae5f6678c711238571bb1c778c274bc505287da3f857465835832d6: error sending: timeout expired while executing transaction"

你以為合約函數(shù)調(diào)用就這樣結(jié)束了?No!如果你attach上peer節(jié)點(diǎn)(具體命令是:docker attach c5841e55155a,c5841e55155a為該節(jié)點(diǎn)的CONTAINER ID),你會發(fā)現(xiàn),peer節(jié)點(diǎn)的log會不斷地打印出類似下面的信息:

count= 10000

count= 10001

count= 10002

count= 10003

count= 10004

count= 10005

count= 10006

count= 10007

count= 10008

count= 10009

...

表明合約函數(shù)還在不斷地執(zhí)行死循環(huán)代碼。

如果這時候,你想在客戶端執(zhí)行其它的合約函數(shù),得到的結(jié)果都是超時,因?yàn)橹悄芎霞s在上次調(diào)用中陷入死循環(huán)后,沒辦法執(zhí)行新的函數(shù)調(diào)用了。后果真的很嚴(yán)重,需要認(rèn)真注意合約函數(shù)會引起死循環(huán)的代碼!

要如何結(jié)束死循環(huán),目前來看只有重啟peer節(jié)點(diǎn)了。如果你有更好的方法,歡迎提出來討論。

------------------------------------------------------------------------------

我是powervip

我的公眾號:區(qū)塊鏈戰(zhàn)斗機(jī)

我的知乎:powervip - 知乎

我的學(xué)習(xí)筆記:www.study.win

原創(chuàng)作品,版權(quán)所有,侵權(quán)必究!商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán);非商業(yè)轉(zhuǎn)載需保留作者署名信息,注明出處并保留原文鏈接。

如果你覺得這篇文章寫得還可以,請幫忙點(diǎn)個贊,謝謝!

你的鼓勵,我的動力!?文章來源地址http://www.zghlxwxcb.cn/news/detail-419834.html

到了這里,關(guān)于如果Fabric的智能合約函數(shù)陷入死循環(huán)會怎么樣的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Fabric 搭建測試網(wǎng)絡(luò)并部署智能合約

    Fabric 搭建測試網(wǎng)絡(luò)并部署智能合約

    1. 搭建網(wǎng)絡(luò): 詳見博客 2. 對Test Network的創(chuàng)建和關(guān)閉 3. Starting a chaincode on the channel: 智能合約(Smart Contract): 包含管理區(qū)塊鏈賬本上assets的邏輯。 在Fabric上智能合約就是鏈碼的形式存在. 當(dāng)網(wǎng)絡(luò)運(yùn)行后,鏈碼會被部署到網(wǎng)絡(luò)中節(jié)點(diǎn)和通道上. 應(yīng)用(Application): 由區(qū)塊鏈系統(tǒng)的成員執(zhí)行

    2024年02月03日
    瀏覽(21)
  • fabric 2.3 手動搭建網(wǎng)絡(luò)&安裝chaincode智能合約

    fabric 2.3 手動搭建網(wǎng)絡(luò)&安裝chaincode智能合約

    搭建好fabric之后,要在test-network下手動啟動一個fabric網(wǎng)絡(luò)。將下載過來的order和peer1兩個文件夾放到~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network目錄下。 生成證書文件: 生成創(chuàng)世塊: 之后便可以去啟動order和peer,分別進(jìn)入order和peer1文件夾下,打開終端輸入 orde

    2024年01月24日
    瀏覽(20)
  • Hyperledger Fabric 使用 CouchDB 和復(fù)雜智能合約開發(fā)

    在上個實(shí)驗(yàn)中,我們已經(jīng)實(shí)現(xiàn)了簡單智能合約實(shí)現(xiàn)及客戶端開發(fā),但該實(shí)驗(yàn)中智能合約只有基礎(chǔ)的增刪改查功能,且其中的數(shù)據(jù)管理功能與傳統(tǒng) MySQL 比相差甚遠(yuǎn)。本文將在前面實(shí)驗(yàn)的基礎(chǔ)上,將 Hyperledger Fabric 的默認(rèn)數(shù)據(jù)庫支持 LevelDB 改為 CouchDB 模式,以實(shí)現(xiàn)更復(fù)雜的數(shù)據(jù)檢

    2023年04月15日
    瀏覽(29)
  • Hyperledger Fabric 智能合約開發(fā)及 fabric-sdk-go/fabric-gateway 使用示例

    在上個實(shí)驗(yàn) Hyperledger Fabric 多組織多排序節(jié)點(diǎn)部署在多個主機(jī)上 中,我們已經(jīng)實(shí)現(xiàn)了多組織多排序節(jié)點(diǎn)部署在多個主機(jī)上,但到目前為止,我們所有的實(shí)驗(yàn)都只是研究了聯(lián)盟鏈的網(wǎng)絡(luò)配置方法(盡管這確實(shí)是重難點(diǎn)),而沒有考慮具體的應(yīng)用開發(fā)。本文將在前面實(shí)驗(yàn)的基礎(chǔ)上

    2024年01月20日
    瀏覽(15)
  • 8. Fabric2.2 區(qū)塊鏈農(nóng)產(chǎn)品溯源系統(tǒng) - 智能合約設(shè)計(jì)

    根據(jù)上小節(jié)的需求分析與方案設(shè)計(jì)來進(jìn)行智能合約的設(shè)計(jì)。 智能合約設(shè)計(jì)最核心的是存儲字段的設(shè)計(jì)、也就是索引設(shè)計(jì),F(xiàn)abric 常見的時間狀態(tài)存儲引擎是LevelDB 或 CouchDB,這兩個數(shù)據(jù)庫是KV存儲,KV存儲不像SQL類型存儲,一張表創(chuàng)建多個字段,多個字段索引可以進(jìn)行各種復(fù)查詢

    2023年04月08日
    瀏覽(28)
  • 11. Fabric2.2 區(qū)塊鏈農(nóng)產(chǎn)品溯源系統(tǒng) - 智能合約開發(fā)-1

    智能合約與業(yè)務(wù)邏輯關(guān)聯(lián)度高,承載大量業(yè)務(wù)邏輯,本小節(jié)教大家搭建智能合約開發(fā)環(huán)境GoLand,并編寫合約打包腳本。 作者在windows電腦安裝ubuntu18.04版本虛擬機(jī)(vmware),Linux環(huán)境也有Goland版本,可用性絲毫不差,所有的區(qū)塊鏈開發(fā)在Linux環(huán)境進(jìn)行。 官方可以下載,要么評估

    2023年04月20日
    瀏覽(18)
  • 人工智能寫文章軟件-人工智能寫作的文章效果怎么樣

    人工智能寫文章軟件-人工智能寫作的文章效果怎么樣

    人工智能寫文章具有極高的效率和一定的文本質(zhì)量,但仍面臨一些挑戰(zhàn)和限制。首先,人工智能寫文章需要大量的文本語料庫和訓(xùn)練數(shù)據(jù),才能獲取足夠的語言知識和語言模型,才能保證文章的語言表達(dá)質(zhì)量和文本連貫性。其次,人工智能寫文章的應(yīng)用范圍和實(shí)際效果與文本

    2024年02月12日
    瀏覽(24)
  • 魅族智能路由器怎么樣?魅族智能路由器參數(shù)配置如何

    魅族智能路由器配置如何呢?相信還有很多朋友對于魅族新產(chǎn)品魅族智能路由器的參數(shù)配置還不太清楚,下文小編就為大家?guī)眵茸逯悄苈酚善鲄?shù)方面的內(nèi)容,一起去了解下吧。 據(jù)最新曝光的消息,魅族智能路由器已經(jīng)在研發(fā)中了??磥恚索茸錗X4 Pro之外,魅友們又有一

    2024年02月07日
    瀏覽(24)
  • gpt人工智能寫論文怎么樣-chatGTP如何寫論文

    gpt人工智能寫論文怎么樣-chatGTP如何寫論文

    使用 GPT 寫論文具體的操作方法因人而異,但可以提供一些建議: 充分理解論文的題目、主題和結(jié)構(gòu),并確定論文所需的內(nèi)容和方向。 針對論文的不同部分,使用 GPT 模型進(jìn)行自動化生成或補(bǔ)充,例如摘要、介紹、正文、結(jié)論、參考文獻(xiàn)等。 對 GPT 生成的文本進(jìn)行篩選和修改

    2024年02月08日
    瀏覽(40)
  • 聯(lián)想路由器怎么樣?雙頻AC智能路由器聯(lián)想云路由開箱圖賞

    前不久小米推出了一款129元的小米路由器mini,號稱最便宜的雙頻AC智能路由器。其實(shí)聯(lián)想也正推出了一款與小米路由器mini相似的產(chǎn)品,只是相對低調(diào),目前聯(lián)想云路由器也已經(jīng)低調(diào)開啟公測,其配置與小米路由器mini相當(dāng),不過售價目前還未知。廢話不多說,以下筆者為大家

    2024年02月07日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包