Ethereum 입문 ~ 심플한 Smart Contract를 Rinkeby Network에 배포 ~
12166 단어 자바스크립트이더리움Node.jssolidityBlockchain
소개
local에 solc와 mocha를 설치하고 terminal에서 Rinkeby Network에 간단한 스마트 계약을 배포하십시오.
Rinkeby에 배포
다양한 설치
$mkdir inbox
$cd inbox/
$npm init
npm init을 누르면 아래와 같이 나옵니다만, 모두 Enter로 OK입니다.
ackage name: (inbox)
버전: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
키워드 :
author:
그러면 package.json이 inbox에 설치됩니다.
$ls
package.json
그런 다음 solc를 설치합니다.
$npm install --save solc
mocha 설치
npm install --save mocha ganache-cli [email protected]
그런 다음 truffle-hdwallet-provider 설치
이때 version 지정을 하지 않으면 잘 작동하지 않았으므로 @0.0.3을 설치하는 것이 좋습니다.
npm install --save [email protected]
참고
h tps : // s c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 50201353 / 응은 dp dp 로미 세레 지 ぇ c 치 온와 r 닌 g 에로 r ぇ - t ct 등 베스 토레 d p
infura로 URL 가져오기
htps: //인후라. 이오/
signup하면 등록한 메일 주소에 각종 네트워크의 URL이 송부되어 옵니다.
코드
디렉토리 구성은 이러한 형태입니다.
inbox
├── compile.js
├── contracts
│ └── Inbox.sol
├── deploy.js
├── node_modules
│ ├── abstract-leveldown
│ ├── ...
│ └── ...
├── package-lock.json
├── package.json
compile.jsconst path = require('path');
const fs = require('fs');
const solc = require('solc');
const inboxPath = path.resolve(__dirname, 'contracts', 'Inbox.sol');
const source = fs.readFileSync(inboxPath, 'utf8');
module.exports = solc.compile(source,1).contracts[':Inbox'];
스마트 계약은 메시지를 등록하는 간단한 것입니다.
Inbox.solpragma solidity ^0.4.17;
contract Inbox{
string public message;
function Inbox(string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
deploy.jsconst HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const { interface, bytecode } = require('./compile');
const provider = new HDWalletProvider(
'twelve word mnemonic...', //Metamaskのニーモニックを記入
'https://rinkeby.infura.io/...' //infraで取得したURLを記入
);
const web3 = new Web3(provider);
const deploy = async () => {
const accounts = await web3.eth.getAccounts();
console.log('Attempting to deploy from account', accounts[0]);
const result = await new web3.eth.Contract(JSON.parse(interface))
.deploy({data: bytecode, arguments: ['Hi there!'] })
.send({ gas: '1000000', from: accounts[0] });
console.log('Contract deployed to', result.options.address);
};
deploy();
package.json의 test를 "mocha"로 변경합니다.
package.json{
"name": "inbox",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"author": "",
"license": "ISC",
"dependencies": {
"ganache-cli": "^6.1.4",
"mocha": "^5.2.0",
"solc": "^0.4.24",
"truffle-hdwallet-provider": "0.0.3",
"web3": "^1.0.0-beta.26"
}
}
배포
node deploy.js
Attempting to deploy from account 0x686...
Contract deployed to 0xE4365...
이렇게 출력되면 성공입니다.
rinkeby 네트워크에서 확인할 수 있습니다.
htps // 링케 by. 응 rs 칸. 이오/
끝에
terminal에서 Rinkeby Network에 배포 할 수있었습니다.
자신도 잘 모르는 곳이 많기 때문에 계속 공부합니다.
도움이되었습니다.
Ethereum and Solidity: The Complete Developer's Guide
Reference
이 문제에 관하여(Ethereum 입문 ~ 심플한 Smart Contract를 Rinkeby Network에 배포 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kolife/items/990fdbaaa970d06293fa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다양한 설치
$mkdir inbox
$cd inbox/
$npm init
npm init을 누르면 아래와 같이 나옵니다만, 모두 Enter로 OK입니다.
ackage name: (inbox)
버전: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
키워드 :
author:
그러면 package.json이 inbox에 설치됩니다.
$ls
package.json
그런 다음 solc를 설치합니다.
$npm install --save solc
mocha 설치
npm install --save mocha ganache-cli [email protected]
그런 다음 truffle-hdwallet-provider 설치
이때 version 지정을 하지 않으면 잘 작동하지 않았으므로 @0.0.3을 설치하는 것이 좋습니다.
npm install --save [email protected]
참고
h tps : // s c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 50201353 / 응은 dp dp 로미 세레 지 ぇ c 치 온와 r 닌 g 에로 r ぇ - t ct 등 베스 토레 d p
infura로 URL 가져오기
htps: //인후라. 이오/
signup하면 등록한 메일 주소에 각종 네트워크의 URL이 송부되어 옵니다.
코드
디렉토리 구성은 이러한 형태입니다.
inbox
├── compile.js
├── contracts
│ └── Inbox.sol
├── deploy.js
├── node_modules
│ ├── abstract-leveldown
│ ├── ...
│ └── ...
├── package-lock.json
├── package.json
compile.js
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const inboxPath = path.resolve(__dirname, 'contracts', 'Inbox.sol');
const source = fs.readFileSync(inboxPath, 'utf8');
module.exports = solc.compile(source,1).contracts[':Inbox'];
스마트 계약은 메시지를 등록하는 간단한 것입니다.
Inbox.sol
pragma solidity ^0.4.17;
contract Inbox{
string public message;
function Inbox(string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
deploy.js
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const { interface, bytecode } = require('./compile');
const provider = new HDWalletProvider(
'twelve word mnemonic...', //Metamaskのニーモニックを記入
'https://rinkeby.infura.io/...' //infraで取得したURLを記入
);
const web3 = new Web3(provider);
const deploy = async () => {
const accounts = await web3.eth.getAccounts();
console.log('Attempting to deploy from account', accounts[0]);
const result = await new web3.eth.Contract(JSON.parse(interface))
.deploy({data: bytecode, arguments: ['Hi there!'] })
.send({ gas: '1000000', from: accounts[0] });
console.log('Contract deployed to', result.options.address);
};
deploy();
package.json의 test를 "mocha"로 변경합니다.
package.json
{
"name": "inbox",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"author": "",
"license": "ISC",
"dependencies": {
"ganache-cli": "^6.1.4",
"mocha": "^5.2.0",
"solc": "^0.4.24",
"truffle-hdwallet-provider": "0.0.3",
"web3": "^1.0.0-beta.26"
}
}
배포
node deploy.js
Attempting to deploy from account 0x686...
Contract deployed to 0xE4365...
이렇게 출력되면 성공입니다.
rinkeby 네트워크에서 확인할 수 있습니다.
htps // 링케 by. 응 rs 칸. 이오/
끝에
terminal에서 Rinkeby Network에 배포 할 수있었습니다.
자신도 잘 모르는 곳이 많기 때문에 계속 공부합니다.
도움이되었습니다.
Ethereum and Solidity: The Complete Developer's Guide
Reference
이 문제에 관하여(Ethereum 입문 ~ 심플한 Smart Contract를 Rinkeby Network에 배포 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kolife/items/990fdbaaa970d06293fa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Ethereum and Solidity: The Complete Developer's Guide
Reference
이 문제에 관하여(Ethereum 입문 ~ 심플한 Smart Contract를 Rinkeby Network에 배포 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kolife/items/990fdbaaa970d06293fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)