區塊鏈入門三部曲(三)Remix使用、solidity智慧合約開發
推薦solidity官網(有一些基礎合約用上手):http://solidity.readthedocs.io/en/v0.4.24/introduction-to-smart-contracts.html#subcurrency-example
JSVM環境下,SimpleStorage合約測試:
JSVM環境是Remix自己生成一個私有鏈,便於開發者測試智慧合約。上回書說到rpc是將智慧合約寫到私有鏈的必需服務,後面會提到。
使用第二個賬戶建立合約:
儲存資訊:
檢視資訊:
使用testrpc測試Coin:
首先安裝testrpc:
EtherumJS TestRPC是一個完整的在記憶體中的區塊鏈僅僅存在於你開發的裝置上。它在執行交易時是實時返回,而不等待預設的出塊時間,這樣你可以快速驗證你新寫的程式碼,當出現錯誤時,也能即時反饋給你。命令列輸入如下內容:
npm install -g ethereumjs-testrpc
coin合約:
開啟testrpc:臨時隨機生成一個有10個賬戶的私有鏈,關閉testrpc就會消失。testrpc和javaVm的好處在於,挖礦是自動的便於對智慧合約做測試
執行環境選擇web3:web3是連線到實際存在的私有鏈中。testrpc是虛擬出一個私有鏈。預設的地址是:http://localhost:8545
建立合約:
轉賬:
自寫TraceSource.sol商品溯源合約。連線本地測試:
pragma solidity ^0.4.0; contract traceSource { // 訂單資訊 struct Orders { address isOK; uint startID; uint endID; } address [] public companys; // 發起企業 address public persentCompany; // 下游企業 address private nextCompany; // 整條供應鏈的訂單鏈 Orders [] public ordersLink; //訂單鏈指標 uint16 private orderNum=0; uint16 public test=0; constructor(uint16 length) public { persentCompany = msg.sender; for(uint16 i=0;i<length;i++){ if(i==0){ companys.push(msg.sender); } else{ companys.push(address(0)); } ordersLink.push(Orders({ isOK: address(0), startID: 0, endID:0 })); } } // 提交訂單 function subOrder(address next,uint sID,uint eID) public { if( (persentCompany != msg.sender) || (sID < 0) || (eID<0) || (next==address(0)) ){test++; return;} nextCompany=next; ordersLink[orderNum].startID=sID; ordersLink[orderNum].endID=eID; } // 接受訂單 function acceptOrder() public { if( (nextCompany != msg.sender) || (nextCompany == address(0)) ){test++; return;} companys[orderNum+1]=msg.sender; ordersLink[orderNum].isOK=nextCompany; persentCompany=nextCompany; orderNum++; } // 檢視訂單鏈數量 function getOrdersLinkNum() public view returns (uint16 num) { num=orderNum; } function geCompany() public view returns (address [] cs) { cs=companys; } // 檢視當前企業 // 檢視當前訂單開始id function getPersentOrderStartID() public view returns (uint startID) { startID =ordersLink[orderNum-1].startID; } // 檢視當前訂單結束id function getPersentOrderEndID() public view returns (uint endtID) { endtID =ordersLink[orderNum-1].endID; } }
按上回書的方式開啟rpc:
連線成功:可能是ide的坑,使用者列表莫名奇妙重複了一遍
例項化:建一個供應鏈長度10的合約。
Ide不能挖礦:
Pxtool中的合約:
上鍊後:
當前公司為建立合約公司:
下家為0:
合約鏈中沒有訂單:
上傳訂單:引數下家address,產品起始碼,產品結束碼
下家改變為指定下家,只有指定下家才能接受訂單
指定下家接受訂單:
當前公司改變:
訂單鏈上出現,已達成的訂單
查詢訂單資訊:
相關推薦
區塊鏈入門三部曲(三)Remix使用、solidity智慧合約開發
推薦solidity官網(有一些基礎合約用上手):http://solidity.readthedocs.io/en/v0.4.24/introduction-to-smart-contracts.html#subcurrency-exampleJSVM環境下,SimpleS
區塊鏈入門三部曲(二) (最全最詳細 )以太坊Geth搭建私有鏈
1. Geth的搭建私有鏈搭建私有鏈首先需要配置一個創業區塊。下圖是創世區塊genesis.jsonConfig:config必不可少,否則建立不成功。ChildId不能為0。Alloc:用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣
區塊鏈入門筆記(一)——比特幣的原理和挖礦機制
一、比特幣:1. 分散式的虛擬貨幣。 區別於現實銀行的中央系統貨幣。2. 基礎設施搭建 1)完全公開 2)只是記錄每筆交易資訊 3)記錄完全公開,個人資訊不公開,有完整的公鑰加密系統,可以保證唯一性和安全性 4)礦工:挖礦來增加區塊鏈、挖礦成功獎
spring boot入門筆記 (三) - banner、熱部署、命令行參數
nal rop dep ioc devtools 一點 一個 splay option 1、一般項目啟動的時候,剛開始都有一個《spring》的標誌,如何修改呢?在resources下面添加一個banner.txt就行了,springboot會自動給你加載banner.
Go語言入門教程(三)在Ubuntu上使用Eclipse開發Go
說明 這裡假設您已經安裝了JDK,如果沒有,請自行安裝。 一、安裝eclipse 下載Eclipse 首先,請到官方網站下載Eclipse,推薦下載完成安裝包,Gavin下載的是eclipse-java-oxygen-R-linux-gtk-x8
redis入門指南(三)—— 事務、過期時間、SORT命令、訊息通知與管道
寫在前面 學習《redis入門指南》筆記,結合實踐,只記錄重要,明確,屬於新知的相關內容。 事務 1、redis中的事務由一組命令的集合組成,要麼都執行,要麼都不執行,同時redis的事務還可以保證事務內的命令會依次執行不被其他命令插入。 2、命令MULTI開啟事務,之後傳送一些
【活動報名】NEO 區塊鏈公開課(1): NEO 區塊鏈開發入門
NEO 區塊鏈公開課是 NGD ( NEO Global Development )、NEL ( NewEconoLab )、InnoSpace 創新院共同發起的區塊鏈技術學習專場活動。旨在滿足廣大開發者對 NEO 區塊鏈技術的入門、進階以及技能提升需求。 精心設計的課程內容,資深技術講師
乾貨!區塊鏈入門、進階、行業專家觀點!1000篇好文幫你破解區塊鏈密碼!(中篇)
隨著區塊鏈概念理論的不斷成熟以及強勁技術的不斷深耕,區塊鏈已經成為投資圈中備受關注的熱點,從區塊鏈1.0時代落地數字貨幣比特幣、萊特幣等,打開了區塊鏈通向新彎道的高速路口,到區塊鏈2.0時代開始通過智慧合約來解決貨幣支付難題,再到3.0時代區塊鏈嘗試向各傳統行業發力,
劍英的區塊鏈學習手記(一)
strong mage git 人生 極客 lease 黑錢 開篇 png 開篇布拉拉 因為參與了小蟻的c#智能合約編譯器的開發,讓我第一次近距離接觸到區塊鏈技術。 以前我對區塊鏈技術的了解,只知道有一種叫做比特幣的玩意兒,以前有同事在幾百塊一個比特幣的時候屯了一批,後
Asp.Net Core WebAPI入門整理(三)跨域處理
使用 所有 ble 允許 需要 public cors 項目 listitem 一、Core WebAPI中的跨域處理 1.在使用WebAPI項目的時候基本上都會用到跨域處理 2.Core WebAPI的項目中自帶了跨域Cors的處理,不需要單獨添加程序包 3.使用方
CodeArt入門教程(三)
pan center account 根據 領域對象 保存 顏色 單一職責原則 用例 5.領域模型設計 下面我們創建賬戶子系統(AccountSubsystem),賬戶子系統雖然被門戶服務使用,但是子系統本身是獨立於任何服務存在的。所以我們為賬戶子系統創建獨立的項目解決
Dapper入門教程(三)——Dapper Query查詢
int32 method ppi ransac try spa can () raw 介紹 查詢方法(Query)是IDbConnection的擴展方法,它可以用來執行查詢(select)並映射結果到C#實體(Model、Entity)類 查詢結果可以映射成如下類型: A
【ASP.NET Core快速入門】(三)準備CentOS和Nginx環境
正常 b- 進入 運行 ins 輸入 最小 我們 -128 基本軟件 VMware虛擬機 centos:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso
Python入門教程(三)
循環 三個參數 normal 編程 list bili lan 函數返回 容易 按理說,這篇是收尾了。可能有一點術語,但大都是顧名思義的。重要概念【類】在第二個標題下說明。函數式編程(縮寫:FP) 如果對此有興趣,可以看scheme視頻教程(SICP公開課)(sche
Linux驅動入門篇(三):基本的字符設備模塊(2)
連接 truct ace alloc orm 負數 -s tabs idt 上一節中介紹了設備號的申請和釋放,這一節開始了解字符設備的相關操作。 首先定位到<linux/cdev.h>文件,查看內核提供給字符設備的接口。 cdev結構 str
Sping Boot入門到實戰之入門篇(三):Spring Boot屬性配置
git 測試 add 禁用 rop fix ron org set 該篇為Sping Boot入門到實戰系列入門篇的第三篇。介紹Spring Boot的屬性配置。 傳統的Spring Web應用自定義屬性一般是通過添加一個demo.properties配置文件(
Golang入門教程(三)beego 快速開發 HTTP 框架
應用 inf ado .com home clas lan mime iyu beego 是一個快速開發 Go 應用的 HTTP 框架,他可以用來快速開發 API、Web 及後端服務等各種應用,是一個 RESTful 的框架,主要設計靈感來源於 tornado、sina
JavaScript基礎入門教程(三)
直接 復制 一般來說 得到 方式 註意 元素 nbsp 通過 說明 前面的兩篇博客介紹了js中的基本知識中的變量類型、標識符等。這篇博客主要談表達式以及運算符。 原始表達式 原始表達式就是表達式中最小的,不能在分割的表達式,一般指變量、常數直接量、關鍵字(tru
Python入門篇(三)之列表
Python1、列表定義 names = ["ZhangYang","Guyun","Xiangpeng","Xuliangchen"] #列表存儲,類似數組 2、列表的操作 (1)切片 names = ["ZhangYang","Guyun","Xiangpeng","Xuliangchen"] #列表存儲
看完就能出去神侃,來自研發第一線的“區塊鏈”掃盲文(一)
區塊鏈 代幣 Blockchain 麻將 這兩年要說什麽概念最火,那一定是區塊鏈了。現在要是自己不說一說什麽是公鏈、私鏈,什麽是Token,都不好意思說自己是做IT的。可是什麽是區塊鏈?它的出現能解決我們現實生活中什麽問題?什麽是代幣?什麽是共識機制?什麽是智能合約?這