스마트 컨트랙트 배포 | 이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기 95 개의 정답

당신은 주제를 찾고 있습니까 “스마트 컨트랙트 배포 – 이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코인하는 개발자 이(가) 작성한 기사에는 조회수 3,981회 및 좋아요 69개 개의 좋아요가 있습니다.

스마트 컨트랙트 배포 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기 – 스마트 컨트랙트 배포 주제에 대한 세부정보를 참조하세요

안녕하세요, 코인하는 개발자 입니다.
이번에는 이더리움 메인넷 위에서 구동되는 스마트 컨트랙트를 실제로 코딩하면서 어떻게 작성되는지 살펴보시죠!
감사합니다.
– 솔리디티 handbook: https://docs.soliditylang.org

스마트 컨트랙트 배포 주제에 대한 자세한 내용은 여기를 참조하세요.

스마트 컨트랙트 배포 – Klaytn Docs

트러플을 사용하여 스마트 컨트랙트 배포. truffle.js에 Klaytn의 네트워크 정보를 입력하세요. 경고 : 현재 Klaytn Baobab 네트워크의 가스 가격이 25 Gpeb으로 고정 …

+ 여기를 클릭

Source: ko.docs.klaytn.foundation

Date Published: 10/3/2021

View: 9490

[클레이튼] smart contract 배포 과정 이해하기

블록체인에서의 smart contract 란? contract code를 compile하여 bytecode로 변경 후 blockchain의 body 안에 넣고 특정 조건이 되면 실행 하는것이 lock …

+ 여기에 더 보기

Source: doitnow-man.tistory.com

Date Published: 2/20/2022

View: 656

3. 스마트컨트랙트 작성 후 배포하기

1. 스마트 계약의 시작, 리믹스 도구 사용해보기 2. 솔리디티 개발환경 구성 3. 스마트컨트랙트 작성 후 배포하기 4. openzeppelin 사용하여 ERC20 …

+ 자세한 내용은 여기를 클릭하십시오

Source: kimsfamily.kr

Date Published: 4/14/2022

View: 157

[solidity] 스마트컨트랙트 배포하기 – 이것저것 기록

스마트 컨트랙트 생성 순서. 1. 스마트 컨트랙트 코드 작성 (.sol). pragma solity ^0.8.0; // solcjs –version 로 버전확인 contract hello …

+ 여기에 표시

Source: anweh.tistory.com

Date Published: 6/6/2021

View: 2237

[Web3.js] Smart Contract 배포 – Study Note

Contract 를 배포하는 과정과 사용하는 과정은 다음과 같습니다. Contract 배포 순서. Contract 작성 -> 컴파일 -> Contract 객체 생성(ABI포함) …

+ 여기를 클릭

Source: lbm93.tistory.com

Date Published: 11/21/2021

View: 6108

스마트 컨트랙트 배포 – KAS Docs

이 페이지는 Wallet API로 스마트 컨트랙트 배포 트랜잭션을 Klaytn에 보내는 방법을 안내합니다.

+ 자세한 내용은 여기를 클릭하십시오

Source: docs.klaytnapi.com

Date Published: 7/2/2021

View: 2888

클레이튼 네트워크에 스마트 컨트랙트 배포하기 – Medium

첫째, 로컬 네트워크에 스마트 컨트랙트를 배포할 것입니다. 다음으로는 클레이튼의 테스트넷인 바오밥에 스마트 컨트랙트를 배포해 보겠습니다. 1. 준비: …

+ 여기를 클릭

Source: medium.com

Date Published: 6/14/2022

View: 6997

Smart contract 배포를 위한 사전지식 – velog

용어 정리ABI : 이더리움 생태계에서 블록체인 위의 스마트컨트랙트와 상호작용 하기 위해 컨트랙트의 함수와 매개변수들을 JSON 형식으로 나타낸 것.

+ 여기에 보기

Source: velog.io

Date Published: 4/16/2021

View: 4611

주제와 관련된 이미지 스마트 컨트랙트 배포

주제와 관련된 더 많은 사진을 참조하십시오 이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기
이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기

주제에 대한 기사 평가 스마트 컨트랙트 배포

  • Author: 코인하는 개발자
  • Views: 조회수 3,981회
  • Likes: 좋아요 69개
  • Date Published: 2021. 5. 20.
  • Video Url link: https://www.youtube.com/watch?v=TMSoE3v3YnA

[클레이튼] smart contract 배포 과정 이해하기

728×90

반응형

개요

smart contract가 무엇인지 알아 본다.

smart contract 정의

서면으로 이루어지던 계약을 code로 구현하고 특정 조건이 충족되었을 때 해당 계약이 이행되게 하는 script 입니다.

블록체인에서의 smart contract 란?

contract code를 compile하여 bytecode로 변경 후 blockchain의 body 안에 넣고 특정 조건이 되면 실행 하는것이 lock chain에서는 smart contract 입니다.

블록체인에서의 smart contract가 배포되는 방법

[smart contract 배포 도식]

smart contract 배포 도식

1. smart contract code compile 과정 및compile 결과물 설명

– smart contract를 배포 하는 것은 solitidy 언어로 smart contract code를 생성하고 이를 compile하여 block chain에

배포하는것을 말합니다.

* 배포는 IDE에서 제공하는 버튼을 이용하면 손쉽게 배포가 가능 합니다.

1) https://ide.klaytn.com/ 에서 smart contract code를 작성 한 후 compile하여 배포 한다.

// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; contract Contract1 { address public owner; constructor() { owner = msg.sender; } bytes32[] proposalNames; function beforeAll (uint256 num) public { proposalNames.push(bytes32(“candidate1”)); proposalNames.push(bytes32(num)); } }

2) 배포시 생성되는 전체 결과물

– 다음은 IDE에서 배포 후 보여주는 결과물 전체 항목 입니다.

3) 생성된 배포 결과물 핵심 정보

(1) byte code

정의

– block chain에 deploy될 smart contract의 byte code 입니다.

사용 시기

– block chain에 배포될 때 사용 됩니다.

형태

– solidity로 작성한 code를 compile한 결과물 16진수로 이루어져있습니다.

byte code

(2) Function signature

정의

– function name과 parameter를 sha-3를 이용해서 만든 4byte signature 입니다.

사용 시기

– Contract의 function을 실행 시키기 위해서 사용 됩니다.

Contract 의 함수를 실행시키기 위해서는 Transaction 의

to: 주소에는 Contract Address

input data: 에는 function signature 4byte 함께 paramete vaule값을 16진수로하여 32byte

길이로하여 입력하면 됩니다

function signautre 생성 구조

Ex) 실제 호출 payload

– Function : baz(uint32 x, bool y)

baz는 uint32와 bool로 정적인 type 을 인수로 갖는 함수입니다.

69, true 인수로 function를 call한다고 하면 encoding data는 다음과 같습니다.

– function signatue = 0xcdcd77c0

– 인수1 69 = 0000000000000000000000000000000000000000000000000000000000000045

– 인수2 true = 0000000000000000000000000000000000000000000000000000000000000001

// 인코딩 데이터 0xcdcd77c000000000000000000000000000000000000000000000000000000000000045 0000000000000000000000000000000000000000000000000000000000000001

(3) ABI (Application Binary Interface)

정의

– 특정 언어나 플랫폼에 종속되지 않은 방식으로 기술된 Application Interface 에 대한 정의입니다.

– Smart Contract 의 function과 parameter에 대한 MetaData를 정의해

Contract의 객체를 만들 수 있고 Contract의 함수를 호출할 수 있는 표준방법입니다.

사용 시기

– 이 ABI 를 갖고 JavaScript 언어 기반의 어플리케이션을 만들 때 객체를 만들게 할 수 있고, 쉽게 그 객체의

Method를 호출하는것 만으로 Contract 의 함수가 호출되도록 할 수 있는 것이다. 현재 Ethereum은

web3.js 와함께 JavaScript 응용에서 쉽게 ABI 로 객체를 만들어 사용하도록 지원하며, 1.4.0 이후의

go-ethereum 에서는 Go Native 언어 기반의 응용에서 Smart Contract 를 쉽게 Binding 가능하도록

ABI 기반으로 Go Code 를 생성 해주는 ABIGen 을 제공하고 있다.

smart contract에 정의된 function의 ABI 형태

참조 사이트

https://medium.com/haechi-audit-kr/smart-contract-a-to-z-79ebc04d6c86

https://goodjoon.tistory.com/261

https://docs.soliditylang.org/en/latest/solidity-by-example.html#id2

https://medium.com/linum-labs/a-technical-primer-on-using-encoded-function-calls-50e2b9939223

https://muyu.tistory.com/entry/Ethereum-ABI-%EC%9D%B8%EC%BD%94%EB%94%A9-%EC%82%B4%ED%8E%B4%EB%B3%B4%EA%B8%B0

728×90

반응형

3. 스마트컨트랙트 작성 후 배포하기

1. 스마트 계약의 시작, 리믹스 도구 사용해보기

2. 솔리디티 개발환경 구성

3. 스마트컨트랙트 작성 후 배포하기

4. openzeppelin 사용하여 ERC20 토큰 만들기

5. Ropsten 테스트넷에 ERC20토큰 배포하기

6. web3.js 와 자바스크립트를 활용한 간단한 예제

7. 솔리디티 기초, 리믹스로 컨트랙트 작성하기

8. 솔리디티 기본문법 (변수, 데이터타입, 구조체)

9. 솔리디티 배열, 맵핑

10. 솔리디티 조건문, 반복문(if, else, for)

11. 솔리디티 암호화폐 지불(호텔룸 예약하기 프로그램)

12. 솔리디티 상속

13. 리믹스 솔리디티 6.0 버전 ERC20토큰 만들기

14. web3.js 와 자바스크립트를 활용하여 (이더잔액조회) 지갑 만들기

15. 솔리디티 컨트랙트 Web.js 활용하여 웹으로 보여주기

1. openzeppelin 라이브러리 설치하기

openzeppelin라이브러리는 기본적이고 많이 사용되는 smartcontract코드를 모아놓은 라이브러리입니다.

이미 잘 짜여진 코드가 있는데 힘겹게 다시 코딩할 필요는 없습니다. 항상 최신의 문제 없는 라이브러리를 잘 찾아서 사용하는 방법을 아는게 중요합니다.

1) smartcontract 폴더 생성

2) truffle init

3) npm init -y

4) npm install -E openzeppelin-solidity

네, 이제 openzeppelin-solidity 라이브러리가 설치되었습니다.

이제 ATOM 에디터로 해당 폴더를 열어봅니다. 아래와 같은 폴더구조를 보실 수 있습니다.

간략하게 설명을 하면,

– contracts : 실제 우리가 solidity언어로 스마트컨트랙트를 작성하는 공간입니다.

– mgrations : contracts 폴더에서 작업한 코드를 블록체인에 deploy하기 위한 코드

– node_modules : 스마트컨트랙트 개발에 필요한 라이브러리

– test : 테스트를 위한 폴더

– truffle-config.js 통신을 위한 설정부분.

통신을 위해서 truffle-config.js 부분의 소스를 아래와 같이 수정해줍니다.

development: { host: “127.0.0.1”, // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) network_id: “*”, // Any network (default: none) },

그리고 아래에 컴파일 버전도 아래와 같이 수정해줍니다.

2. 스마트컨트랙트 작성해보기

이제 본격적인 준비작업은 끝났으니, 간단한 스마트컨트랙트를 직접작성해봅시다.

1. Test.sol 파일 작성

contract 폴더 안에 Test.sol 파일을 작성합니다.

그리고 아래와 같은 코드를 입력해주세요!!

pragma solidity ^0.5.2; // solidity 0.5.2 버전을 사용 contract TEST { // contract 이름을 TEST로 지정 string public constant name = “TEST token”; // 토큰의 이름은 TEST token string public constant symbol = “TEST”; // TEST라는 이름을 사용 uint public constant decimals = 18; // 소수점 18자리까지 사용하겠음 uint public constant INITIAL_SUPPLY = 1000 * 10 ** decimals; // 초기 발행량은 1000.000000000000000000 (소수점 18자리까지사용) string constant test = “You can not see this”; // public 표시가 없는 경우 해당 문구 볼 수 없음. }

– 변수 선언시 public를 하지 않으면 외부에서 해당 변수를 찾을 수 없음.

– constant : 변하지 않는 변수 선언.

– public : 누구나 확인 할 수 있는 변수 선언.

– string : 문자열

– uint : unsigned integer (부호(+,-) 없는 정수- 양수 범위를 2배로 늘리게 됨, 즉 이진수와 같은 십진수가 됨)

2. 배포 코드 작성하기

migration폴더에 아래와 같이 2_Test_Migration.js 파일을 생성합니다.

위에 작성한 Test.sol 코드를 블록체인에 올리기 위해서 해당 파일을 작성하는겁니다.

아래와 같이 코딩해줍니다.

const TestToken = artifacts.require(“./Test”); module.exports = function(deployer){ deployer.deploy(TestToken); };

3. 컨트랙트 배포하기

먼저 ganache-cli 를 실행합니다.

이후 truffle migrate 명령어를 실행합니다.

제일 아래에 우리가 작성한 2_Test_Migration.js 스마트컨트랙트 파일이 블록체인에 업로드 된걸 확인할 수 있습니다.

위에 보면 contract address가 나오는데, 이 주소를 기반으로 TEST라는 스마트컨트랙트와 통신이 가능합니다.

그리고 아톰에디터를 보면, build폴더에 TETS.json 파일이 생성된걸 확인할 수 있습니다.

이 코드파일에서 “abi”: 라고 되어 있는 부분이 있습니다.

이 ABI는 애플리케이션 바이너리 인터페이스(Application Binary Interface)라고 부릅니다.

모든 외부, 공개 함수의 선언 및 파라미터, 반환유형으로 구성된 인터페이스인데요.

ABI에서 계약을 정의하고, 계약함수를 호출하고자 하는 호출자는 ABI를 사용할 수 있습니다.

그리고 소스 조금 아래로 내려와보면, “deployedBytecode” 부분이 있는데요. 계약을 배포하기 위해서 이 바이트코드가 필요합니다.

정리하면,

계약의 배포를 위해서 바이트코드가 필요하고,

계약의 함수를 호출하기 위해서 ABI가 필요합니다.

계약을 배포하는 것 자체가 블록체인에서는 거래이기 때문에 계약을 배포했다는 건 거래가 생성된걸로 간주합니다. 즉 바이트코드와 ABI는 계약을 배포하기 위해서 가장 중요한 2가지 요소입니다.

4. 스마트컨트랙트와 통신하기

이번에는 ABI를 통해서 스마트컨트랙트와 통신하는 방법을 알아보겠습니다.

기존에 설치했던 myetherwallet을 엽니다.

왼쪽 메뉴에 보면, Contract – Interact with Contract 메뉴가 있습니다.

Contract Address에는 truffle migrate를 통해서 얻은 컨트랙트주소를 입력합니다.

저의 경우에는 아래에 contract address에 해당하는 x5af58f7b22dd98238a2e27725903d6db96190a07ab5f90cb28d47c7ca258da50를 사용합니다.

아래 ABI/JSON Interface에는 abi를 입력해줍니다.

ATOM 에디터 TEST.json 파일에서 “abi”: 오른쪽 [ 부터~ ] 까지 복사, 붙여넣기 합니다.

제가 복사&붙여넣기 한 ABI 소스는 아래와 같습니다.

[ { “constant”: true, “inputs”: [], “name”: “INITIAL_SUPPLY”, “outputs”: [ { “internalType”: “uint256”, “name”: “”, “type”: “uint256” } ], “payable”: false, “stateMutability”: “view”, “type”: “function” }, { “constant”: true, “inputs”: [], “name”: “decimals”, “outputs”: [ { “internalType”: “uint256”, “name”: “”, “type”: “uint256” } ], “payable”: false, “stateMutability”: “view”, “type”: “function” }, { “constant”: true, “inputs”: [], “name”: “name”, “outputs”: [ { “internalType”: “string”, “name”: “”, “type”: “string” } ], “payable”: false, “stateMutability”: “view”, “type”: “function” }, { “constant”: true, “inputs”: [], “name”: “symbol”, “outputs”: [ { “internalType”: “string”, “name”: “”, “type”: “string” } ], “payable”: false, “stateMutability”: “view”, “type”: “function” } ]

이걸 myetherwalle 아래의 그림과 같이 붙여넣기 해줍니다.

Continue를 클릭하면, 우리가 작성한 스마트컨트랙트 기능을 확인할 수 있습니다.

오른쪽에 작성된 아이템을 하나씩 클릭해보면,

초기공급량, Deciminals, 토큰 이름, 토큰 심볼까지 모두 아래와 같이 나오는걸 확인할 수 있습니다.

처음에 작성된 코드가 아래 코딩임을 다시 한번 상기해보신다면,

마지막에 public을 사용하지 않은 string 배열 test인 “you can not see this”는 표시되지 않은걸 확인 할 수 있습니다.

나머지는 모두 위와 같이 스마트컨트랙트에 정상적으로 배포가 되었네요.

반응형

[solidity] 스마트컨트랙트 배포하기

스마트 컨트랙트 생성 순서

1. 스마트 컨트랙트 코드 작성 (.sol)

pragma solidity ^0.8.0; // solcjs –version 로 버전확인 contract hello { string value; constructor(){ value = “hello solidity”; } // 파일에 저장된 내용을 가져올 것인지? storage // 메모리에 저장된 내용을 가져올 것인지? memory function get() public view returns(string memory){ return value; } //solcjs –bin –abi .\hello.sol // 파일명_확장자_컨트랙트명 }

hello_sol.sol로 저장해준다

2. 스마트 컨트랙트 코드 컴파일

해당 컨트랙트가 위치한 경로로 이동해서 컴파일 해야함

solcjs –abi –bin [파일명]

성공적으로 컴파일 되었다면, 해당 폴더 안에 .abi, .bin파일이 생성되어야 함 abi (Application Binary Interface) : 1에서 작성한 스마트 컨트랙트 코드의 설명이 담긴 JSON 파일 bin : 바이너리 파일

3. 컴파일 결과를 배포

‘배포’한다라는 것은 블록체인 상에 컴파일한 스마트컨트랙트의 ByteCode를 Transaction에 실어 블록에 포함시킨 상태 (출처: https://lbm93.tistory.com/8

hello_sol.sol이 위치한 폴더에 hello_sol.js 파일 생성, 다음과 같이 입력 (출처: https://velog.io/@wlgus2134

onst Web3 = require(‘web3’) let connection = new Web3(‘http://127.0.0.1:8545’) // abi파일에 있는 정보들을 JSON형식으로 변형해서 ABI_CODE변수에 담아줌 const ABI_CODE = JSON.parse(‘[{“inputs”:[],”stateMutability”:”nonpayable”,”type”:”constructor”},{“inputs”:[],”name”:”get”,”outputs”:[{“internalType”:”string”,”name”:””,”type”:”string”}],”stateMutability”:”view”,”type”:”function”}]’); // bin 파일에 있는 정보들을 ”으로 감싸서 BYTECODE 변수에 담아줌 // bin 파일에 있는 것을 복붙하세요. const BYTECODE = ‘ ‘ const contract = new connection.eth.Contract(ABI_CODE) contract.deploy({ data:BYTECODE }) // from 안에 Ganache를 돌려서 얻었던 Available Accounts중 하나를 ”로 감싸서 입력 // Gas(수수료)는 Gas Limit에 입력되어있던 6721975로 설정 .send({ from:’0x11eeC4232900708324D58ebca115566a02F59Ddd’, // ganache-cli –host 0.0.0.0 입력 후 아무거나 선택 gas:’6721975′ },(error,result)=>{ console.log(error) }) .then( data =>{ console.log(data.options.address) })

터미널 창을 열어 다음 명령어 입력

node hello_sol.js

로컬 virtual 지갑을 생성하고 있는 ganache cmd창을 확인해보면, 다음과 같이 sendTransaction 결과가 나와있다.

얼렁뚱땅 따라하긴했는데 100% 이해가 안된다…

파이썬이 엄청 편한 언어였구나…

[Web3.js] Smart Contract 배포

시작 전 Web3 version

저는 Web3 1.2.4v을 사용했습니다. Contract 를 배포하는 과정과 사용하는 과정은 다음과 같습니다.

Contract 배포 순서

Contract 작성 -> 컴파일 -> Contract 객체 생성(ABI포함) -> Contract 인스턴스를 이용해 deploy 생성 후 send

Contract 사용 순서

Contract 객체 생성(ABI, 배포된 Contract Address) -> Method 호출

SmartContract 작성

먼저 SmartContract를 Solidity라는 언어로 작성 해줍니다. 저는 편의를 위해 Remix에서 작성했습니다.

Remix는 https://remix.ethereum.org 에서 사용이 가능합니다. 먼저 아래의 그림처럼 간단하게 Contract를 작성해 줍니다.

위 코드는 간단히 HelloWorld 메소드 호출 시 greeting이라는 변수에 HelloWorld가 들어가고 say 메소드 호출 시 greeting 값을 불러오는 코드입니다.

SmartContract 컴파일

작성한 SmartContract를 컴파일하는 방법은 두 가지가 있습니다.

Linux에서 solidity 컴파일러 설치 npm install -g solc Remix에서 컴파일하기

Remix에서 컴파일을 하는 방법은 먼저 컴파일러 버전을 선택해줍니다. 아래 그림과 같이 setting 탭에서 컴파일러 버전을 선택하면 됩니다. 컴파일러 버전은 Contract작성 시 맨 위에 기입했던 버전과 동일해야 합니다.

버전 선택이 되었다면 아래 그림처럼 Compile 탭에서 컴파일을 시작합니다.

정상적으로 컴파일이 완료되었다면 run탭에 아래 그림과 같이 컴파일된 Contract를 확인할 수 있습니다.

SmartContract의 ByteCode와 ABI얻기

컴파일이 제대로 성공했다면 바로 위의 그림에서 밑에 HelloWorld라고 생긴걸 확인할 수 있습니다.

여기서 옆에 Details를 누르면 아래 그림처럼 Contrat의 ByteCode와 ABI를 얻을 수 있습니다.

위의 ABI같은 경우에는 옆에 클립보드로 복사를누르면 내용이 복사됩니다.

우리는 이제 이 데이터를가지고 web3.js를 이용해 Contract를 배포할 것 입니다.

SmartContract 배포하기

SmartContract를 배포한다는 것은 블록체인 상에 컴파일한 SmartContract의 ByteCode를 Transaction에 실어 블록에 포함시킨 상태라고 말할 수 있습니다.

ByteCode와 ABI 파일로 읽어 들이기

먼저 위에서 얻은 ByteCode와 ABI를 각각 파일로 저장하고 파일을 읽어 들입니다.

const ByteCode_File = JSON.parse(fs.readFileSync(‘../contract/HelloWorld/bytecode’,’utf-8′)); const ABI_File = JSON.parse(fs.readFileSync(‘../contract/HelloWorld/ABI’, ‘utf-8′));

Contract 객체 생성

Contract 객체를 생성합니다. 이 때 최초 SmartContract를 Deploy하기 때문에 생성자에 인자값으로 ABI코드만 넣어줍니다.

//SmartContract의 ABI를 담은 Contract 객체 생성 const MyContract = new web3.eth.Contract(ABI_File);

Account unlock 하기

Contract를 배포하는 것은 Transaction을 발생 시키는 것이기 때문에 무분별한 Transcation 방지를 위해 막아둔 lock을 풀어줍니다.

web3.eth.personal.unlockAccount(Account,’비밀번호’, 10000).then(console.log(‘Account unlock’));

비밀번호라 적혀있는 부분에는 Account의 PrivateKey를 즉 비밀번호를 넣어주면 됩니다. 위 방식은 실행 시 보안이 매우 안좋다고 나오므로 테스트용으로만 사용합니다.

Contract Deploy하기

Contract를 Deploy하기 위해선 아래와 같이 작성합니다.

//deploy에 data : contract의 bytecode를 넣고 deploy //arg는 Hex로 표현해야 한다는 Waring 발생 toHex로 해결 const deploy = MyContract.deploy({ data : ‘0x’ + bytecode }).send({ from : web3.utils.toHex(Account), gas: web3.utils.toHex(1000000), gasPrice : web3.utils.toHex(web3.utils.toWei(’10’, ‘gwei’)) }, (err, transactionHash) =>{ console.info(‘transactionHash’, transactionHash); }).on(‘error’, (error)=>{ console.info(‘error’, error); }).on(‘transactionHash’, (transactionHash) =>{ console.info(‘transactionHash’, transactionHash); }).on(‘receipt’, (receipt) =>{ console.info(‘receipt’, receipt); }).on(‘confirmation’, (confirmation) =>{ console.info(‘confirmation’, confirmation); }).then((newContractInstance) =>{ console.info(‘newContractInstance’, newContractInstance); });

위 코드에서 data 부분에 bytecode 앞에는 반드시 ‘0x’를 붙여줍니다. 저는 여기서 web3.utils.toHex를 해주었다가 한참 고생했습니다. 이유를 생각해보니 bytecode자체가 16진수로 이루어진 수 이기때문에 앞에 또 toHex를 해버리면 이상한 값으로 발생해 Contract 발행 시 data가 길어질 수 있습니다. 그 결과가 아래에 그림에서 확인할 수 있습니다.

toHex를 해버린 ByteCode

위 그림처럼 Bytecode가 길어진다면 당연히 이 Bytecode를 다 블록에 포함시키기 위해서는 더 많은 비용의 가스가 소모되겠죠?

‘0x’ 를 붙여준 ByteCode

그리고 gas 부분은 gaslimit이 되는 부분으로 너무 적게도 너무 많게도 적으면 안된다. 그러면 배포시 에러가 발생한다. 정상적으로 배포가 되어 채굴이 된다면 아래그림처럼 Transaction Hash값이 나오고 이 Transaction Hash를 확인 해 볼 수 있다.

배포 한 SmartContract 사용해 보기

배포 한 SmartContract를 사용하기 위해서는 반드시 BlockChain에 Contract의 ByteCode가 포함된 상태여야한다. 정상적으로 배포가 되었다면 아래 그림처럼 SmartContract의 주소와 JSONINTERFACE를 확인해 볼 수 있다.

위에서 우리는 JSONINTERFACE 를 확인할 수 있다. 이 것은 ABI로 이 인터페이스를 통해 우리가 어떤 메소드가 존재하는지 확인하고 SmartContract를 이용하게 해주는 가이드라고 보면 된다.

우리는 위에서 say라는 함수를 호출해 greeting이라는 변수의 값을 확인할 것이다.

코드는 다음과 같다.

//컨트랙트의 주소 const ContractAddress = ‘0x14f4Ca12EFe6dEaB180525e603DC46B46a1e67Cf’; const ABI_File = JSON.parse(fs.readFileSync(‘../contract/HelloWorld/ABI’, ‘utf-8’)); const TestContract = new web3.eth.Contract(ABI_File,ContractAddress); TestContract.methods.say().call().then(console.log);

위 코드를 수행하게 되면 다음과 같은 결과를 확인할 수 있다.

ps.여기까지 web3를 이용해 SmartContract를 배포하고 사용해보는 시간을 가졌다. 정말 복잡하고 web3.js버전이 자주 바뀌어 안되는 부분도 찾아가면서 하느라 시간이 많이 걸렸습니다 !! 다들 열심히 하십쇼!!

참고문헌

키워드에 대한 정보 스마트 컨트랙트 배포

다음은 Bing에서 스마트 컨트랙트 배포 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

이더리움 #Dapp #개발 ##3 #| #스마트 #컨트랙트 #코딩하기


YouTube에서 스마트 컨트랙트 배포 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 이더리움 Dapp 개발 #3 | 스마트 컨트랙트 코딩하기 | 스마트 컨트랙트 배포, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment