智能合約java代碼 智能合約編程

長安鏈--智能合約的開發(fā)、編譯、安裝、調用、查詢(二)

官方參考文檔:

十余年的久治網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整久治建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“久治網(wǎng)站設計”,“久治網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

? ? 學習智能合約的開發(fā),通常需要有Demo來學習API的使用方式,項目組織方式。在長安鏈學習過程中也是如此,所以第一步獲取合約模塊。

1.1) 拉取鏡像: docker pull chainmakerofficial/chainmaker-go-contract:1.1.1

長安鏈為我們提供合約開發(fā)的鏡像,內部包含合約模板。

1.2) 啟動并進入容器: docker run -it --name chainmaker-go-contract -v ${PWD}:/home chainmakerofficial/chainmaker-go-contract:1.1.1 bash

啟動 chainmaker-go-contract 容器并進入,同時將當前目錄掛載到容器的 /home 目錄下

1.3) 解壓并分析合約模板

cp /home

tar xzvf contract_go_template.tar.gz

按照官方參考文檔方式 在 chainmaker-go-contract 容器中執(zhí)行 ./build.sh

生成main.wasm文件

2)執(zhí)行TestUserContractHash Test方法

? ? 這里使用的是默認配置文件,如果需要改變端口、連接數(shù)、TLS使能等等,需要修改 chainmaker-sdk-go/testdata/sdk_config.yml

如何開發(fā)編譯部署調用智能合約

在Solidity中,一個合約由一組代碼(合約的函數(shù))和數(shù)據(jù)(合約的狀態(tài))組成。合約位于以太坊區(qū)塊鏈上的一個特殊地址。uint storedData; 這行代碼聲明了一個狀態(tài)變量,變量名為storedData,類型為 uint (256bits無符號整數(shù))。你可以認為它就像數(shù)據(jù)庫里面的一個存儲單元,跟管理數(shù)據(jù)庫一樣,可以通過調用函數(shù)查詢和修改它。在以太坊中,通常只有合約 的擁有者才能這樣做。在這個例子中,函數(shù) set 和 get 分別用于修改和查詢變量的值。

跟很多其他語言一樣,訪問狀態(tài)變量時,不需要在前面增加 this. 這樣的前綴。

這個合約還無法做很多事情(受限于以太坊的基礎設施),僅僅是允許任何人儲存一個數(shù)字。而且世界上任何一個人都可以來存取這個數(shù)字,缺少一個(可靠 的)方式來保護你發(fā)布的數(shù)字。任何人都可以調用set方法設置一個不同的數(shù)字覆蓋你發(fā)布的數(shù)字。但是你的數(shù)字將會留存在區(qū)塊鏈的歷史上。稍后我們會學習如 何增加一個存取限制,使得只有你才能修改這個數(shù)字。

代幣的例子

接下來的合約將實現(xiàn)一個形式最簡單的加密貨幣。空中取幣不再是一個魔術,當然只有創(chuàng)建合約的人才能做這件事情(想用其他貨幣發(fā)行模式也很簡單,只是實現(xiàn)細節(jié)上的差異)。而且任何人都可以發(fā)送貨幣給其他人,不需要注冊用戶名和密碼,只要有一對以太坊的公私鑰即可。

注意

對于在線solidity環(huán)境來說,這不是一個好的例子。如果你使用在線solidity環(huán)境 來嘗試這個例子。調用函數(shù)時,將無法改變from的地址。所以你只能扮演鑄幣者的角色,可以鑄造貨幣并發(fā)送給其他人,而無法扮演其他人的角色。這點在線 solidity環(huán)境將來會做改進。

【ETH錢包開發(fā)04】web3j轉賬ERC-20 Token

在上一篇文章中講解了ETH轉賬,這一篇講一下ERC-20 Token轉賬。

【ETH錢包開發(fā)03】web3j轉賬ETH

1、直接用web3j的API

2、java/Android調用合約的 transfer 方法

不管用哪種方式來轉賬,你都需要先寫一個solidity智能合約文件來創(chuàng)建ERC-20 Token,然后部署合約,最后才是通過客戶端來調用。

注意:erc-20 token轉賬和eth轉賬的區(qū)別如下:

1、erc-20 token創(chuàng)建交易對象用的是這個方法 createTransaction

2、erc-20 token需要構建 Function ,它其實對應的就是erc-20 token合約中的那些方法。它的第一個參數(shù)就是ERC20中那幾個方法的名稱,第二個參數(shù)的話就是對應合約方法中的參數(shù),第三個參數(shù)是和第二個參數(shù)對應的,按照我那樣就行了。轉賬的話就是 transfer ,我們從合約的 transfer 可以看到第一個參數(shù)是收款地址,第二個參數(shù)是金額,所以 Function 這里對應起來就好。

這種方法不需要使用web3j封裝的方法,而是直接調用solidity合約的方法。

步驟

1、web3j加載一個已經(jīng)部署的合約

2、驗證合約是否加載成功 isValid

3、如何加載合約成功,則調用合約的 transfer 方法

注意:

1、這里的 TokenERC20 是根據(jù)solidity智能合約生成的對應的Java類,用于java/Android和智能合約交互的,如果你對這里不太清楚,不妨看看我之前的一篇文章。

以太坊Web3j命令行生成Java版本的智能合約

2、如果加載合約失敗,可能的一個原因是合約對應的Java類中的 BINARY 的值不對,這個值是你部署合約成功之后的bytecode,你最好檢查對比一下。

我發(fā)送一筆交易,可以通過這個地址查詢

java中怎么樣調用eth的智能合約

一般來說,部署智能合約的步驟為:

1啟動一個以太坊節(jié)點 (例如geth或者testrpc)。

2使用solc編譯智能合約。 = 獲得二進制代碼。

3將編譯好的合約部署到網(wǎng)絡。(這一步會消耗以太幣,還需要使用你的節(jié)點的默認地址或者指定地址來給合約簽名。) = 獲得合約的區(qū)塊鏈地址和ABI(合約接口的JSON表示,包括變量,事件和可以調用的方法)。(譯注:作者在這里把ABI與合約接口弄混了。ABI是合約接口的二進制表示。)

4用web3.js提供的JavaScript API來調用合約。(根據(jù)調用的類型有可能會消耗以太幣。)

文章名稱:智能合約java代碼 智能合約編程
鏈接地址:http://www.muchs.cn/article40/hhooeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、、App開發(fā)、自適應網(wǎng)站網(wǎng)站內鏈、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設