Truffle consol을 통한 송금 수신(Truffle 5 지원)

트루플 콘솔에서 다양한 프레임을 조작하고 싶지만, 인터넷에서 굴러가는 정보와 조금 다르기 때문에 필기를 합니다.Turffle 4.x랑 좀 다른 것 같아.

목표


설정 계정을 로컬 환경에 설계하여truffle 컨트롤러에서 EOA(외부 계정)에 단독 영패를 송금하는 것이 목적입니다!
네트워크 전단의 설치, 테스트망, 메인 네트워크의 디버깅은 이번에 진행하지 않습니다!머지않아

조직적 준비


일단 프레임 하나 준비해!
$ npm install -g truffle # まだインストールしていなければ
$ mkdir test-contract
$ cd test-contract
$ truffle init
이렇게 하면 프로젝트를 완성할 수 있다!
이번 송금transfer은 방법의 프레임만 설치하면 충분합니다.단지 스스로 설치하는 것이 번거롭기 때문에 OpenZeppelin을 사용하여 ERC20을 부합시킨다.여기. 멋진 문장 한 편을 참고하여 하세요.
OpenZeppelin을 가져온 후 Contract 파일을 만듭니다.
$ npm init -y
$ npm install -E openzeppelin-solidity
$ touch contracts/TestContract.sol
편집TestContract.sol의 내용.거의여기.복제품
pragma solidity ^0.5.0;
import "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";
import "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";

contract TestContract is ERC20, ERC20Detailed {

    string private _name = "TestContract";
    string private _symbol = "TC";
    uint8 private _decimals = 18;

    address account = msg.sender;
    uint value = 100000000000000000000;

    constructor() ERC20Detailed( _name, _symbol, _decimals) public {
        _mint(account, value);
    }
}
OpenZeppelin도 2.0부터 위와 같이 import의 내용이 가늘어졌다.옛 보도의 복사와 붙여넣기가 번역을 통과할 수 없음을 주의하십시오!

로컬 환경 준비


현지 환경을 좀 조정합시다.이번에는 간단하게 ganache에 환경을 구축할 겁니다.
공식 사이트에서 구축된자체 구축을 얻습니다.이미 지은 것만으로도 충분하니 이번에는 내가 직접 가서 지을게.
# 作業用ディレクトリとは異なる場所で作業すること
$ git clone https://github.com/trufflesuite/ganache.git
$ cd ganache
$ npm install
$ npm start
npm start에서 Electron은 상승했다.

선택QUICKSTART 또는 여러 EOA의 지갑이 생성되고 노드가 상승합니다.여기서 아까 Contract의 디자인을 진행합니다.

프로그램 준비


truffle의 작업 환경에서 이번에 나는 프로그램에 사용할 코드를 쓸 것이다.나는 ./migrations/에 이미 1_initial_migration.js의 서류가 있다고 생각한다. 이 서류를 다시 제작2_deploy_contract.js하면 다음과 같다.
var TestContract = artifacts.require("./TestContract.sol");

module.exports = function(deployer) {
    deployer.deploy(TestContract);
};
그리고 환경 설정을 한다.프로젝트 노선truffle-config.js에 따라 ganache의 정보를 편집합니다.내 손에 있는 말은 다음과 같다.

그래서truffle-config.js의host,port,network_id는 다음과 같다.gas 크지도 작지도 않은 적당한 값을 입력합니다.너무 작으면 프레임을 실행할 수 없고, 너무 크면 수중에 있는 이더넷이 부족하기 때문이다.
module.exports = {
  /* 中略 */
  networks: {
+   local: {
+     host:"127.0.0.1",
+     port: 7545,
+     network_id: "5777",
+     gas: 2000000
+   }
  }
};

프로그램 설계


그런 다음 컴파일링과 마이그레이션을 수행하고 Contract를 로컬로 디버깅합니다.
$ truffle compile
$ truffle migrate --network local
프로그램이 끝난 후 얼마나 많은 가스가 들었는지 보여 줍니다.
Summary
=======
> Total deployments:   2
> Final cost:          0.0333941 ETH

truffle consol로 입금


그럼 여기서 입금할게요.다음 내용을 입력하고 콘솔에 들어가세요.
$ truffle console --network local
truffle(local)>  # 入った
콘솔에서 나오려면 .exit를 입력합니다.
그럼 아까 Contract의 주소를 알아보겠습니다.
truffle(local)> TestContract.address
'0x88E2a079DaCABaB64f6901aF543f052AAf1dB66f'
및 내보내기.그럼, 이번 영패의 총 공급량을 봅시다.
truffle(local)> const tc = await TestContract.at(TestContract.address).then(_ => _)
undefined
truffle(local)> tc.totalSupply().then(ts => ts.toString())
'100000000000000000000'
이 근처가 오래된 보도(Truffle4.x 이전)라면 동기화 처리로 보인다.Contract#at() 등이 Promise에 회신하였으니 위에서 설명한 대로 처리하십시오.
그럼 드디어 입금할게요.Ganache가 표시하는 적당한 주소로 입금해 보세요.dest Ganache에 표시된 EOA 주소를 저장합니다.
나는 네가 좋아하는 물건을 선택한다.
truffle(local)> const dest = "0x163c07CB14603bcBb867f2e95AE2ae965d824ebd"
undefined
truffle(local)> tc.transfer(dest, 10)
{ tx:
   '0x282c11cfbeb31df6483e65cfeda8d9d40309af54627ac2cd427ab4c438ebd2c8',
  (中略
     from: '0xfdb1c9353c4b325bb3c609bbb70a60fc26eb9c76',
     to: '0x88e2a079dacabab64f6901af543f052aaf1db66f',
     gasUsed: 51368,
  (後略

거래, 송금 주소, 사용한 가스 등을 표시했다.여기transfer 함수를 사용하여 10개의 영패를 보냅니다.잔액을 표시해 주세요.
truffle(local)> const balance = await TestContract.at(TestContract.address).then((address) => address.balanceOf(dest))
truffle(local)> balance.toNumber()
10
이렇게 하면 지정된 EOA 입금을 알 수 있습니다.입금은 이만 마치겠습니다!

좋은 웹페이지 즐겨찾기