7*24快訊如何使用D...

如何使用DappTools | 鏈環

在編寫智能合約時,開發人員只需要了解一種語言,例如 堅固性, 虛擬機, 或者 . 但是,選擇一個框架並圍繞該框架學習所有語言可能會很棘手。

學習一個簡約的命令行框架,比如 Dapp工具 消除了這些問題,並使Web3 開發人員的生活變得更加輕鬆。

在本DappTools 教程中,您將學習如何通過DappTools 框架創建、測試和部署您的智能合約。

查看本教程隨附的視頻:

什麼是DappTools?

DappTools 是一個類似於Hardhat 和Brownie 的框架,可幫助智能聯繫人開發人員測試、部署和維護他們的代碼。如果你部署一個合約,你將編譯後的字節碼存儲在哪裡?你如何跟踪它的去向?重新部署新代碼有多容易?所有這些都是通過使用智能合約開發框架解決的問題。

DappTools 最初是用Haskell 編寫的。然而最近,Paradigm 團隊採用了DappTools 並用Rust 重寫了它,稱他們為新創建 鑄造廠. 兩者的工作方式相似,因為它們都以命令行為中心,速度快,並且經常涉及編寫帶有大量模糊測試的Solidity 測試。

DappTools 是許多領先協議的流行選擇。

為什麼使用DappTools?

如果您是喜歡Linux、bash shell 和快速、以命令行為中心的編碼的開發人員,那麼這絕對是您應該嘗試的智能合約框架。此外,如果您不熟悉JavaScript 或Python,這對您也很有用!

我們在學習什麼?

在本教程中,我們將學習如何:

  1. 使用DappTools
  2. 部署Chainlink 驅動的 混合智能合約 使用 dapptools-starter-kit

以下是通過此入門工具包使用Chainlink 服務的一些示例:

安裝

要求

首先,我們需要安裝一些東西。

您可能已經安裝了它,但如果沒有,您將需要 make. 跟隨 這些步驟 檢查您是否安裝了它。

入門

一旦我們安裝了這些工具,我們就可以克隆入門工具包repo 並開始使用它。

sh
git clone https://github.com/smartcontractkit/dapptools-starter-kit
cd dapptools-starter-kit
make # This installs the project's dependencies.
make test

現在你有了文件,讓我們來看看所有東西的作用:

  • Makefile: 你把你的腳本放在哪裡。 DappTools 是基於命令行的,我們的makefile 幫助我們運行帶有幾個字符的大型命令。
  • lib:此文件夾用於外部依賴項,例如OpenZeppelin 或ds-test。
  • out: 你的編譯代碼去哪裡了。類似於Brownie 中的build 文件夾或Hardhat 中的artifacts 文件夾。
  • src:這是您的智能合約所在的位置。類似於Brownie 和Hardhat 中的contracts 文件夾。

測試

讓我們做一些測試!為了測試我們可以運行 make test 或者 dapp test.

DappTools 中的所有命令都適用於這個repo,包括 dapp build, ethsign, 和 dapp test.

導入外部依賴

假設我們想使用 OpenZeppelin 標準. 要安裝外部合同或包,我們可以使用 dapp install 命令。我們需要命名GitHub 存儲庫組織和要安裝的存儲庫名稱。

首先,我們需要提交到目前為止的更改。 DappTools 將外部包作為git 子模塊引入,因此我們需要先提交。

跑:

git add .
git commit -m ‘initial commit’

然後,我們可以安裝我們的外部包。例如,對於OpenZeppelin,我們將使用:

dapp install OpenZeppelin/openzeppelin-contracts

您現在應該在lib 文件夾中看到一個標有openzeppelin-contracts 的新文件夾,因為它是從GitHub 下載的。這個repo 已經從OpenZeppelin 合約開始,所以有一些重複,但我們仍然需要看看它是如何工作的。

部署

要部署,您首先需要設置您的 ethsign 和你的 .env 文件。

設置您的帳戶/ethsign

要將您的私鑰導入DappTools,您可以使用密鑰庫或 ethsign. ethsign 附帶安裝 dapptools. 為了 ethsign,運行以下命令:

bash
ethsign import 

現在將提示您輸入私鑰和密碼。您可以從錢包中獲取私鑰,例如 元掩碼. 成功後,將私鑰的地址添加到您的 .env 文件下 ETH_FROM 多變的。見 .env.example 文件為例。

Makefile 有關它如何在幕後工作的更多背景信息。

如果您要部署到測試網,請確保您的錢包中有測試網ETH 和LINK。您可以從 鏈環水龍頭.

設置您的 .env 文件

你可以在 .env.example 你的一個例子 .env 應該看起來像(部署到實時網絡)。

  1. ALCHEMY_API_KEY: 你可以從得到一個 煉金術 帳戶。
  2. ETH_FROM:您要從中發送交易的錢包地址。您必須將要使用的地址的私鑰加載到您的 ethsign,見上文。
  3. ETHERSCAN_API_KEY:用於驗證Etherscan 上的合約(可選)。
  4. ETH_RPC_URL:用於在使用時具有默認部署網絡 make deploy (選修的)。

測試網和主網部署

設置您的 ETH_RPC_URL 或者 ALCHEMY_API_KEY 在你的 .env 文件,然後運行以下命令之一:

計數器(Keeper 兼容合約):

bash
make deploy CONTRACT=Counter

價格飼料:

bash
make deploy CONTRACT=PriceFeedConsumer

Chainlink VRF 消費者:

bash
make deploy CONTRACT=VRFConsumer

您可以在各自的部署參數中更改它們的部署參數 deploy 文件中 scripts 文件夾。所有構造函數參數都在 ./src/helper-config.sh 文件夾。在這裡,您可以跨網絡分配不同的構造函數參數。

本地測試網

# 在一個終端上

dapp 測試網

改變你的 ETH_RPC_URLhttp://127.0.0.1:8545

然後運行您的部署腳本。

在Etherscan 上進行驗證

部署合約後,您可以使用以下方法在Etherscan 上對其進行驗證:

ETHERSCAN_API_KEY=<api-key> dapp verify-contract <contract_directory>/<contract>:<contract_name> <contract_address>

例如:

ETHERSCAN_API_KEY=123456765 dapp verify-contract ./src/Counter.sol:Counter 0x23456534212536435424

查看 dapp 文檔 了解如何使用DappTools 驗證合約。

與您的合同互動

為了與我們的合約交互,我們使用 seth 命令。假設我們已經部署了我們的 PriceFeedConsumer.sol 到Kovan,現在我們要調用 getLatestPrice 功能。我們如何做到這一點?

ETH_RPC_URL=<YOUR_RPC_URL> seth call <YOUR_CONTRACT_ADDRESS> "getLatestPrice()"

例如:

ETH_RPC_URL=https://alchemy.io/adsfasdf seth call 0xd39F749195Ab1B4772fBB496EDAF56729ee36E55 "getLatestPrice()"

這會給我們一個像 0x0000000000000000000000000000000000000000000000000000004c17b125c0 這是十六進制 326815000000

這是調用交易(不是花費gas)。要更改區塊鏈的狀態(消耗氣體),我們將使用 seth send. 假設我們有一個 VRFConsumer 合約已部署,我們想調用 getRandomNumber

首先,我們需要在Kovan 鏈上向我們的合約發送一些LINK:

ETH_RPC_URL=<YOUR_RPC_URL> ETH_FROM=<YOUR_FROM_ADDRESS> seth send <LINK_TOKEN_ADDRESS> "transfer(address,uint256)" <VRF_CONSUMER_ADDRESS> 1000000000000000000

喜歡:

ETH_RPC_URL=https://alchemy.io/adfasdf ETH_FROM=0x12345 seth send 0xa36085F69e2889c224210F603D836748e7dC0088 "transfer(address,uint256)" 0xa74576956E24a8Fa768723Bd5284BcBE1Ea03adA 100000000000000000

在哪裡 100000000000000000 = 1 鏈接

然後,我們可以調用 getRandomNumber 功能:

ETH_RPC_URL=<YOUR_RPC_URL> ETH_FROM=<YOUR_FROM_ADDRESS> seth send <VRF_CONSUMER_ADDRESS>  "getRandomNumber()"

稍作延遲後,讀取結果:

ETH_RPC_URL=<YOUR_RPC_URL> seth call <VRF_CONSUMER_ADDRESS> "randomResult()"

如您所見,將這些腳本編入我們的腳本會很棒 scripts 文件夾。如果您想貢獻,請進行PR!

資源

本教程的一些有用資源:

概括

DappTools 是一個非常強大的應用程序,可以幫助您構建改變遊戲規則的dApp。我們建議您檢查一下,試一試,看看您可以通過利用Chainlink 去中心化服務構建什麼。

通過訪問了解有關Chainlink 的更多信息 鏈環 或閱讀文檔 docs.chain.link. 要討論集成,請聯繫專家。

Source Link

最受歡迎

繼續閱讀

長期持有者持有的比特幣(BTC)供應量達到最高水平

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打...

現在讀

$COOKIE, the Cookie3 Mark...

Tallinn, Estonia, March 26th, 2024...

長期持有者持有的比特幣(BTC)供應量達到最高水平...

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持有者和投機者。 儘管BTC 的價格在過去一個月中保持相對平穩,範圍在約29,000 美元至31,000 美元之間,但人們還是開始瘋狂囤積。 ...

Caldera 宣布與Espresso Syste...

Caldera 開發人員可以利用Espresso Sequence...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打開了大門。對於那些尋求利用Web3 遊戲巨大潛力的人來說,確保先發優勢至關重要。 了解Web3 遊戲生態系統在深入研究Web3 遊戲之前,有...

Taapsee Pannu 推出NFT 平台,介紹...

企業家貢獻者表達的意見是他們自己的。 您正在閱讀《企業家印度》,這是企業家媒體的國際特許經營刊物。 女演員Taapsee Pannu 最近推出了“taapseeclub.com”,這是她自己的非同質代...

比特幣(BTC) 地址休眠超過11 年,轉移310...

經過11 年多的閒置之後,一個包含3100 萬美元BTC 的休眠比特幣地址最近突然活躍起來。 2023年7月22日,地址 轉入 將其全部餘額轉移到新地址。 早期BTC 地址復活 比特幣自2009 年以來就已經存在,因此存在多年來不活躍的休眠地址,其中包含大量BTC。這種加密貨幣的一些早期採用者能夠...

加密貨幣死了嗎?當今加密貨幣的現狀

您之前可能聽說過加密貨幣正在消亡(或比特幣已消亡)。在這篇文章中,我們將研究加密貨幣的狀態,並嘗試回答這個問題:加密貨幣現在已經死了嗎? 在我們開始之前,我們想澄清一下,本文指的是最廣泛意義上的“加密貨幣行業”; 在裡面 網絡3 感覺。該定義包括加密資產市場; 但它還包括其他非財務用例。 隨著近來加...

Chancer 可能成為體育和社交博彩領域的下一個...

加密貨幣 隨著企業財報季節的繼續,本週股市表現好壞參半。在Ne...

以太坊(ETH) 創下兩個月來CEX 流入最高紀錄...

過去一周,以太坊(ETH)流入中心化交易所(CEX)的資金量創下了過去兩個月來的最高水平。這些重大的資產變動表明ETH 的價格可能會下跌。 CoinGecko 數據顯示,第二大加密貨幣的價格一直在小幅下跌,過去一周價值下跌了2.5%。截至撰寫本文時,以太幣易手價格為1,892.65 美元,過去24...

新的DeFi 法案有“不可行的義務”

加密貨幣創新委員會表示,新的反洗錢法案沒有為DeFi 中的非法金融...

幣安大幅削減成本,瑞波幣為美國銀行和加密貨幣風險投...

美國證券交易委員會(SEC)對加密貨幣公司的打擊似乎嚴重影響了幣安的業務。據報導,在過去幾週內,該加密貨幣交易所解雇了1,000 多名員工,並削減了一些福利。 幣安表示,“當前的市場環境和監管環境”導致利潤下降,這表明可能正在進行更多削減。一位發言人告訴Cointelegraph,該公司將考慮縮減“...

Automata 雙週更新:第48 期| 通過自動...

迎接新的季度意味著設定我們的意圖並為團隊規劃下一步的行動。幕後醞釀的一切——合作、產品功能和營銷發布——很難抑制我們的興奮。我們一開始就在1RPC(2 個備受期待的第2 層主網)上添加了對Linea 和Base 的支持。科技載體更新頁腳以顯示界面版本平滑的用戶體驗 USDC CCTP 支持 關於仲裁...