1. 程式人生 > >區塊鏈入門三部曲(三)Remix使用、solidity智慧合約開發

區塊鏈入門三部曲(三)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的。可是什麽是區塊鏈?它的出現能解決我們現實生活中什麽問題?什麽是代幣?什麽是共識機制?什麽是智能合約?這