溫馨提示×

溫馨提示×

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

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

如何創(chuàng)建和部署一個屬于自己的EOS代幣

發(fā)布時間:2021-12-22 15:26:05 來源:億速云 閱讀:136 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細講解有關如何創(chuàng)建和部署一個屬于自己的EOS代幣,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

下面我們將弄清楚什么是EOS代幣以及如何自己創(chuàng)建和部署EOS代幣。

與以太坊相反,EOS帶有即插即用的代幣智能合約。以太坊擁有ERC20智能合約,EOS擁有eosio.token智能合約。Eosio.token智能合約允許你通過提供最大代幣供應數(shù)量和代幣的書面定義,通過向帳戶發(fā)放代幣以及在帳戶之間轉(zhuǎn)移代幣來創(chuàng)建你自己的代幣。EOS區(qū)塊鏈上的EOS代幣使用相同的智能合約簽發(fā)。

cleos --url https://api.main.alohaeos.com:443 get currency stats eosio.token EOS
{
  "EOS": {
    "supply": "1003605574.9616 EOS",
    "max_supply": "10000000000.0000 EOS",
    "issuer": "eosio"
  }
}

url參數(shù)指定你連接的哪一個節(jié)點。你可以在官方網(wǎng)站上查看更多提供API的節(jié)點。

安裝Cleos

Cleos是一個命令行工具,它與nodeos公開的REST API進行交互。我們需要cleos來運行所有命令來與EOS區(qū)塊鏈進行交互。你可以使用Docker,AWS Image或編譯源代碼來安裝cleos。安裝的最終結果必須在你的終端中是可用的。

cleos
ERROR: RequiredError: Subcommand required
Command Line Interface to EOSIO Client
Usage: cleos [OPTIONS] SUBCOMMAND

Options:
  -h,--help                   Print this help message and exit
  -u,--url TEXT=http://localhost:8888/
                              the http/https URL where nodeos is running
  --wallet-url TEXT=http://localhost:8900/
                              the http/https URL where keosd is running
  -r,--header                 pass specific HTTP header; repeat this option to pass multiple headers
  -n,--no-verify              don't verify peer certificate when using HTTPS
  -v,--verbose                output verbose actions on error
  --print-request             print HTTP request to STDERR
  --print-response            print HTTP response to STDERR
Subcommands:
  version                     Retrieve version information
  create                      Create various items, on and off the blockchain
  get                         Retrieve various items and information from the blockchain
  set                         Set or update blockchain state
  transfer                    Transfer EOS from account to account
  net                         Interact with local p2p network connections
  wallet                      Interact with local wallet
  sign                        Sign a transaction
  push                        Push arbitrary transactions to the blockchain
  multisig                    Multisig contract commands
  system                      Send eosio.system contract action to the blockchain.

創(chuàng)建錢包

錢包是存儲可能與一個或多個帳戶的權限相關聯(lián)密鑰的客戶端。理想情況下,錢包具有受高熵密碼保護的鎖定(加密)和解鎖(解密)狀態(tài)。EOSIO/eos存儲庫捆綁了一個名為cleos的命令行界面客戶端,它與一個名為keosd的lite客戶端連接在一起,它們展示了這種模式。

讓我們創(chuàng)建一個名為“treasure”的東西。

cleos wallet create --name treasure
Creating wallet: treasure
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5J2DTM7kpPaihUH35pLTJrvhjgZ11SY4FqxYbo6geWvEH4SNvMC"

你必須將密碼保存在安全的地方,因為如果它丟失了,則無法恢復錢包內(nèi)的所有密鑰。

現(xiàn)在我們需要為所有者和活動權限生成兩對密鑰。之后,我們將它們導入我們的錢包。

cleos create key #owner
Private key: 5HsrZsLeUoDvBCFT2JSvgg3KrfwE7BXAJkUBSwnTwX27Cgabumj
Public key: EOS8VMwRNWWHwov4vyzJiq9uTEyzcny8QKXv7CJxGQAwjSTncyv51

cleos create key #active
Private key: 5JtrJNbJPfzm8XPMddANGYT9yzaqo8gwTEpmSrgQNhtoPXL9Ynd
Public key: EOS8CCRKHAbhBim6LimdvhhzhEYiKNnLRhuMD1Zqx5Cut52moBRmH

cleos wallet import 5HsrZsLeUoDvBCFT2JSvgg3KrfwE7BXAJkUBSwnTwX27Cgabumj --name treasure #owner
imported private key for: EOS8VMwRNWWHwov4vyzJiq9uTEyzcny8QKXv7CJxGQAwjSTncyv51

cleos wallet import 5JtrJNbJPfzm8XPMddANGYT9yzaqo8gwTEpmSrgQNhtoPXL9Ynd --name treasure #owner
imported private key for: EOS8CCRKHAbhBim6LimdvhhzhEYiKNnLRhuMD1Zqx5Cut52moBRmH

創(chuàng)建帳號

要在EOS區(qū)塊鏈中執(zhí)行任何操作,你需要擁有一個帳戶。

帳戶是存儲在區(qū)塊鏈中的我們可以看明白的名稱。它可以由一個人或一些人擁有,具體取決于權限配置。需要一個帳戶來將交易轉(zhuǎn)移或推送到區(qū)塊鏈。

帳戶本質(zhì)上是一些公共或私有密鑰,是一個唯一的名稱。密鑰存放在錢包中。帳戶存儲在EOS區(qū)塊鏈中。

在本地創(chuàng)建帳戶很容易,你只需運行cleos create account命令,因為你擁有默認的eosio帳戶,這在Mainnet上顯然不是這樣。要在Mainnet上創(chuàng)建帳戶,你需要已經(jīng)擁有它的人的幫助,例如zeoseos-account-creator,這需要花錢。此外,你只能創(chuàng)建12個符號的帳戶,并且僅包含a-z小寫,1-5個數(shù)字。在我看來,這是非常嚴格的限制。要獲得名稱較短的帳戶,你必須進行競價??紤]到(雙關的語意)你可以轉(zhuǎn)售EOS帳戶,搶注量是非常巨大的??紤]到所有這些,我們將使用Testnet來節(jié)省金錢和時間。

EOS Jungle Tesnet在盡可能模擬主網(wǎng)。轉(zhuǎn)到jungle.cryptolions.io并點擊Create Account鏈接。它會詢問你的帳戶名稱和兩個密鑰。使用之前生成的公鑰。

如何創(chuàng)建和部署一個屬于自己的EOS代幣

確認后賬號會被建好。

cleos --url https://jungle.eosio.cr:443 get account ylvdeveloper
permissions: 
     owner     1:    1 EOS8VMwRNWWHwov4vyzJiq9uTEyzcny8QKXv7CJxGQAwjSTncyv51
        active     1:    1 EOS8CCRKHAbhBim6LimdvhhzhEYiKNnLRhuMD1Zqx5Cut52moBRmH
memory: 
     quota:     161.4 KiB    used:     3.365 KiB  

net bandwidth: 
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:                 0 bytes
     available:        19.12 MiB  
     limit:            19.12 MiB  

cpu bandwidth:
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:                 0 us   
     available:        3.826 sec  
     limit:            3.826 sec  

producers:     <not voted>

現(xiàn)在我們需要為我們的帳戶購買一些RAM,因為我們要發(fā)布我們的智能合約。在EOS區(qū)塊鏈中,RAM市場上有鯨魚玩公牛,這是另一個有錢的人投機機會。使用EOS Jungle Testnet Faucet將一些EOS代幣放入你的帳戶。

如何創(chuàng)建和部署一個屬于自己的EOS代幣

之后運行cleos system buyram命令購買帶有EOS代幣的RAM。

cleos --url https://jungle.eosio.cr:443 system buyram ylvdeveloper ylvdeveloper "10 EOS"
3481816ms thread-0   main.cpp:429                  create_action        ] result: {"binargs":"7055a5516d9576f47055a5516d9576f4a08601000000000004454f5300000000"} arg: {"code":"eosio","action":"buyram","args":{"payer":"ylvdeveloper","receiver":"ylvdeveloper","quant":"10.0000 EOS"}} 
executed transaction: 8eb30f6cfced6845e02b134946c7b6d623558f0c1a5ceff135b7e98007da692f  128 bytes  5094 us
#         eosio <= eosio::buyram                {"payer":"ylvdeveloper","receiver":"ylvdeveloper","quant":"10.0000 EOS"}
#   eosio.token <= eosio.token::transfer        {"from":"ylvdeveloper","to":"eosio.ram","quantity":"9.9500 EOS","memo":"buy ram"}
#  ylvdeveloper <= eosio.token::transfer        {"from":"ylvdeveloper","to":"eosio.ram","quantity":"9.9500 EOS","memo":"buy ram"}
#     eosio.ram <= eosio.token::transfer        {"from":"ylvdeveloper","to":"eosio.ram","quantity":"9.9500 EOS","memo":"buy ram"}
#   eosio.token <= eosio.token::transfer        {"from":"ylvdeveloper","to":"eosio.ramfee","quantity":"0.0500 EOS","memo":"ram fee"}
#  ylvdeveloper <= eosio.token::transfer        {"from":"ylvdeveloper","to":"eosio.ramfee","quantity":"0.0500 EOS","memo":"ram fee"}
#  eosio.ramfee <= eosio.token::transfer        {"from":"ylvdeveloper","to":"eosio.ramfee","quantity":"0.0500 EOS","memo":"ram fee"}
warning: transaction executed locally, but may not be confirmed by the network yet

創(chuàng)建合約

首先,我們必須將我們的合約上傳到區(qū)塊鏈。Cleos命令set contract通過以下位置參數(shù)執(zhí)行:

* account — the account to publish a contract for.
* contract-dir — contract directory.
* wast-file — the file containing the contract WAST or WASM.
* abi-file — the ABI of the contract.

如你所見,我們需要指定wastabi文件。如果你通過源代碼構建EOS,可以在./build/contracts/eosio.token/文件夾中找到它們。為方便起見,我上傳了他們兩個 wast/abi。 我們用自己的帳戶和文件調(diào)用set contract命令。因為我們的wast/abi文件與目錄名稱是相同,所以我們可以跳過這些參數(shù)。

cleos --url https://jungle.eosio.cr:443 set contract ylvdeveloper ./contracts/eosio.token
Reading WAST/WASM from ./contracts/eosio.token/eosio.token.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: 3fa704e4c1c72050e61882460bf0acd3b200df087d86a157d3d60ec1c439ba65  8104 bytes  3178 us
#         eosio <= eosio::setcode               {"account":"ylvdeveloper","vmtype":0,"vmversion":0,"code":"0061736d01000000017e1560037f7e7f0060057f7...
#         eosio <= eosio::setabi                {"account":"ylvdeveloper","abi":"0e656f73696f3a3a6162692f312e30010c6163636f756e745f6e616d65046e616d6...
warning: transaction executed locally, but may not be confirmed by the network yet

讓我們檢查代碼是否已使用get code ylvdeveloper命令上傳。

cleos --url https://jungle.eosio.cr:443 get code ylvdeveloper
code hash: 641f336aa1d08526201599c3c0ddb7a646e5ac8f9fd2493f56414d0422a0f957

創(chuàng)建代幣

最后,我們可以創(chuàng)建和發(fā)布我們的令牌。我們將使用cleos push action命令利用我們的智能合約的創(chuàng)建和發(fā)布,該命令采用以下參數(shù):

* contract — the account providing the contract to execute.
* action — the action to execute on the contract.
* data — the arguments to the contract.

讓我們創(chuàng)建YLV代幣并發(fā)出一些代幣。

cleos --url https://jungle.eosio.cr:443 push action ylvdeveloper transfer '{"from":"ylvdeveloper", "to":"ylvio", "quantity":"100.00 YLV", "memo":"gift"}' -p ylvdeveloper
executed transaction: 32abee7e426d9e5653f67a7b492c17ca62aeeef97ff1a86037f58f2dd1459452  136 bytes  1639 us
#  ylvdeveloper <= ylvdeveloper::transfer       {"from":"ylvdeveloper","to":"ylvio","quantity":"100.00 YLV","memo":"gift"}
#         ylvio <= ylvdeveloper::transfer       {"from":"ylvdeveloper","to":"ylvio","quantity":"100.00 YLV","memo":"gift"}

檢查下余額:

cleos --url https://jungle.eosio.cr:443 get table ylvdeveloper ylvdeveloper accounts
{
  "rows": [{
      "balance": "900.00 YLV"
    }
  ],
  "more": false
}
Bytezilla:build iYalovoy$ cleos --url https://jungle.eosio.cr:443 get table ylvdeveloper ylvio accounts
{
  "rows": [{
      "balance": "100.00 YLV"
    }
  ],
  "more": false
}

按預期完成了我們的工作,很完美。

我們從安裝cleos和了解eosio.token智能合約再到擁有我們自己的代幣并將代幣轉(zhuǎn)移到其他帳戶的全部過程。我們使用EOS Jungle Testnet完成了所有這一切,它幾乎與Mainnet相同。相同的步驟適用于Mainnet,你只需使用不同的API節(jié)點并為你的帳戶和RAM支付相應的費用。

  • EOS代幣是一個智能合約。

  • Cleos是用于與錢包和節(jié)點交互的命令行實用程序。

  • EOS Jungle Testnet可用于開發(fā)。

  • 你可以使用eosio.token智能合約創(chuàng)建,發(fā)布和發(fā)送你自己的代幣。

關于如何創(chuàng)建和部署一個屬于自己的EOS代幣就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

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

eos
AI