Truffle과 node.js로 웹 브라우저에 HelloEthereum!

스마트 계약을 사용하여 웹 브라우저에 HelloEthereum!을 표시하고 싶습니다.
Truffle, node.js, Ganache를 사용하므로 아래 사이트를 참고하여 설치하십시오.

Dapps 작성 순서를 이치로부터 배울 수 있다! Truffle의 "이더리움 애완 동물 가게"

계약을 배포하려면



이제 먼저 모든 디렉토리에 HelloEthereum이라는 디렉토리를 작성하십시오.
mkdir HelloEthereum

다음으로 환경의 구축을 해 나갑니다.
이번에는 truffle이라는 프레임 워크를 사용합니다.
truffle은 Ethereum의 개발 언어인 solidity에서의 개발을 지원하는 프레임워크입니다.
먼저 다음 명령으로 초기화합니다.
truffle init

그런 다음 아래 명령을 사용하여 solidity 파일을 만듭니다.
truffle create contract HelloEthereum

contract 내에 HelloEthereum.sol이라는 파일이 작성되므로 편집합니다.

HelloEthereum.sol

pragma solidity ^0.4.22;

contract HelloEthereum {

  string private _word;
  constructor() public {
    _word = "HelloEthereum!";
  }
  function get() public view returns(string){
    return _word;
  }
}

get이라는 함수를 호출하면 HelloEthereum!을 반환합니다.

그런 다음이 파일을 컴파일합니다.
truffle compile

컴파일이 성공하면 build 디렉토리가 생성됩니다.

그런 다음 migration 파일을 만듭니다.
migrations 안에 2_deploy_contracts.js라는 파일을 만듭니다.

2_deploy_contracts.js
var HelloEthereum = artifacts.require("HelloEthereum");

module.exports = function(deploy){
    deploy.deploy(HelloEthereum);
}

그런 다음 truffle.js 파일을 편집합니다.

truffle.js

module.exports = {
    networks:{
        development:{
            host: "127.0.0.1",
            port: 7545,
            network_id: "5777"
        }
    }
}
host, port, network_id는 자신의 설정으로 변경하십시오.
시작되면 페이지 상단에 나열됩니다.


마지막으로 ganache를 시작한 후 다음 명령으로 배포합니다.
truffle migrate

이것으로 일단 테스트 환경의 블록 체인에 배포가 완료되었습니다.

서버 설정



node.js를 사용하여 서버 환경을 구축합니다.
npm init -y

이번에는 라이트 서버를 사용합니다.
npm install lite-server --save

그런 다음 bs-config.json이라는 파일을 만듭니다.
이번에 사용하는 lite-server의 설정 파일입니다.

bs-config.json
{
  "server": {
    "baseDir": ["./src", "./build/contracts"]
  }
}

그런 다음 src 폴더를 만듭니다.
그런 다음 truffle-contract를 설치하십시오.
npm install truffle-contract --save
node-modules/truffle-contract/disttruffle-contract.js라는 파일을 src에 복사합니다.

마지막으로 package.json를 다음과 같이 편집하십시오.scripts"dev": "lite-server" 를 추가합니다.

package.json
{
  "name": "HelloEthereum",
  "version": "1.0.0",
  "description": "",
  "main": "truffle-config.js",
  "directories": {
    "test": "test"
  },
  "dependencies": {
    "lite-server": "^2.4.0",
    "truffle-contract": "^3.0.6"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "lite-server"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

이것으로 서버 설정이 종료됩니다.

프런트 엔드 부분 만들기



마지막으로 프런트 엔드 부분을 만듭니다.index.htmlindex.js 라는 파일을 작성해 다음과 같이 편집합니다.

index.html
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Hello Ethereum</title>
        <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    </head>

    <body>
        <script type="text/javascript" src="./truffle-contract.js"></script>
        <script type="text/javascript" src="./index.js"></script>
    </body>
</html>

index.js
App = {
    web3Provider:null,
    contracts: {},

    initWeb3: function(){
        App.web3Provider = new web3.providers.HttpProvider("http://localhost:7545");
        return App.initContract();
    },

    initContract: function(){
        $.getJSON('HelloEthereum.json', function(data){
            var Artifact = data;
            App.contracts.HelloEthereum = TruffleContract(Artifact);

            App.contracts.HelloEthereum.setProvider(App.web3Provider);

            App.contracts.HelloEthereum.deployed().then(function(instance) {
                return instance.get.call();
            }).then(function(adopters){
                document.write(adopters);
            }).catch(function(err){
                console.log(err.message);
            });
        });
    }
}

window.onload = function(){
    App.initWeb3();
}

다음 명령을 두드리면 서버가 시작되고 브라우저가 시작됩니다.
npm run dev

HelloEtereum이라고 표시되면 성공입니다. 수고하셨습니다.

좋은 웹페이지 즐겨찾기