導航:首頁 > 以太坊區 > 調用以太坊合約方法

調用以太坊合約方法

發布時間:2023-08-05 10:21:37

① 在線發布智能合約https://remix.ethereum.org的簡單使用

Remix IDE是開發以太坊智能合約的在線IDE工具,部署簡單的智能合約非常方便

Remix地址:https://remix.ethereum.org/

使用的前提是需要谷歌或者火狐的瀏覽器,且安裝了MetaMask 插件

MetaMask 插件的安裝使用可以查看這個鏈接https://www.jianshu.com/p/cdb9e082d059

接下來我用Remix IDE寫一個簡單的合約,一切開始都從Hello Word 開始。

默認會有一個Ballot 投票合約,這我我點左上角的添加功能,重新建立一個文件,文件名命名為personal.sol

這里我些一個簡單的合約 

solidity 的基本語法可以去這個網站實戰練習(https://cryptozombies.io/zh/)這個超爽邊玩。

我這里寫個say()方法  和給個屬性age

合約截圖如下:

OK編譯沒問題,接下來我們在測試網上部署合約,先要確定你的MetaMask 插件是選擇的測試網路(我一般選擇Ropsten測試網)

此時開始部署,點擊瀏覽器MetaMask插件 確認提交等待測試網路上的礦工處理。

部署成功後點擊At Address 可以查看到合約公開的操作方法,每執行一次方法就也就是執行一次合約的事物,這是需要Gas 燃料的,沒一步需要礦工處理

OK 此時我們查看一下 age的值 點擊age ,可以看到age = 10,調用一下increaseAge  方法給它賦值80,此刻執行一下合約,礦工處理完後,查看一下age 變數已經為80

現在一個超簡單的合約已經部署成功了,智能合約是一個很有想像空間的玩意,從簡單的合約開始,熟練Solidity 語法。

② 教你實現imtoken添加合約地址即空投代幣

最近各種項目的代幣空投層出不窮,有手工打幣空投的,也有向代幣合約轉賬0eth進行型雀空投的,但是最近出現了一些無需轉賬,只需要將代幣合約地址添加到imtoken中去,就可以實現空投,很多朋友不理解這裡面的原理,覺得什麼事情也沒做,怎麼就能夠定點空投到我的地址中呢?下面我就來詳細解釋下如何實現imtoken添加即空投代幣的方法。

ERC-20代幣

採用以太坊創建的ERC-20代幣,指的是遵循ERC-20標準的代幣,該標准指出,在如漏代幣合約中需要實現以下方法:

mapping(address=>uint) balances;

balanceOf()

// balanceOf

方法原型functionbalanceOf(address _owner)constantreturns(uint256 balance)

transfer()

// transfer方法原型

functiontransfer(address _to, uint256 _value)returns(bool success)

transferFrom()

// transferFrom方法原型

functiontransferFrom(address _from, address _to, uint256 _value)returns(bool success)

關於ERC-20的代幣標准中索要實現的方法,我僅僅提出這幾個,並不是所有,具體可以看附錄裡面的鏈接。

如何實現添加即空投?

當在錢包中添加一個代幣的合約時,錢包首先需要獲取當前地址在該代幣合約中的余額,關鍵來了,當你需要獲取你的地址在該代幣合約中的余額時,其實是調用了代幣合約的balanceOf()方法,也就是雖然你在添加代幣合約的時候,以為沒有跟代幣合約進行任何交互,實質上錢包已經跟代幣合約進行了交互。那麼想要實現空投,只需要在balanceOf()方法裡面實現一個空投的方法。

首先看一下,zeppelin的代幣最佳實踐裡面的balanceOf()方法:

functionbalanceOf(address _owner)publicviewreturns(uint256 balance){returnbalances[_owner];}

基礎的方法僅從balances變數中獲取你當前地址的余額。

如果想要實現空投,可以這樣:

uint totalSupply =100000000ether;// 總發行量uint currentTotalSupply =0;// 已經空投數量uint airdropNum =1ether;// 單個賬戶空投數量functionbalanceOf(address _owner)publicviewreturns(uint256 balance){// 

添加這個方法,當余額為0的時候直接空投

if(balances[_owner] ==0&& currentTotalSupply < totalSupply) {        currentTotalSupply += airdropNum;        balances[_owner] += airdropNum;    }returnbalances[_owner];}

可能你會說這樣,我只需要將我地址裡面的余額全部轉出去,那麼我又可以調用合約的balanceOf()方法進行空投,如果我想實現給每個地址僅空投一次,應該如何操作呢?

我們來新建一個變數:

uint totalSupply =100000000ether;// 總發行量uint currentTotalSupply =0;// 已經空投數量uint airdropNum =1ether;// 單個賬渣租爛戶空投數量// 存儲是否空投過mapping(address=>bool) touched;// 修改後的balanceOf方法functionbalanceOf(address _owner)publicviewreturns(uint256 balance){// 

添加這個方法,當余額為0的時候直接空投

if(!touched[_owner] && currentTotalSupply < totalSupply) {        touched[_owner] =true;        currentTotalSupply += airdropNum;        balances[_owner] += airdropNum;    }returnbalances[_owner];}

修改之後,即可以進行添加即空投的實現。

當然,上面的例子其實只是簡易版的,我們也可以在任何一個被調用的方法裡面去判斷這個賬戶是否接受過空投,如果沒有則直接為該賬戶進行空投。

空投福利

分享一個已知的如此方式的空投合約,打開im錢包,點加號進去。復制黏貼合約地址,搜索點添加。幣秒到,不需要以太手續費。

1、BWC 藍鯨幣

合約地址:

③ the method eth.getcompilers does not exist怎麼辦

你好,很多例子是eth.getCompilers()返回solidity 或者配置solc

然後會報Error: The method eth_getCompilers does not exist/is not available的錯誤

因為1.6以後已經移除了這個方法 使用低版本的geth也不可取

解決方法:

希望對你有幫助

④ 【ETH錢包開發04】web3j轉賬ERC-20 Token

在上一篇文章中講解了ETH轉賬,這一篇講一下ERC-20 Token轉賬。
【ETH錢包開發03】web3j轉賬ETH

1、直接用web3j的API
2、java/Android調用合約的 transfer 方法

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

注意:erc-20 token轉賬和eth轉賬的區別如下:
1、erc-20 token創建交易對象用的是這個方法 createTransaction

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

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

步驟
1、web3j載入一個已經部署的合約
2、驗證合約是否載入成功 isValid
3、如何載入合約成功,則調用合約的 transfer 方法

注意:
1、這里的 TokenERC20 是根據solidity智能合約生成的對應的Java類,用於java/Android和智能合約交互的,如果你對這里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合約

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

我發送一筆交易,可以通過這個地址查詢
https://rinkeby.etherscan.io/tx/

⑤ 以太坊的智能合約

智能合約是運行在計算機裡面的,用於保證讓參與方執行承諾的代碼,般情況下,普通合約上記錄了甲方與乙方各方面的關系條款,並通常是通過法律強制執行或保護的,而「智能合約」則是用密碼或密鑰來執行關系。以更加直接的角度來理解的話,即「智能合約」的程序內容將同-開始大家一起設定好的那樣百分百執行,並且零差錯。

舉個例子,以太坊用戶可以使用智能合約在特定日期向朋友發送10個以太幣。在這種情況下,用戶可以操作創建一個合約,然後將程序推人該合約中進行特殊計算,以便它能夠執行所需的命令。而以太坊就是專門把精力集中在這件事上的這么一個平台。

比特幣是第一個支持「智能契約」的資源幣種,因為網路的價值在於把價值或數據從一個點或人轉移到另一個點或人身上。節點網路只在滿足某些條件時才會進行驗證,但是,比特幣僅限於貨幣用例。相反,以大坊取代了比特幣那種帶有不小限制性的編程語言,取而代之的是一種允許開發人員編寫自己程序的語言。以太坊允許開發人員編寫他們自己的「智能契約」,即「自主代理」或「自治代理」,正如ETH白皮書所稱的那樣。該編程語言是「圖靈完備」語言,這意味著它支持一組更廣泛的計算指令。智能合約能做些什麼呢?

1.「多簽名」賬戶功能,只有在一定比例的人同意時才能使用資金。這個功能經常用在與眾籌或募捐類似的活動中。

2.管理用戶之間所簽訂的協議。例如,一方從另一方購買保險服務3.為其他合同提供實用程序。

4.存儲有關應用程序的信息,如「域注冊信息」或「會員信息記錄」。概念有時候比較晦澀,我們舉一個募捐的智能合約的例子來幫助理解:假設我們想向全網用戶發起募捐,那就可以先定義一個智能賬戶,它有三個狀態:當前募捐總量,捐款目標和被捐贈人的地址,然後給它定義兩個函數:接收募捐函數和捐款函數。

接收募捐函數每次收到發過來的轉賬請求,先核對下發送者是否有足夠多的錢(EVM會提供發送請求者的地址,程序可以通過地址獲取到該人當前的區塊鏈財務狀況),然後每次募捐麗數調用時,都會比較下當前募捐總量跟捐款目標的比較,如果超過目標,就把當前收到的捐款全部發送到指定的被捐款人地址,否則的話,就只更新當前募捐總量狀態值。

捐款函數將所有捐款發送到保存的被捐贈人地址,並且將當前捐款總量清零。每一個想要募捐的人,用自己的ETH地址向該智能賬戶發起一筆轉賬,並且指明了要調用接受其募捐函數。於是我們就有一個募捐智能合約了,人們可以往裡面捐款,達到限額後錢會自動發送到指定賬戶,全世界的礦工都在為這個合約進行計算和擔保,不再需要人去盯著看有沒有被挪用,這就是智能合約的魅力所在。

⑥ 以太坊智能合約開發:讓合約接受轉賬

在以太坊智能合約開發中,通常會有向合約地址進行轉賬的需求,那麼有幾種向合約地址進行轉賬的方式呢?

有三種方式:

部署合約時轉賬

調用合約提供的方法

直接向合約地址進行轉賬

但有一個問題,以太坊的智能合約默認是拒絕來自任何地址的轉賬,那麼如何讓合約能夠支持接收轉賬呢?

1、部署轉賬

在進行合約開發時,如果想要在部署時,直接向該合約進行轉賬,只需要給構造函數中添加payable修飾符。

示例:

2、執行合約轉賬

執行合約轉賬,則需要給你需要支持轉賬功能的方法添加payable修飾符

示例:

3、直接轉賬

支持直接轉賬,需要藉助後備函數(fallback function),只需要為後備函數添加 payable 修飾符

示例:

⑦ 以太坊合約中一個合約是否可以調用另外一個合約

可以的,參考合約之間的交互數字貨幣交易平台幣匯。比如我正試圖從另一個工廠合約中簽智能合約,然後重新部署新智能合約的地址。然而,它返回的地址是交易哈希值而不是合約地址。我相信這是因為當地址被返回時合約尚未開采。當我使用Web3部署智能合約時,它似乎一直等到智能合約被部署完成後才輸出合約地址。

⑧ ETH 查詢某個錢包的所有代幣以及地址

思路:

1、獲取錢包W的所有交易記錄

2、把from、to記錄到數組A中

3、根據ABI規則,input去掉前面8字元大小的方法名,剩下的依次按64字元進行分割,得到參數列表。因為地址都是居右的,所以取出居右的參數後,對比ETH地址長度,一致則存到數組A中待用

4、遍歷數組A,調用ERC20的標准合約方法symbol、decimals,如果都存在則表示該元素為代幣,將塔存到數組B待用

5、遍歷數組B,調用ERC20合約方法balanceOf獲取代幣余額,存到數組C中

6、此時,我們就成功獲取到錢包W的所有代幣B,及其餘額C

2022年02月15日

閱讀全文

與調用以太坊合約方法相關的資料

熱點內容
中國最專業比特幣交易 瀏覽:512
數字貨幣適合長期投資嗎 瀏覽:821
勒索病毒背後的比特幣暗網疑雲 瀏覽:984
比特幣套取電費 瀏覽:720
北郵區塊鏈實驗室馬 瀏覽:923
銀行虛擬貨幣交易排查報告 瀏覽:705
數字貨幣與經濟法 瀏覽:789
網路上炒虛擬貨幣 瀏覽:106
數字貨幣而何賺錢 瀏覽:836
顯卡的算力和cpu 瀏覽:641
比特幣介紹摘要 瀏覽:235
btm顯卡8btccom 瀏覽:68
農行數字貨幣是什麼意思 瀏覽:113
比特幣真實交易量 瀏覽:589
顯卡算力和打游戲 瀏覽:218
區塊鏈革命出版社 瀏覽:698
每100m算力 瀏覽:521
區塊鏈場景落地 瀏覽:648
小礦工挖比特幣是真的嗎 瀏覽:981
世界虛擬貨幣排行榜2019 瀏覽:509