中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何編譯部署測試TNS代幣

發布時間:2022-01-15 14:33:30 來源:億速云 閱讀:153 作者:iii 欄目:互聯網科技

這篇文章主要介紹“如何編譯部署測試TNS代幣”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何編譯部署測試TNS代幣”文章能幫助大家解決問題。

編譯

此時我們有一個包含一些Solidity代碼的文件。但為了使以太坊虛擬機能夠理解它,我們需要將其轉化為機器代碼。另外,為了從Web應用程序與它進行通信,我們需要一個ABI(應用程序二進制接口),它是對某個智能合約中存在的函數的通用可讀描述——無論是代幣還是更復雜的東西。我們可以使用Truffle的編譯器立即為EVM和ABI創建機器代碼。

在項目文件夾中,運行:

truffle compile

此命令將查看contracts子文件夾內部,將它們全部編譯并將其編譯后的版本放入build子文件夾中。請注意,如果你使用了上一部分的替代開發流程,那么我們的TNSToken合約繼承功能的所有父合約也將在其自己的文件中逐個編譯。

如何編譯部署測試TNS代幣

隨意檢查生成的JSON文件的內容。我們的TNSToken應該有超過10000行的JSON代碼。

部署到Ganache

現在讓我們看看是否可以將它部署到我們的仿真模擬器Ganache區塊鏈中。如果Ganache尚未在終端的選項卡中或操作系統的應用程序中運行,請運行以下命令:

ganache-cli

或運行應用程序以獲得這樣的屏幕:

如何編譯部署測試TNS代幣

然后,回到我們剛剛編譯合約的文件夾中,我們必須添加一個migration遷移。創建文件migrations/2_deploy_tnstoken.js。如果你不熟悉Truffle生態系統中的遷移,請參閱本指南。

我們將以下內容放入該文件中:

var Migrations = artifacts.require("./Migrations.sol");
var TNSToken = artifacts.require("./TNSToken.sol");

module.exports = function(deployer, network, accounts) {
  deployer.deploy(TNSToken, {from: accounts[0]});
};

首先,通過請求Migrations.sol進行完整的導入。每次遷移都需要這樣做。接下來,部署代幣意味著我們需要導入其Solidity代碼,我們通過TNSToken.sol(我們在前一部分中編寫的代碼)來完成此操作。最后,只是遷移function(deployer, network, accounts) {and the last}之間改變的部分。

在這種情況下,我們告訴部署者部署TNSToken并傳入from參數以設置初始代幣持有者。這里使用的地址是由Ganache生成的隨機地址,但是通過使用自動發送給部署者的accounts數組,我們確保可以訪問運行節點中存在的帳戶列表(無論是實時Geth節點還是Ganache)。在我的特定示例中,account[0]地址為0xdFb659D556d926dd3585d0f18d4F8eD7939E8061,在上面的屏幕截圖中也很明顯。

我們也不要忘記在truffle.js配置開發環境:

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    }
  }
};

注意:照顧端口和IP; 你的可能會有所不同!

最后,在項目文件夾中,運行truffle migrate。你應該看到這樣的東西:

如何編譯部署測試TNS代幣

注意TNStoken旁邊的以太坊地址:0x3134bcded93e810e1025ee814e87eff252cff422。這是我們的代幣部署的地方。現在讓我們看看它的實際效果。

測試代幣

在這種情況下,不需要自動測試。代幣合約是高度標準化和戰斗測試。如果我們使用的某些功能超出了傳統代幣的范圍,那么自動化測試就會派上用場。但是,通過將它發送到地址和從地址發送來測試它已經足夠了。

打開像MyEtherWallet這樣的錢包UI,在右上角的菜單中選擇一個自定義網絡。在對話框中,輸入你的私有區塊鏈給你的信息——Ganache或實際的PoA區塊鏈,根據本教程系列的第1部分,你可以運行的任何一個。在我的例子中,地址為127.0.0.1,端口為7545

如何編譯部署測試TNS代幣

在MEW中配置網絡

打開你在部署腳本中設置為from值的錢包。如果你正在使用Ganache,你會看到它的私鑰打印在Ganache UI的屏幕上或終端的ganache輸出中。

如何編譯部署測試TNS代幣

最后,需要告知MEW該代幣存在。我們通過添加自定義代幣來完成此操作。

如何編譯部署測試TNS代幣

在MEW中添加自定義代幣

添加代幣后,你會立即注意到該帳戶現在有1億的余額,并且能夠在貨幣下拉選擇菜單中發送它們。我們試著將一些發送到另一個地址。

如何編譯部署測試TNS代幣

如何編譯部署測試TNS代幣

如何編譯部署測試TNS代幣

繼續發送,然后再將原始帳戶恢復到1億。我們剛剛確保代幣的基本功能按預期工作。

部署到實時網絡

如果不將其部署在實時網絡上,這將不是真正的代幣測試。但是,我們不要使用主網絡,而是像Rinkeby這樣的測試網。

truffle.js,讓我們添加一個新的網絡rinkeby,這樣我們的文件看起來像這樣:

require('dotenv').config();
const WalletProvider = require("truffle-wallet-provider");
const Wallet = require('ethereumjs-wallet');
const Web3 = require("web3");
const w3 = new Web3();

const PRIVKEY = process.env["PRIVKEY"];
const INFURAKEY = process.env["INFURAKEY"];

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    },
    rinkeby: {
      provider: function() {
        return new WalletProvider(
          Wallet.fromPrivateKey(
            Buffer.from(PRIVKEY, "hex")), "https://rinkeby.infura.io/"+INFURAKEY

        );
      },
      gas: 4600000,
      gasPrice: w3.utils.toWei("50", "gwei"),
      network_id: "3",
    },
  }
};

哎呀!這都是什么?

讓我們逐行梳理它。

前幾行導入一些節點模塊,因此我們可以使用下面的函數。如果你得到任何一個缺少的模塊消息,只需運行npm install web3-wallet-provider truffle-wallet-provider web3 dotenv --save應該可以解決問題。

接下來,我們從根目錄中的.env文件中加載我們正在運行合約錢包的私鑰(所以錢包將獲得1億個代幣;我們不能在這里使用from值)項目文件夾。如果它不存在,請創建它。該文件還有一個Infura.io訪問密鑰,這是一個托管以太坊節點并允許應用程序連接到它們的網站,因此開發人員無需在其計算機上運行完整的以太坊節點。

.env文件默認是隱藏的,可以在.gitignore忽略,這樣就不會有私鑰泄漏的危險——這是一個非常重要的預防措施!這是文件包含的內容:

PRIVKEY="YOUR_PRIVATE_KEY";
INFURAKEY="YOUR_INFURA_ACCESS_KEY";

你可以在此處注冊獲取Infura密鑰。如果你只是安裝Metamask,將其切換到Rinkeby,然后轉到導出私鑰,則可以輕松獲取私鑰。但是,任何方法都可行,所以選擇你喜歡的任何方法。你也可以使用Ganache的私鑰。一個私鑰可以在所有以太坊網絡上解鎖相同的錢包——testnetrinkebymainnet,你可以命名它。

回到我們的配置文件。我們有一個新的network入口:rinkeby。這是我們將要部署的以太坊測試網的名稱,提供商內部的代碼基本上是千篇一律的復制粘貼,告訴Truffle“抓住我的私鑰,對其進行十六進制編碼,使其成為一個未鎖定的錢包,然后再通過它來和Infura交互“。

最后,我們定義了我們希望在執行此合約時要花費的gas限制(460萬就夠了,如果需要可以更改),gas需要多少(50 Gwei實際上相當昂貴,但我們正在玩的以太網是模擬的,所以沒關系),并且將網絡ID設置為4,因為這是Rinkeby testnet的標簽。

還有一件事我們需要做。我們之前寫的遷移文件是針對起始地址,但Rinkeby的地址不同。這是否意味著我們需要根據網絡更改部署腳本?當然不是!讓我們將2_deploy_tnstoken.js文件更改為如下所示:

var Migrations = artifacts.require("./Migrations.sol");
var TNSToken = artifacts.require("./TNSToken.sol");

module.exports = function(deployer, network, accounts) {
  if (network == "development") {
    deployer.deploy(TNSToken, {from: accounts[0});
  } else {
    deployer.deploy(TNSToken);
  }
};

正如你所看到的,部署腳本是簡單的JavaScript,并且為部署者提供的第二個參數始終是網絡的名稱——我們可以使用它來區分它們。

如果我們現在嘗試使用truffle migrate --network rinkeby運行遷移,如果我們使用的地址是新的,它將失敗:

如何編譯部署測試TNS代幣

這是因為該地址在部署合約時無需花費以太。但這很容易解決。只需前往Rinkeby Faucet免費獲取一些。

如何編譯部署測試TNS代幣

現在重新運行遷移,代幣合約將在Rinkeby網絡上實時部署。它可以像上面的Ganache用例一樣進行測試。一切都應該完全一樣,只有現在你也可以和你的朋友和同事一起測試。很有進展!

獎勵:驗證和ENS

對于額外的信任點,建議你在Etherscan上驗證代幣并為其注冊ENS域。

驗證

驗證意味著將代幣的源代碼提交給Etherscan,以便將其與網絡上部署的內容進行比較,從而將其驗證為無后門。這是在代幣地址的“代碼”選項卡上完成的。由于我們的代幣使用了一些第三方代碼,并且無法輕松將這些代碼拉入驗證屏幕的代碼窗口,因此我們需要修改合約。為此,我們將使用一個名為truffle-flattener的工具:

npm install --global truffle-flattener

該工具將所有依賴項和代幣的源代碼復制到一個文件中。我們可以像這樣運行它:

truffle-flattener contracts/TNSToken.sol >> ./contracts/TNSTokenFlat.sol

現在,contracts文件夾中應該存在一個新文件,幾乎與我們的源代碼相同,但粘貼了依賴代碼(例如,SafeMath.sol將粘貼在文件的頂部)。

將該新文件的內容粘貼到Verify屏幕的代碼窗口中,將編譯器設置為通過運行truffle version獲得的truffle版本,并將Optimization設置為No。單擊“驗證并發布”,一旦該過程完成,你的代幣的地址屏幕將顯示新選項卡:“讀取合約”和“寫入合約”,“ 代碼”選項卡將具有綠色復選標記,表示代碼已經過驗證。這為社區提供了額外的信任點。

如何編譯部署測試TNS代幣

ENS

ENS是以太坊名稱系統。它用于為以太坊提供人類可讀的名稱,因此你不必記住0xmumbojumbo字符串,而是可以記住像bitfalls.eth這樣的。然后,你甚至可以注冊像token.bitfalls.eth這樣的子域名。注冊ENS域的過程并不簡單,需要時間,因此如果你愿意這樣做,我建議你閱讀本指南并按照此處的說明進行操作。

關于“如何編譯部署測試TNS代幣”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

tns
AI

瓮安县| 巢湖市| 朝阳市| 江永县| 永顺县| 敦化市| 阜康市| 扶沟县| 巢湖市| 永福县| 迁安市| 泌阳县| 武山县| 柘荣县| 武汉市| 年辖:市辖区| 云梦县| 清涧县| 敦煌市| 河间市| 泊头市| 磴口县| 石景山区| 天祝| 北流市| 伊川县| 上虞市| 辽宁省| 长武县| 周口市| 永丰县| 秦安县| 靖安县| 福贡县| 胶南市| 永登县| 云梦县| 琼结县| 阳原县| 淄博市| 浠水县|