Fufu0217
Fufu0217

Solidity:創建簡易代幣

此篇文是我在練習solidity並進行remix操作,並紀錄在我的Blog筆記上。練習簡單的function以及如何call,並且透過remix來進行function的呼叫。

在終端輸入

truffle create contract MyToken

創建


// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;

contract MyToken {
  uint INITIAL_SUPPLY = 10000;
  mapping(address => uint) balances;
  constructor() {
    balances[msg.sender] = INITIAL_SUPPLY;
  }

  // transfer token for a specified address
  function transfer(address _to, uint _amount) public {
    require(balances[msg.sender] > _amount);
    balances[msg.sender] -= _amount;
    balances[_to] += _amount;
  }
  // Get the balance of the specified address
  // Constant and Immutable State Variables. See https://docs.soliditylang.org/en/v0.8.10/contracts.html#modifiers
  function balanceOf(address _owner) public view returns (uint) {
    return balances[_owner];
  }
}

在migrations資料夾新增

var HelloWorld = artifacts.require("HelloWorld");
var MyToken = artifacts.require(&quot;MyToken");

module.exports = function(deployer) {
  deployer.deploy(HelloWorld);
  deployer.deploy(MyToken);
};

編譯

truffle compile


開始部署,Run

truffle migrate



Test

開啟console

truffle console
let contract
MyToken.deployed().then(instance => contract = instance)


contract.balanceOf(accounts[0])
contract.balanceOf(accounts[1])


contract.transfer(accounts[1], 123)
contract.balanceOf(accounts[0])
contract.balanceOf.call(accounts[1])


---

使用Remix測試:

(可以參考前面: {% post_link Remix-On-Vscode '在VSCode上使用Remix' %})

1.啟動ganache-cli


2.使用remix連接local測試網


3.編譯並部屬


4.測試

先呼叫部屬者,並從output中觀察結果


接著轉5000,測試轉帳功能



再看一次部屬者的Balance



最後看轉Token過去的account



完成,簡單的token生成與轉移token已經實現,但一般的Token我們會使用**ERC20**,而不會像這樣實現陽春的功能,會使用更嚴謹的方式來防止漏洞。



歡迎大家來我的Blog看:

1.Blog: 文章連結

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论