zeppelin连接数据源_使用开放源代码合同(open-zeppelin)创建以太坊令牌
zeppelin連接數(shù)據(jù)源
by Danny
通過(guò)丹尼
使用開(kāi)放源代碼合同(open-zeppelin)創(chuàng)建以太坊令牌 (Create an Ethereum token using open source contracts (open-zeppelin))
I want to show you that creating a best practice token is a simple process. To be honest, we are going to be doing some coding, but it won’t be much.
我想向您展示創(chuàng)建最佳實(shí)踐令牌是一個(gè)簡(jiǎn)單的過(guò)程。 老實(shí)說(shuō),我們將要進(jìn)行一些編碼,但是不會(huì)太多。
We’ll be using Solidity to create our Ethereum token. But don’t worry, there are a lot of open source libraries and contracts to help us in the process.
我們將使用Solidity創(chuàng)建我們的以太坊令牌。 但是不用擔(dān)心,有很多開(kāi)源庫(kù)和合同可以在此過(guò)程中為我們提供幫助。
What we want is an ERC-20 compliant token. What that means is that the Ethereum developers have decided a set of functionalities that is necessary for your most common token usages today. There are other types of ERC standards, but we wont dive into it.
我們想要的是符合ERC-20的令牌。 這意味著以太坊開(kāi)發(fā)人員已經(jīng)決定了當(dāng)今最常見(jiàn)的令牌使用所必需的一組功能。 還有其他類(lèi)型的ERC標(biāo)準(zhǔn),但我們不會(huì)深入探討。
Requirements:
要求:
- Github Github
- Terminal 終奌站
- NodeJS 節(jié)點(diǎn)JS
- NPM NPM
- Metamask (For initial Account Creation) Metamask(用于初始帳戶(hù)創(chuàng)建)
Alright let’s start coding! The first thing we want to do is download truffleglobally. You can visit their repo at truffle and here’s the following snippet to install:
好吧,讓我們開(kāi)始編碼! 我們要做的第一件事是全局下載truffle 。 您可以在松露處訪(fǎng)問(wèn)他們的存儲(chǔ)庫(kù),以下是要安裝的代碼段:
npm install -g truffle*note: make sure you have the latest version of truffle if you installed this prior
*注意 :如果您事先安裝了最新版的松露,請(qǐng)確保已安裝
Truffle will handle the smart contract compilation, linking, and deployment for us. It’s a library that will make our lives easier for this demonstration.
松露將為我們處理智能合約的編譯,鏈接和部署。 這是一個(gè)圖書(shū)館,可以使我們的生活更加輕松。
Now we need to create a directory where our project will live. In my case I called it ethereum_token_tutorial.
現(xiàn)在,我們需要?jiǎng)?chuàng)建一個(gè)目錄,該目錄將用于我們的項(xiàng)目。 就我而言,我將其稱(chēng)為ethereum_token_tutorial。
So we have two options here. Either you can clone the repo I have created by following this:
因此,我們?cè)谶@里有兩個(gè)選擇。 您可以按照以下步驟克隆我創(chuàng)建的存儲(chǔ)庫(kù):
git clone -b initial_step https://git@github.com/danieljoonlee/ethereum_token_tutorial.gitOr you can do this in your terminal inside of your new directory:
或者,您可以在新目錄內(nèi)的終端中執(zhí)行此操作:
truffle initIf you followed the second option of doing truffle init. The directory should look like this:
如果遵循第二種選擇,即truffle init 。 該目錄應(yīng)如下所示:
etherem_token_tutorial|___contracts| |_____ConvertLib.sol| |_____MetaCoin.sol| |_____Migrations.sol|___migrations| |_____1_initial_migrations.js| |_____2_deploy_contracts.js|___test| |_____TestMetacoin.sol| |_____metacoin.js|___truffle.jsGo ahead and delete ConvertLib.sol , MetaCoin.sol , TestMetacoin.sol , metacoin.js.
繼續(xù)并刪除ConvertLib.sol , MetaCoin.sol , TestMetacoin.sol , metacoin.js 。
So your directory should look like this now:
因此您的目錄現(xiàn)在應(yīng)如下所示:
etherem_token_tutorial|___contracts| |_____Migrations.sol|___migrations| |_____1_initial_migrations.js| |_____2_deploy_contracts.js|___test|___truffle.jsGreat. Now we’re moving. Truffle helps us compile smart contracts and deploy them. But we deleted our smart contract files other than the migrating helper. Don’t worry, this is where Open-Zeppelin comes in.
大。 現(xiàn)在我們要搬家了。 松露可幫助我們編譯和部署智能合約。 但是我們刪除了遷移助手以外的智能合約文件。 別擔(dān)心,這是Open-Zeppelin的用武之地。
Open-Zeppelin is an open source repo where you can find smart contracts with generally best practices, good test coverage, and most likely audited*.
Open-Zeppelin是一個(gè)開(kāi)放源代碼回購(gòu),您可以在其中找到具有最佳實(shí)踐,良好的測(cè)試覆蓋率以及最有可能經(jīng)過(guò)審計(jì)*的智能合約。
Audit is when you have professional developers review your smart contracts looking for any leaks, bugs, or possibilities of malicious attacks.
審核是指讓專(zhuān)業(yè)開(kāi)發(fā)人員查看您的智能合約,以查找任何泄漏,錯(cuò)誤或惡意攻擊的可能性。
Here’s a link if you’re interested in smart contract attacks: Link
如果您對(duì)智能合約攻擊感興趣,請(qǐng)使用以下鏈接: 鏈接
For us to use any Open-Zeppelin contracts we need to install it into our repository:
為了讓我們使用任何Open-Zeppelin合同,我們需要將其安裝到我們的存儲(chǔ)庫(kù)中:
npm init -ynpm install -E zeppelin-solidityWe initialized a package.json with npm init -y. We also installed the package for using the Open-Zeppelin contracts.
我們使用npm init -y初始化了package.json。 我們還安裝了使用Open-Zeppelin合同的軟件包。
Okay, we’re going to write some Solidity. I did mention in the article earlier that this will not be much code and I wasn’t joking!
好的,我們將編寫(xiě)一些Solidity。 我在前面的文章中確實(shí)提到過(guò),這不會(huì)是太多代碼,而且我不是在開(kāi)玩笑!
Create a new file in the contracts folder. In my case I named it TestToken.sol
在contracts文件夾中創(chuàng)建一個(gè)新文件。 就我而言,我將其命名為T(mén)estToken.sol
Now your directory should look like this:
現(xiàn)在您的目錄應(yīng)如下所示:
etherem_token_tutorial|___contracts| |_____Migrations.sol| |_____TestToken.sol***(this one is new)|___migrations| |_____1_initial_migrations.js| |_____2_deploy_contracts.js|___test|___truffle.jsIn TestToken.sol we need to have the following code:
在TestToken.sol我們需要以下代碼:
// TestToken.solpragma solidity ^0.4.18;import "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol";contract TestToken is MintableToken { string public constant name = "Test Token"; string public constant symbol = "TT"; uint8 public constant decimals = 18;}Let’s break this down since it’s quite a bit , even though it’s only a few lines of code.
讓我們分解一下,因?yàn)樗m然很多,但只有幾行代碼。
pragma solidity ^0.4.18;
pragma solidity ^0.4.18;
It is required at the top of the file because it specifies the version of Solidity we’re using.
在文件頂部是必需的,因?yàn)樗付宋覀冋谑褂玫腟olidity版本。
import "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol";The above code snippet is why Open-Zeppelin is so useful. If you know how inheritance works, our contract is inheriting from MintableToken. If you don’t know how inheritance works, MintableToken has a lot of functionalities saved in inMintableToken.sol. We can use these functionalities to create our token. If you visit this MintableToken you’ll notice a ton of functions and even more inheritance. It can be a bit of a rabbit hole, but for this demonstration purpose, I want us to release a token into the testnet.
上面的代碼段是為什么Open-Zeppelin如此有用的原因。 如果您知道繼承的工作原理,那么我們的合同就是從MintableToken繼承的。 如果您不知道繼承的工作原理,則MintableToken在inMintableToken.sol中保存了很多功能。 我們可以使用這些功能來(lái)創(chuàng)建令牌。 如果您訪(fǎng)問(wèn)此MintableToken,您會(huì)注意到大量的函數(shù)甚至更多的繼承。 這可能有點(diǎn)麻煩,但是出于演示目的,我希望我們將令牌釋放到測(cè)試網(wǎng)中。
For us, Mintable let’s us create as many tokens as we want, so we won’t be starting with an initial supply. In my next article, we’ll create a nodejs service that will create new tokens, and handle other ERC-20 standard functionalities.
對(duì)于我們來(lái)說(shuō),Mintable讓我們創(chuàng)建所需數(shù)量的令牌,因此我們不會(huì)從初始供應(yīng)開(kāi)始。 在我的下一篇文章中,我們將創(chuàng)建一個(gè)nodejs服務(wù),該服務(wù)將創(chuàng)建新令牌并處理其他ERC-20標(biāo)準(zhǔn)功能。
The next bit of code:
下一段代碼:
contract TestToken is MintableToken { string public constant name = "Test Token"; string public constant symbol = "TT"; uint8 public constant decimals = 18;}This is where we can customize the token. In my case, I named mine “Test Token”, with the symbol “TT”, and decimals of 18. But why 18 decimals?
這是我們可以自定義令牌的地方。 在我的情況下,我將我的“ Test Token”命名為“ TT”,十進(jìn)制數(shù)為18。但是為什么要18十進(jìn)制數(shù)呢?
Decimals of 18 is fairly standard in the community. So if we have one test token it can potentially look like this 1.111111111111111111.
在社區(qū)中,小數(shù)點(diǎn)18是相當(dāng)標(biāo)準(zhǔn)的。 因此,如果我們有一個(gè)測(cè)試令牌,它可能看起來(lái)像這樣1.111111111111111111111。
Whelp. That’s all the Solidity coding we need to do for this token. We inherit all the main functionalities for a standardized ERC 20 token from Open-Zeppelin. After that we need to set our constants for the name, symbol, and decimals.
仔。 這就是我們需要為此令牌執(zhí)行的所有Solidity編碼。 我們繼承了Open-Zeppelin標(biāo)準(zhǔn)化ERC 20令牌的所有主要功能。 之后,我們需要為名稱(chēng),符號(hào)和小數(shù)設(shè)置常量。
Before we forget, we should create a Metamask account and get it funded with testnet ethereum.
在忘記之前,我們應(yīng)該創(chuàng)建一個(gè)Metamask帳戶(hù),并使用testnet以太坊為其提供資金。
Go ahead and search MetaMask extension for Chrome, or follow this link
繼續(xù)并搜索MetaMask于Chrome的MetaMask擴(kuò)展程序,或點(diǎn)擊此鏈接
After you install MetaMask you should see a series of steps. You can read through like terms of service. Eventually you’ll reach:
安裝MetaMask后,您應(yīng)該會(huì)看到一系列步驟。 您可以閱讀類(lèi)似的服務(wù)條款。 最終您將達(dá)到:
Input your password and confirm that password. On clicking create, you will see another screen.
輸入您的密碼并確認(rèn)該密碼。 單擊創(chuàng)建時(shí),您將看到另一個(gè)屏幕。
Make sure to save your seed words or copy them down into a text file. We will need those seed words to deploy the token onto the testnet.
確保保存您的種子詞或?qū)⑵鋸?fù)制到文本文件中。 我們將需要這些種子詞來(lái)將令牌部署到測(cè)試網(wǎng)上。
Also more important is to change your test from Mainnet Test Net to Ropsten Test net. It’s on the top left of your MetaMask tab. Here is the drop down:
同樣重要的是將您的測(cè)試從Mainnet測(cè)試網(wǎng)更改為Ropsten測(cè)試網(wǎng)。 它在您的MetaMask標(biāo)簽的左上方。 這是下拉列表:
The reason we’re using Ropsten Test Network is because it’s the closest testnet/implementation of the Main Ethereum Network.
我們使用Ropsten測(cè)試網(wǎng)絡(luò)的原因是因?yàn)樗且蕴恢骶W(wǎng)絡(luò)最接近的測(cè)試網(wǎng)/實(shí)現(xiàn)。
Next you will need to copy your address to clipboard from the ... menu like so:
接下來(lái),您需要將地址從...菜單復(fù)制到剪貼板,如下所示:
You should have an address similar to this one copied to your clipboard:
您應(yīng)該將與該地址相似的地址復(fù)制到剪貼板:
address: 0x8EeF4Fe428F8E56d2202170A0bEf62AAc93989dEThis is the address from which we’re going to deploy our token contract. Now one thing you need to know about deploying contracts is that they cost Ethereum, to be specific Gas. We’re going to need to get some testnet Ethereum into our accounts.
這是我們將用來(lái)部署令牌合約的地址。 現(xiàn)在,您需要了解的有關(guān)部署合同的一件事是,它們要花費(fèi)以太坊,具體來(lái)說(shuō)就是Gas。 我們將需要在賬戶(hù)中加入一些以太坊測(cè)試網(wǎng)。
Now that you have your address go to this Ropsten faucet link:
現(xiàn)在您有了地址,請(qǐng)轉(zhuǎn)到以下Ropsten水龍頭鏈接:
Ethernet FaucetEdit descriptionfaucet.ropsten.be
以太網(wǎng)水龍頭 編輯描述 faucet.ropsten.be
Copy and paste your address and soon you should have 1 Ethereum in your MetaMask wallet for your address.
復(fù)制并粘貼您的地址,不久您的MetaMask錢(qián)包中應(yīng)該有1個(gè)以太坊作為您的地址。
Just one more thing before we start coding our deployment process! We’re going to use a free API called Infura.io:
在開(kāi)始對(duì)部署過(guò)程進(jìn)行編碼之前,還有一件事情! 我們將使用一個(gè)名為Infura.io的免費(fèi)API:
Infura — Scalable Blockchain InfrastructureSecure, reliable, and scalable access to Ethereum APIs and IPFS gateways.infura.io
Infura —可擴(kuò)展的區(qū)塊鏈基礎(chǔ)架構(gòu) 對(duì)以太坊API和IPFS網(wǎng)關(guān)的安全,可靠和可擴(kuò)展的訪(fǎng)問(wèn)。 信息
Sign up for their services. You should get an email from them or be redirected to a site with your API Key. The one we want specifically is from the Ropsten Network.
注冊(cè)他們的服務(wù)。 您應(yīng)該從他們那里收到電子郵件,或使用API??密鑰將其重定向到網(wǎng)站。 我們特別想要的是來(lái)自Ropsten網(wǎng)絡(luò)的產(chǎn)品。
Test Ethereum Network (Ropsten)https://ropsten.infura.io/API_KEYCopy your API_KEY.
復(fù)制您的API_KEY。
Almost there! Now let’s start working on our deployment. Let’s head back in our code.
差不多了! 現(xiàn)在,讓我們開(kāi)始進(jìn)行部署。 讓我們回到我們的代碼中。
First things first, let’s talk about security. Create a new file in your root directory called .env. Your file structure should now look like this:
首先,讓我們談?wù)劙踩浴?在您的根目錄中創(chuàng)建一個(gè)名為.env的新文件。 您的文件結(jié)構(gòu)現(xiàn)在應(yīng)如下所示:
etherem_token_tutorial|___contracts| |_____Migrations.sol| |_____TestToken.sol|___migrations| |_____1_initial_migrations.js| |_____2_deploy_contracts.js|___test|___truffle.js|___.env**(new file)Inside your .env file lets add some environmental variables (these are variables that you can access anywhere in your code directory)
在.env文件中,可以添加一些環(huán)境變量(這些變量可以在代碼目錄中的任何位置訪(fǎng)問(wèn))
//.env fileINFURA_API_KEY=API_KEYMNENOMIC=MNEOMIC_FROM_METAMASKFirst add your API_KEY you copied into the file.
首先將您復(fù)制的API_KEY添加到文件中。
Remember the Mneomic(seed words) from initializing Metamask chrome extension? We’re going to need that now to deploy the contracts from. If you downloaded or wrote down your Mneomic, now write them down in your .env file MNENOMIC=SOME KEY PHRASE YOU DONT WANT THE PUBLIC TO KNOW.
還記得初始化Metamask chrome擴(kuò)展時(shí)的Mneomic(種子詞)嗎? 我們現(xiàn)在需要從中部署合同。 如果您下載或記下了Mneomic,請(qǐng)現(xiàn)在將其記入.env文件中MNENOMIC=SOME KEY PHRASE YOU DONT WANT THE PUBLIC TO KNOW.您.env MNENOMIC=SOME KEY PHRASE YOU DONT WANT THE PUBLIC TO KNOW.
IMPORTANT***
重要***
We added a .env file!!! We need to add a .gitignore file now to avoid adding the .env to a public repository if you ever decide to make the code public!
我們添加了.env文件!!! 如果您決定公開(kāi)代碼,我們現(xiàn)在需要添加.gitignore文件,以避免將.env添加到公共存儲(chǔ)庫(kù)中!
Create a .gitignore file in the same directory as your .env. Now it should look like this:
在與.env相同的目錄中創(chuàng)建一個(gè).gitignore文件。 現(xiàn)在看起來(lái)應(yīng)該像這樣:
etherem_token_tutorial|___contracts| |_____Migrations.sol| |_____TestToken.sol|___migrations| |_____1_initial_migrations.js| |_____2_deploy_contracts.js|___test|___truffle.js|___.env|___.gitignore**(newfile)Inside your .gitignore file:
在您的.gitignore文件中:
// .gitignorenode_modules/build/.envWe want to ignore node_modules/ because when we do npm install it will download packages from our package.json. We want to ignore buildbecause later on when we run a script, it will create that directory for us automatically. We also want to ignore .env because it has private information we don’t want to release to the public.
我們想忽略node_modules/因?yàn)樵谶M(jìn)行npm install ,它將從package.json下載軟件包。 我們想忽略build因?yàn)樯院筮\(yùn)行腳本時(shí),它將自動(dòng)為我們創(chuàng)建該目錄。 我們也想忽略.env因?yàn)樗覀儾幌M蚬姲l(fā)布的私人信息。
Great! Over in our terminal we need to add two more modules.
大! 在我們的終端中,我們需要再添加兩個(gè)模塊。
npm install --save dotenv truffle-hdwallet-providerSince we’re putting in private information, we need a way to access those variables from .env, and the dotenv package will help us.
由于我們要輸入私人信息,因此我們需要一種從.env訪(fǎng)問(wèn)這些變量的.env ,而dotenv軟件包將為我們提供幫助。
The second package, truffle-hdwallet-provider is a wallet enabled provider. Without this, we would need to download all the blocks or use a light wallet to make new transactions in the Ethereum network. With the wallet provider and Infura API. We can deploy instantly, also bypassing painful processes.
第二個(gè)軟件包truffle-hdwallet-provider是啟用了錢(qián)包的提供程序。 否則,我們將需要下載所有區(qū)塊或使用輕錢(qián)包在以太坊網(wǎng)絡(luò)中進(jìn)行新交易。 使用錢(qián)包提供商和Infura API。 我們可以立即部署,也可以繞過(guò)繁瑣的過(guò)程。
Over in the truffle.js in our root directory, we need to modify some configurations.
在根目錄的truffle.js中,我們需要修改一些配置。
// truffle.jsrequire('dotenv').config();const HDWalletProvider = require("truffle-hdwallet-provider");module.exports = { networks: { development: { host: "localhost", port: 7545, gas: 6500000, network_id: "5777" }, ropsten: { provider: new HDWalletProvider(process.env.MNENOMIC, "https://ropsten.infura.io/" + process.env.INFURA_API_KEY), network_id: 3, gas: 4500000 }, }};The first line indicates we want to use the .env variables in this repo. Generally in most apps, you only need to require this once in the starting config file.
第一行表明我們要在此.env中使用.env變量。 通常,在大多數(shù)應(yīng)用中,您只需在啟動(dòng)配置文件中要求一次。
Most of this is boilerplate. Main section we want to focus on is the ropsten network.
其中大部分是樣板。 我們要關(guān)注的主要部分是繩索網(wǎng)絡(luò)。
ropsten: { provider: new HDWalletProvider(process.env.MNENOMIC, "https://ropsten.infura.io/" + process.env.INFURA_API_KEY), network_id: 3, gas: 4500000 },The provider is our network. In our case, we want to deploy our token into the Ropsten network. Using the HDWalletProvider we pass in two arguments, process.env.MNENOMIC, "https://ropsten.infura.io/" + process.env.INFURA_API_KEY. We access our .env variables by referencing process.env.VARIABLE_NAME_IN_ENV.
提供者是我們的網(wǎng)絡(luò)。 在我們的案例中,我們希望將令牌部署到Ropsten網(wǎng)絡(luò)中。 使用HDWalletProvider我們傳入兩個(gè)參數(shù)process.env.MNENOMIC, "https://ropsten.infura.io/" + process.env.INFURA_API_KEY 。 我們通過(guò)引用process.env.VARIABLE_NAME_IN_ENV訪(fǎng)問(wèn)我們的.env變量。
We set the network_id: 3 because that represents Ropsten. 1 is the main Ethereum net and 2 is an old testnet.
我們將network_id: 3設(shè)置為network_id: 3因?yàn)樗硎綬opsten。 1是主要的以太坊網(wǎng)絡(luò), 2是舊的測(cè)試網(wǎng)。
Lastly, we set gas: 4500000, which is why we needed the Ethereum originally. We use gas/ethereum any time we need to modify/add something in the Ethereum Network.
最后,我們將gas: 4500000設(shè)置為gas: 4500000 ,這就是為什么我們最初需要以太坊的原因。 每當(dāng)需要在以太坊網(wǎng)絡(luò)中修改/添加某些內(nèi)容時(shí),我們都會(huì)使用gas/ethereum 。
Alright, onto the last step before deployment!
好了,部署前的最后一步!
Over in our migrations/2_deploy_contract.js, we need to make some modifications for our contract.
在我們的migrations/2_deploy_contract.js ,我們需要對(duì)合同進(jìn)行一些修改。
// 2_deploy_contract.jsconst TestToken = artifacts.require("./TestToken.sol");module.exports = function(deployer) { deployer.deploy(TestToken);};If you named your token contract file something else. You need to replace the TestToken.sol to whatever file you named it.
如果您將令牌合同文件命名為其他名稱(chēng)。 您需要將TestToken.sol替換為您命名的任何文件。
truffle compileThis should create a new folder in your directory:
這應(yīng)該在您的目錄中創(chuàng)建一個(gè)新文件夾:
etherem_token_tutorial|___build| |_____contracts| |_____BasicToken.json| |_____ERC20.json| |_____ERC20Basic.json| |_____Migrations.json| |_____MintableToken.json| |_____Ownable.json| |_____SafeMath.json| |_____StandardToken.json| |_____TestToken.json|___contracts| |_____Migrations.sol| |_____TestToken.sol|___migrations| |_____1_initial_migrations.js| |_____2_deploy_contracts.js|___test|___truffle.js|___.env|___.gitignore**(newfile)In our build folder, we have a bunch of contracts we inherited from the Open-Zeppelin library. If you’d like to know more about ERC-20 standards I’d check out the wiki. If there’s enough people asking for it I can make another blog post on it. For now here’s the link to the wiki.
在我們的build文件夾中,我們有一堆繼承自O(shè)pen-Zeppelin庫(kù)的合同。 如果您想了解有關(guān)ERC-20標(biāo)準(zhǔn)的更多信息,請(qǐng)查看Wiki。 如果有足夠的人要求它,我可以在上面發(fā)表另一篇博客文章。 現(xiàn)在,這里是Wiki的鏈接。
Here comes the moment of truth. Now we need to deploy the contracts into the Ropsten network. Enter the following line in your terminal:
關(guān)鍵時(shí)刻到了。 現(xiàn)在,我們需要將合??同部署到Ropsten網(wǎng)絡(luò)中。 在終端中輸入以下行:
truffle migrate --network ropstenYou should get a series of lines in your terminal like:
您應(yīng)該在終端中看到以下幾行:
Using network 'ropsten'.Running migration: 1_initial_migration.js Deploying Migrations... ... 0x7494ee96ad7db4a560b6f3169e0666c3938f9f54208f7972ab902feb049a7f68 Migrations: 0x254466c5b09f141ce1f93689db6257b92133f51aSaving successful migration to network... ... 0xd6bc06b3bce3d15dee4b733e5d4b09f0adb8f93f75ad980bad078484641d36e5Saving artifacts...Running migration: 2_deploy_contracts.js Deploying TestToken... ... 0x7e5c1b37f1e509aea59cd297417efe93eb49fdab2c72fa5c37dd2c63a3ba67b7 TestToken: 0x02ec6cbd89d3a435f8805e60e2703ef6d3147f96Saving successful migration to network... ... 0x2fd6d699295d371ffd24aed815a13c5a44e01b62ca7dc6c9c24e2014b088a34eSaving artifacts...This will take some time. Once it’s fully deployed copy the last txid. In my case:
這將需要一些時(shí)間。 完全部署后,復(fù)制最后一個(gè)txid。 就我而言:
0x2fd6d699295d371ffd24aed815a13c5a44e01b62ca7dc6c9c24e2014b088a34eThis will have an address to your token contract. Here is a link to my txid:
這將有您的令牌合同的地址。 這是我的txid的鏈接:
Ropsten Transaction 0x2fd6d699295d371ffd24aed815a13c5a44e01b62ca7dc6c9c24e2014b088a34eRopsten (ETH) detailed transaction info for 0x2fd6d699295d371ffd24aed815a13c5a44e01b62ca7dc6c9c24e2014b088a34eropsten.etherscan.io
Ropsten交易0x2fd6d699295d371ffd24aed815a13c5a44e01b62ca7dc6c9c24e2014b088a34e Ropsten(ETH)詳細(xì)的交易信息(0x2fd6d699295d371ffd24aed815a13c5a44e01b62ca7dc6c9c24eropstenio 。
Which has an address to the contract itself:
其中包含合同本身的地址:
Ropsten Accounts, Address and ContractsThe Ethereum BlockChain Explorer, API and Analytics Platformropsten.etherscan.io
Ropsten賬戶(hù),地址和合約 以太坊區(qū)塊鏈瀏覽器,API和分析平臺(tái) ropsten.etherscan.io
You can get the completed github repo here.
您可以在此處獲取完整的github存儲(chǔ)庫(kù)。
This part one of a series of creating a token and interacting with it. In the next blog we will create a simple node microservice. We will use this service to call various functions on your token smart contract, such as minting new tokens, transferring, etc.
創(chuàng)建令牌并與之交互的一系列步驟之一。 在下一個(gè)博客中,我們將創(chuàng)建一個(gè)簡(jiǎn)單的節(jié)點(diǎn)微服務(wù)。 我們將使用此服務(wù)在您的令牌智能合約上調(diào)用各種功能,例如鑄造新令牌,轉(zhuǎn)讓等。
If you find any mistakes or typos please let me know! Also I’m always looking for exciting projects in the blockchain space.
如果您發(fā)現(xiàn)任何錯(cuò)誤或錯(cuò)別字,請(qǐng)告訴我! 另外,我一直在尋找在區(qū)塊鏈領(lǐng)域令人興奮的項(xiàng)目。
If you found this helpful and feel like buying me a beer:
如果您覺(jué)得這有幫助,并且想給我買(mǎi)啤酒:
BTC: 3Kxz6zPweuiaVG28W78pX9DoEZVkLhH4nT
BTC:3Kxz6zPweuiaVG28W78pX9DoEZVkLhH4nT
BCH: qqwusc2peyvlh3wgl0tpt3ll4ug9zujfvy9586tgd4
BCH:qqwusc2peyvlh3wgl0tpt3ll4ug9zujfvy9586tgd4
ETH: 0x96Ee87e22D899BDc27EAD4fE3FCA8e9F39176B4C
ETH:0x96Ee87e22D899BDc27EAD4fE3FCA8e9F39176B4C
LTC: MDhqUBtGgVZrDG7TYzzyK2a2b99sHyHaQQ
LTC:MDhqUBtGgVZrDG7TYzzyK2a2b99sHyHaQQ
翻譯自: https://www.freecodecamp.org/news/create-an-ethereum-token-using-open-source-contracts-open-zeppelin-1e132e6233ed/
zeppelin連接數(shù)據(jù)源
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的zeppelin连接数据源_使用开放源代码合同(open-zeppelin)创建以太坊令牌的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到好几个生日蛋糕
- 下一篇: 梦到掉水里了什么意思周公解梦