




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、區(qū)塊鏈技術(shù)主題研討會第1頁12 區(qū)塊鏈技術(shù)介紹 OBC組網(wǎng)與智能合約3 智能合約開發(fā)與示例第2頁3”繼互聯(lián)網(wǎng)后又一大變革時代到來”、“互聯(lián)網(wǎng)金融終極形式”、“價值互聯(lián)網(wǎng)開端”、“Record of Things 統(tǒng)計一切”區(qū)塊鏈在短短時間內(nèi)取得了巨大漣漪效應(yīng),IBM在年2月開放了OpenBlockChain技術(shù)并貢獻(xiàn)給了Linux小區(qū),引發(fā)了業(yè)界巨大轟動。那么區(qū)塊鏈到底是怎樣一項顛覆性技術(shù)?其特點是什么?IBM區(qū)塊鏈平臺特點是什么?未來會怎樣演變?區(qū)塊鏈應(yīng)用與已經(jīng)有應(yīng)用關(guān)系是什么?本片將對這些問題逐一解鏈并進(jìn)行探討。序第3頁4區(qū)塊鏈介紹區(qū)塊鏈?zhǔn)且粋€共享賬本技術(shù) ,商業(yè)網(wǎng)絡(luò)中任何參加方都能夠查看
2、交易系統(tǒng)統(tǒng)計(賬本)什么是區(qū)塊鏈?第4頁5區(qū)塊鏈?zhǔn)侵伪忍貛诺讓雨P(guān)鍵技術(shù)區(qū)塊鏈技術(shù)分類?公有鏈Pow/Pos/DPos聯(lián)盟鏈OBC/Etherenum pbft共識私有鏈第5頁6 是不受監(jiān)管,抗審查影子貨幣區(qū)塊鏈確保“類現(xiàn)金”貨幣流通唯一, 不可篡改確定 是區(qū)塊鏈?zhǔn)讉€應(yīng)用區(qū)塊鏈 不是區(qū)塊鏈?zhǔn)侵伪忍貛诺讓雨P(guān)鍵技術(shù)什么是區(qū)塊鏈?第6頁7更深入什么是(企業(yè)級)區(qū)塊鏈智能合約隱私保護(hù)共享賬本共識確保共享賬本適當(dāng)可見性;確保交易是真實和可驗證交易條款和交易狀態(tài)內(nèi)嵌在區(qū)塊鏈系統(tǒng)中,驅(qū)動交易執(zhí)行全部參加者一致同意才意味著交易在網(wǎng)絡(luò)中通過驗證跨商業(yè)網(wǎng)絡(luò)共享,不可更改,分布式交易統(tǒng)計系統(tǒng)更廣泛參加,更低成本,
3、更高效率什么是區(qū)塊鏈?區(qū)塊鏈?zhǔn)且粋€分布式多節(jié)點“共識”實現(xiàn)技術(shù),經(jīng)過區(qū)塊鏈能夠完整、“不可篡改”地統(tǒng)計價值轉(zhuǎn)移(交易)全過程。區(qū)塊鏈形成按照時間先后次序進(jìn)行連接,每一個參加共識形成節(jié)點都有一份區(qū)塊鏈信息完整副本。第7頁8比特幣帳本什么是區(qū)塊鏈?第8頁9OBC帳本什么是區(qū)塊鏈?第9頁10共享賬本統(tǒng)計商業(yè)網(wǎng)絡(luò)中全部交易在參加者之間共享參加者經(jīng)過同時獲取自己備份授權(quán)許可,參加者只能看到適當(dāng)交易統(tǒng)計信息共享統(tǒng)計系統(tǒng)什么是區(qū)塊鏈?第10頁11智能合約合約中商業(yè)規(guī)則內(nèi)嵌在區(qū)塊鏈系統(tǒng)中,在交易時被執(zhí)行可驗證、被簽署編碼在編程語言中案例: 在企業(yè)債權(quán)發(fā)生轉(zhuǎn)移時執(zhí)行定義協(xié)議條款什么是區(qū)塊鏈?第11頁12隱私保護(hù)
4、賬本是共享,不過參加者要求其含有隱私保護(hù)參加者需要: 交易信息需要保密 身份不和交易綁定交易必須是真實密碼學(xué)是這些步驟關(guān)鍵什么是區(qū)塊鏈?第12頁13共識共識是交易驗證與確認(rèn)過程當(dāng)參加方是匿名時 交易確認(rèn)代價高昂 挖礦過程為匿名者提供驗證,但需巨大計算成本(工作證實)當(dāng)參加者都是已知且可信時 交易確認(rèn)成本降低各種替換方案 權(quán)益證實, 欺詐性交易產(chǎn)生時需要驗證 (如債券交易) 多個署名(如5個參加者中3人同意)企業(yè)級區(qū)塊鏈需要“可插拔”共識什么是區(qū)塊鏈?第13頁14行業(yè)采取區(qū)塊鏈好處降低成本及復(fù)雜度提升可發(fā)覺性可信統(tǒng)計保留共享可信流程為何與業(yè)務(wù)相關(guān)?第14頁15區(qū)塊鏈并非萬能不適用場景1. 高性能
5、(毫秒級)交易2. 小型組織 (無商業(yè)網(wǎng)絡(luò))3. 尋找數(shù)據(jù)庫替換方案4. 尋找消息傳遞處理方案5. 尋找交易處理替換方案為何與業(yè)務(wù)相關(guān)?第15頁16區(qū)塊鏈技術(shù)平臺對比第16頁第一,跨組織協(xié)作。在區(qū)塊鏈信任機(jī)制中,全部組員參加對信任價值監(jiān)督、控制和審計,對地址、鏈、公鑰、私鑰、摘要等幾乎全部數(shù)據(jù)統(tǒng)計要素,進(jìn)行全生命周期協(xié)作密碼保護(hù),而且是全球、隨機(jī)。一個聯(lián)盟鏈,相當(dāng)于一臺全球超級密碼、交換機(jī)、密鑰署名服務(wù)器和密碼本總和, 信用連續(xù)。第二,永不宕機(jī)。因為組員動態(tài)運算機(jī)制,全部組員節(jié)點,進(jìn)行實時同時,無法實現(xiàn)局部控制,全球節(jié)點隨機(jī)分布和對應(yīng)在運算時鐘和動態(tài)時間戳控制下,永遠(yuǎn)不停機(jī), 信用連續(xù)。第三,
6、組員監(jiān)管。區(qū)塊鏈強(qiáng)信任技術(shù)特點,來自其節(jié)點組員無中心安全職責(zé),組員局部協(xié)作綜合實現(xiàn)了體系安全監(jiān)管全部,融監(jiān)管與過程之中,實現(xiàn)了系統(tǒng)學(xué)中安全正反饋機(jī)制,在當(dāng)前計算條件下,尚無法經(jīng)過跨越動態(tài)時間戳可靠超越, 信用連續(xù)。為何要用區(qū)塊鏈強(qiáng)信任機(jī)制處理中心化系統(tǒng)中信用不連續(xù)問題第17頁18區(qū)塊鏈運行對比第18頁19IBM開放區(qū)塊鏈與Linux小區(qū)開放連續(xù)投入代碼運行環(huán)境賬簿數(shù)據(jù)結(jié)構(gòu)模塊化(可插式)共識框架模塊化(可插式)身份服務(wù)P2P網(wǎng)絡(luò)技術(shù)升級包SDK(API)共識算法庫(插入模塊)組員管理策略區(qū)塊鏈網(wǎng)關(guān)開發(fā)工具管理控制臺區(qū)塊鏈行業(yè)應(yīng)用基礎(chǔ)部分共享賬簿(Shared Ledger)增值部分(模塊、工具
7、、封裝)應(yīng)用部分項目關(guān)鍵范圍內(nèi)關(guān)鍵APIIBM小區(qū)貢獻(xiàn)Hyperledger項目IBM在Blockchain 上連續(xù)投入,致力于行業(yè)應(yīng)用是Linux開源小區(qū) Hyperledger主要貢獻(xiàn)方,致力于協(xié)同其它企業(yè)共同研發(fā),公布Open Ledger標(biāo)準(zhǔn)(規(guī)格說明書),創(chuàng)建基于Linux開源共享賬簿(比Bitcoin更適合行業(yè)應(yīng)用)推進(jìn)區(qū)塊鏈技術(shù)在行業(yè)中應(yīng)用(行業(yè)區(qū)塊鏈)Blockchain已經(jīng)作為一個試驗性(網(wǎng)絡(luò))服務(wù)在Bluemix上推出基于LinuxOne開放計算平臺對Blockchain支持IBM區(qū)塊鏈第19頁20IBM 開放區(qū)塊鏈: 貢獻(xiàn)給Linux小區(qū)架構(gòu)及代碼Community +
8、CodeMEMBERSHIP包含OBC參加方身份識別,隱私,可審計性。BLOCKCHAIN | TRANSACTIONS經(jīng)過共識過程進(jìn)行分布式交易賬本處理。CHAIN-CODE“智能合約”, 提供在區(qū)塊鏈上運行業(yè)務(wù)邏輯能力。APIs, SDKs, CLI為開發(fā)人員提供以可編程方式控制區(qū)塊鏈網(wǎng)絡(luò)能力。第20頁21IBM開放區(qū)塊鏈名詞解釋Transaction交易。賬頁中一筆統(tǒng)計,用于確認(rèn)一個事實,執(zhí)行一段代碼(chaincode)Ledger賬?。ㄙ~冊)。由首尾相連一組區(qū)塊(block,有時也稱為一個賬頁)組成,統(tǒng)計交易和區(qū)塊世界狀態(tài)World State區(qū)塊世界狀態(tài)。由一組變量組成,指明交易執(zhí)
9、行結(jié)果Chaincode交易中統(tǒng)計一段代碼,其執(zhí)行結(jié)果會改變區(qū)塊世界狀態(tài)(World state)Validating Peer驗證節(jié)點。OBC區(qū)域鏈網(wǎng)絡(luò)中全功效節(jié)點,負(fù)責(zé)驗證交易、統(tǒng)計賬薄、達(dá)成共識Non-validating Peer非驗證節(jié)點。 OBC區(qū)域鏈網(wǎng)絡(luò)中半功效節(jié)點,負(fù)責(zé)驗證交易,但不執(zhí)行交易,也不統(tǒng)計賬薄,通慣用于代理 Validating Peer,提供REST service轉(zhuǎn)發(fā)功效Permissioned許可。只接收組員接入,不接收匿名接入Privacy隱私。OBC中任何組員都能發(fā)起交易,但只有相關(guān)方才能知道,其它無關(guān)節(jié)點無法從交易回溯到交易方Confidentialit
10、y保密。OBC中只有交易相關(guān)方能夠看到交易內(nèi)容,其它無關(guān)節(jié)點只能驗證交易真實性Auditability審計。假如把審計方加入OBC交易,則它能夠看到交易,從而審計是否合規(guī)第21頁22帳本結(jié)構(gòu)示意第22頁23OBC角色劃分與工作內(nèi)容組員服務(wù)(Member Services)注冊(Registration)身份管理(Identity Management)可審計(Auditibility)驗證節(jié)點(Validating Peer)進(jìn)行共識(Consensus)運行交易(Transaction)維護(hù)賬本(Ledger)發(fā)出事件(Event)非驗證節(jié)點(Non-Validating Peer)維護(hù)節(jié)點
11、間安全上下文(Secure Context)代表客戶向組員服務(wù)或驗證節(jié)點請求服務(wù)向應(yīng)用交付事件(Event)處理API請求應(yīng)用(Application)認(rèn)證客戶把客戶映射到安全上下文(Secure Context)調(diào)用REST API用戶(Client)登錄與交易第23頁24網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)整個OBC網(wǎng)絡(luò)中含有兩種節(jié)點,驗證節(jié)點(Validating Peer)和非驗證節(jié)點(Non-Validation Peer)。前者是全功效節(jié)點,組成全連通拓?fù)浣Y(jié)構(gòu),后者是代理節(jié)點,通常掛接在相鄰驗證節(jié)點上應(yīng)用程序能夠連接在驗證節(jié)點,也能夠連接在非驗證節(jié)點在OBC網(wǎng)絡(luò)中需要有一個密鑰管理結(jié)節(jié),考慮到PBFT算法
12、3f+1共識機(jī)制,經(jīng)典容錯(允許一個節(jié)點故障)環(huán)境需要有4個Validation Peer節(jié)點組員服務(wù)Member Services用戶Client用戶Client第24頁25單節(jié)點和多節(jié)點網(wǎng)絡(luò)若OBC網(wǎng)絡(luò)中只有一個VP節(jié)點(極端簡化),則應(yīng)用程序能夠直接與該節(jié)點連接,執(zhí)行其上Chaincode代碼,這時VP節(jié)點只需要記賬,不需要共識若OBC網(wǎng)絡(luò)中有多個VP節(jié)點,則應(yīng)用程序能夠經(jīng)過NVP節(jié)點(NVP與應(yīng)用程序能夠一對多)間接訪問VP(NVP與VP之間多對一),這時VP節(jié)點需要驗證交易、運行代碼、統(tǒng)計賬薄、達(dá)成共識第25頁26商業(yè)票據(jù)Blockchain應(yīng)用-星形架構(gòu)第26頁27IBM開放區(qū)塊鏈
13、參考架構(gòu)概覽(模塊與服務(wù))第27頁28組員管理(Membership)組員管理提供會員注冊、身份保護(hù)、內(nèi)容保密、交易審計功效OBC全部組員首先,經(jīng)過Registration Authority(RA)注冊取得許可然后,經(jīng)過Enrollment Certificate Authority(ECA)取得注冊安全證書(ECert),第三步(可選),經(jīng)過Transaction Certificate Authority(TCA)取得交易安全證書(TCert)使用二者之一署名發(fā)起交易請求與公有鏈不一樣(全部參加方不需要身份認(rèn)證,可直接進(jìn)行交易)第28頁29組員管理模型第29頁30業(yè)務(wù)網(wǎng)絡(luò)動態(tài)組建示例:第
14、一個節(jié)點OBC節(jié)點相關(guān)配置位于/openblockchain/obc-peer/openchain.yaml在配置文件peer小節(jié)中,validator_enabled為true表示節(jié)點是驗證節(jié)點,不然是非驗證節(jié)點discovery_rootnode在開啟時使用,當(dāng)這個參數(shù)被設(shè)置時節(jié)點會使用discovery protocal查找其它節(jié)點。這個參數(shù)是網(wǎng)絡(luò)上另外一個節(jié)點IP,這個節(jié)點作為網(wǎng)絡(luò)上全部節(jié)點進(jìn)行discover起始點。rest_enabled表明節(jié)點是否接收REST請求,對于生產(chǎn)環(huán)境普通把驗證節(jié)點設(shè)置為false,只讓非驗證節(jié)點接收來自應(yīng)用REST請求第一個節(jié)點驗證節(jié)點根節(jié)點IP: v
15、alidator_enabled : truediscovery_rootnode: rest_enabled: false第30頁31業(yè)務(wù)網(wǎng)絡(luò)動態(tài)組建示例:第二個節(jié)點第二個節(jié)點向根節(jié)點發(fā)送消息DISC_HELLO,含有自己區(qū)塊鏈高度blockNumber和PeerEndpoint。假如根節(jié)點應(yīng)答DISC_HELLO消息中區(qū)塊鏈高度高于第二個節(jié)點當(dāng)前持有,第二個節(jié)點立刻發(fā)起synchronization protocol以同時賬本最新狀態(tài)今后第二個節(jié)點每5秒鐘向全部已知節(jié)點(當(dāng)前只知道第一個節(jié)點)發(fā)送DISC_GET_PEERS消息取得加入網(wǎng)絡(luò)其它節(jié)點第一個節(jié)點收到DISC_GET_PEERS
16、消息后,回復(fù)包含了PeerEndpoint 數(shù)組DISC_PEERS消息IP: validator_enabled : truediscovery_rootnode: rest_enabled: falseIP: validator_enabled : truediscovery_rootnode: discovery_period: 5srest_enabled: false第二個節(jié)點驗證節(jié)點第一個節(jié)點驗證節(jié)點根節(jié)點第31頁32業(yè)務(wù)網(wǎng)絡(luò)動態(tài)組建示例:第三個節(jié)點第三個節(jié)點向根節(jié)點發(fā)送消息DISC_HELLO,含有自己區(qū)塊鏈高度blockNumber和PeerEndpoint。假如根節(jié)點應(yīng)答DI
17、SC_HELLO消息中區(qū)塊鏈高度高于第三個節(jié)點當(dāng)前持有,第三個節(jié)點立刻發(fā)起synchronization protocol以同時賬本最新狀態(tài),即使不執(zhí)行交易,不過非驗證節(jié)點維護(hù)一個最新賬本副本今后第三個節(jié)點每60秒鐘向全部已知節(jié)點(第一、二個節(jié)點)發(fā)送DISC_GET_PEERS消息取得加入網(wǎng)絡(luò)其它節(jié)點(考慮到發(fā)送間隔,第二個節(jié)點應(yīng)該先于第三個節(jié)點發(fā)覺對方)第一、二個節(jié)點收到DISC_GET_PEERS消息后,回復(fù)包含了PeerEndpoint 數(shù)組DISC_PEERS消息IP: validator_enabled : truediscovery_rootnode:rest_enabled:
18、false IP: validator_enabled : falsediscovery_rootnode: discovery_period: 60srest_enabled: true第二個節(jié)點驗證節(jié)點第一個節(jié)點驗證節(jié)點IP: validator_enabled : truediscovery_rootnode: discovery_period: 5srest_enabled: false第三個節(jié)點非驗證節(jié)點第32頁33區(qū)塊(Block)結(jié)構(gòu)message Block version = 1; 谷歌.protobuf.Timestamp timestamp = 2; bytes tran
19、sactionsHash = 3; bytes stateHash = 4; bytes previousBlockHash = 5; bytes consensusMetadata = 6; NonHashData nonHashData = 7;message BlockTransactions repeated Transaction transactions = 1;message NonHashData 谷歌.protobuf.Timestamp localLedgerCommitTimestamp = 1; repeated TransactionResult transactio
20、nResults = 2;message TransactionResult string uuid = 1;/ 交易 ID bytes result = 2;/ 交易執(zhí)行結(jié)果 uint32 errorCode = 3;/ 錯誤碼 string error = 4;/ 錯誤說明第33頁34PBFT原理介紹: 關(guān)鍵算法 (也叫做3-phase commit)client把一個request廣播到全部replica, 確保primary收到請求Primary為這個request分配一個次序號并廣播到其它replica;那些replica檢驗消息有效性,同意那個次序號且確認(rèn)了message和view
21、;假如replica有了m和有效pre-pare, 就進(jìn)行下一步每個replica發(fā)送一個PREPARE消息給其它replica,全部收到2f個preparereplica進(jìn)入commit每個replica廣播commit消息,一個replica收到2f個commit消息后,就執(zhí)行(Execute)序號小于n全部requestreplica直接返回結(jié)果給client, client等候f+1個相同結(jié)果。周期性地,replica會做checkpoint來清理log在內(nèi)存中prepared/committed messageReplica經(jīng)過超時機(jī)制來監(jiān)控primary狀態(tài),并適時觸發(fā)view c
22、hange protocol來選舉新primary。v: view number; n: sequence number; D(m): Digest of request message m;代碼實現(xiàn): /openchain/consensus/obcpbft/pbft-core.go ; 其中:innerStack=innerCPI第34頁35賬鏈代碼(Chaincode)OBC中智能合約,是經(jīng)過賬鏈代碼(Chaincode)來實現(xiàn)。業(yè)務(wù)邏輯(Logic) = 賬鏈代碼(Chaincode) = 智能合約(Smart contract)它嵌在交易中,全部驗證節(jié)點在確認(rèn)交易時都必須執(zhí)行它。執(zhí)行
23、環(huán)境是一個定制化安全“沙箱”(Docker)當(dāng)前支持Go, 未來支持Java, Node.js第35頁36賬鏈代碼相關(guān)概念賬鏈代碼分類:公開賬鏈代碼:經(jīng)過公開交易來布署賬鏈代碼,這些代碼能被網(wǎng)絡(luò)中任意組員調(diào)用。機(jī)密賬鏈代碼:經(jīng)過機(jī)密交易來布署賬鏈代碼,這些代碼只能被網(wǎng)絡(luò)中指定做驗證組員調(diào)用。訪問受控賬鏈代碼:經(jīng)過內(nèi)置令牌機(jī)密交易來布署賬鏈代碼,這些代碼能被網(wǎng)絡(luò)中持有對應(yīng)令牌組員調(diào)用(即使這些組員不是校驗者)。賬鏈代碼操作類型:布署賬鏈代碼:經(jīng)過交易布署新賬鏈代碼。調(diào)用賬鏈代碼:經(jīng)過交易調(diào)用已經(jīng)布署賬鏈代碼,也能夠在賬鏈代碼中調(diào)用其它賬鏈代碼。調(diào)用操作能夠修改賬鏈代碼中變量信息。查詢賬鏈代碼:經(jīng)
24、過交易查詢已經(jīng)布署賬鏈代碼,也能夠在賬鏈代碼中查詢其它賬鏈代碼。查詢操作不能修改賬鏈代碼中變量信息。賬鏈代碼數(shù)據(jù)存放 賬鏈代碼中需要持久化狀態(tài)(State),能夠存放在世界狀態(tài)(World State)中。第36頁37VM & Chaincodetype VM interface build(ctxt context.Context, id string, args string, env string, attachstdin bool, attachstdout bool, reader io.Reader) error/ 建立 chaincode image start(ctxt con
25、text.Context, id string, args string, env string, attachstdin bool, attachstdout bool) error/ 開啟 chaincode stop(ctxt context.Context, id string, timeout uint, dontkill bool, dontremove bool) error/ 停頓 chaincodetype Chaincode interface Invoke(stub *ChaincodeStub, function string, args string) (error)
26、/ 調(diào)用 chaincode Query(stub *ChaincodeStub, function string, args string) (byte, error)/ 查詢 chaincodemessage ChaincodeMessage enum Type UNDEFINED = 0; REGISTER = 1; REGISTERED = 2; INIT = 3; READY = 4; TRANSACTION = 5; COMPLETED = 6; ERROR = 7; GET_STATE = 8; PUT_STATE = 9; DEL_STATE = 10; INVOKE_CHAI
27、NCODE = 11; INVOKE_QUERY = 12; RESPONSE = 13; QUERY = 14; QUERY_COMPLETED = 15; QUERY_ERROR = 16; RANGE_QUERY_STATE = 17; Type type = 1;/ 消息類型 谷歌.protobuf.Timestamp timestamp = 2; bytes payload = 3;/ 消息體 string uuid = 4;/ 消息 ID首先,Validating Peer在執(zhí)行Deploy交易時,OBC框架會自動創(chuàng)建VM(Docker),為其加載(build)賬鏈代碼( Chai
28、ncode),依據(jù)情況開啟(start)或停頓(stop)賬鏈代碼接著,Chaincode shim會與Validating Peer建立反向連接,接收ChaincodeMessage指令第37頁38Chaincode操作第38頁39State操作message PutStateInfo / 存數(shù)據(jù) string key = 1; bytes value = 2;message RangeQueryState / 批量取數(shù)據(jù) string startKey = 1;/ 開始key(含),字母次序 string endKey = 2;/ 結(jié)束key(含),字母次序message RangeQue
29、ryStateResponse repeated RangeQueryStateKeyValue keysAndValues = 1; bool hasMore = 2;/ 是否還有后續(xù)數(shù)據(jù) string ID = 3;message RangeQueryStateKeyValue string key = 1;/ key bytes value = 2;/ valuemessage RangeQueryStateNext / 分批取回 string ID = 1;message RangeQueryStateClose / 結(jié)束 string ID = 1;第39頁40賬鏈代碼示例(Go)賬
30、戶A和B之間相互轉(zhuǎn)賬主函數(shù)(源代碼鏈接:G)/ Run callback representing the invocation of a chaincode/ This chaincode will manage two accounts A and B and will transfer X units from / A to B upon invokefunc (t *SimpleChaincode) Run(stub *shim.ChaincodeStub, function string, args string) (byte, error) / Handle different f
31、unctions if function = “init” / 初始化 return t.init(stub, args) else if function = “invoke” / 調(diào)用賬鏈代碼,從賬戶A轉(zhuǎn)X元到賬戶 return t.invoke(stub, args) else if function = delete / Deletes an entity from its state return t.delete(stub, args) return nil, errors.New(Received unknown function invocation)第40頁41賬鏈代碼示例(
32、Go)初始化函數(shù):func (t *SimpleChaincode) init(stub *shim.ChaincodeStub, args string) (byte, error) var A, B string / 賬戶地址 var Aval, Bval int / 賬戶金額 var err error . . . / 初始化 A = args0 / 獲取賬戶A地址 Aval, err = strconv.Atoi(args1) / 獲取賬戶A初始余額 if err != nil return nil, errors.New(“Expecting integer value for asset holding”) B = args2 . . . fmt.Printf(“Aval = %d, Bval = %dn”, Aval, Bval) / 將變量信息
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南網(wǎng)絡(luò)工程職業(yè)學(xué)院《電路理論B》2023-2024學(xué)年第二學(xué)期期末試卷
- 太原工業(yè)學(xué)院《面料紋樣設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 首都經(jīng)濟(jì)貿(mào)易大學(xué)《電子測量系統(tǒng)課程設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津商業(yè)大學(xué)《高等制藥分離工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧理工學(xué)院《數(shù)字廣告插畫創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 柳州職業(yè)技術(shù)學(xué)院《外國文學(xué)史(Ⅱ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊職業(yè)技術(shù)學(xué)院《水族動物育種學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國珠片袋項目投資可行性研究報告
- 中國孕婦保健品行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 山東力明科技職業(yè)學(xué)院《工程質(zhì)量事故分析與處理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2016-2023年山東力明科技職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 中外歷史綱要上大事年表
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項目監(jiān)理計劃
- 2022版《義務(wù)教育教學(xué)新課程標(biāo)準(zhǔn)》解讀課件
- 小學(xué)二年級(上冊)-乘法口訣-練習(xí)題-A4直接打印
- 采購行業(yè)的swot分析
- 設(shè)備采購 投標(biāo)方案(技術(shù)方案)
- 振蕩指標(biāo)MACD(波段操作精解)
- 兒科常見病的病例討論和診斷思維培訓(xùn)課件
- 越野車改裝方案
- 無線電監(jiān)測系統(tǒng)設(shè)備采購?fù)稑?biāo)方案(技術(shù)標(biāo))
評論
0/150
提交評論