본문 바로가기
ERC20토큰 목차 인터페이스 개념 IERC20.sol ERC20.sol IvyToken.sol 1. 인터페이스 개념 인터페이스는 추상 contract와 비슷하지만, 절대로 body 부분, 즉 {} 을 가진 함수를 포함할 수 없다. 다음은 인터페이스가 가지고 있는 추가적인 제한의 내용이다. 다른 contract로부터 상속받을 수 없지만, 다른 interface로부터 상속받을 수 있다. 모든 선언된 함수는 contract 안에서 public일지라도, interface에서는 external 선언이 되어야만 한다. constructor 선언 불가 상태 변수 선언불가 modifier 선언 불가. 위의 제한은 미래에 변경될 수도 있는 부분임을 참고 바란다. 인터페이스는 기본적으로 Contract ABI가 나타낼 수 있는 것들로.. 2022. 7. 21.
스마트컨트랙트에 결제 기능 넣기 사과가게 만들기 함수의 payable 개념 payable 키워드가 있어야만 tx 객체의 to 속성값인 CA 계정으로, value 속성값인 ETH를 줄 수 있다. 즉, tx 객체를 보낼 때, value 속성에 이더를 넣기 위해서 payable를 작성해주어야 한다, // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; contract AppleShop{ mapping(address => uint) myApple; //구매: myApple 변수의 address에 사과 갯수++, //tx 객체 보낼 때 단위당 사과 갯수 만큼 value값을 주기 위해 payable 작성 function buyApple() public payable { myApple[msg.send.. 2022. 7. 20.
address 타입의 분류: address / address payable 목차 address 타입의 분류 타입 전환 address payable의 추가 구성 address type 1. address type 의 두 가지 분류 address 타입은 크게 두 가지로 나눌 수 있다. address: 20 byte 값 (이더리움 address의 크기) address payable: address와 같지만, transfer와 send라는 추가 구성을 가짐 이러한 타입 구분의 포인트는 address payable이 함수 호출자로 하여금 ether를 보낼 수 있게 하는 address인 반면 일반적인 address에서는 이더를 보낼 수 없다 는 사실이다. (일반적으로 스마트 컨트랙트는 이더를 보내기 위한 목적으로 빌드되지 않았다....) 2. 타입 전환 address payable에서 a.. 2022. 7. 20.
솔리디티 문법 실행 목차 셋팅 솔리디티 코드 작성 컴파일 abi 변수 및 bytecode 변수 선언 Tx 객체 생성 및 네트워크로 보내기 contract 변수 선언 instance 변수 선언 솔리디티 코드 배포 확인 오늘은 솔리디티 문법의 실행을 해보자. 사실 문법을 먼저 숙지하고 나중에 실행을 하는 것이 좋은 방법이긴 하지만, 문법의 숙지가 생각보다 쉽지 않기 때문에 오류가 난 지도 모르고 배울 수 있다. 솔리디티 언어 실행이 타 언어에 비해서 쉽지 않음 수업이 끝났을 때 다음과 같은 것들을 할 수 있어야 함 코드 작성 후 컴파일러를 통해 바이트 코드로 변경 이더리움 네트워크 안에 바이트 코드를 넣어서 tx 발생시키기 마이닝이 됬을 때 작성한 코드가 실행시키기 만약 tx가 실행되지 않으면 마이닝이 됬는 지 아닌 지 확인할.. 2022. 7. 11.
geth 통해서 tx보내기 및 balance에 반영시키기 목차 geth 환경 셋팅 test 환경 셋팅 수신 계정 생성 및 tx 보내기 이번 게시글에서는 txpool에 내 tx 내용이 있는 지 확인 후 채굴을 해서 블럭이 생성되면 잔액에 반영되는 지 확인해보자! 1. geth 환경 셋팅 1-1. geth 실행 geth --datadir node --http --http.addr "0.0.0.0" --http.port 9000 -http.corsdomain "\*" --http.api "admin, miner, txpool, web3, personal, eth, debug, net" --syncmode full --networkid 7722 —port 30300 --allow-insecure-unlock 1-2. 새로운 터미널 실행해서 geth 노드에 대한 쌍방향.. 2022. 7. 1.
geth command line option 자주쓰이는 geth 커맨드 라인 옵션 USAGE: geth [options] [command] [command options] [arguments...] VERSION: 1.10.19-stable-23bee162 COMMANDS: attach 특정 노드에 대한 쌍방향 자바스크립트 환경 시작 console 쌍방향 자바스크립트 환경 시작 dumpconfig 설정값 확인 export 블록체인 파일로 내보내기 import 블록체인 파일 가져오기 init 부트스트랩, 새로운 제네시스 블럭 초기화 js 지정한 js파일 실행하기 removedb 블록체인과 상태 db 제거하기 snapshot 스냅샵 커맨드 version 버전 정보 확인 help, h Shows a list of commands or help for o.. 2022. 7. 1.
web3로 블럭, tx, txReceipt 가져오기 목차 블럭 가져오기 transaction 가져오기 transaction receipt 가져오기 1. 블럭 가져오기 1-1. 문법(syntax) web3.eth.getBlock(1,2,3) 1-2. 매개변수(parameters) String|Number|BN|BigNumber - 블록 번호 또는 블록 해시. 또는 "earliest", "latest" or "pending 불리언(선택, 디폴트는 false) - 만약 true라면, 반환된 블록의 transactions의 배열은 {}, false라면 tx 해시로 반환됨 함수(선택) - 첫번째 매개변수로 error 객체, 두번째 매개변수로 result를 반환하는 콜백함수 3. 반환(return): block 객체 { difficulty: '558380',//블록.. 2022. 7. 1.
puppeth 명령어를 통한 genesis.json 생성하기 // genesis.json { "config": { "chainId": 7722, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x62bd7dc2", "extraData": "0x0000000000000000000000000000.. 2022. 7. 1.
이더리움3. web3 라이브러리 목차 web3란? 셋팅 클래스 및 인스턴스 주요 메서드를 이용한 기능 구현 테스트 1. Web3란? 이더리움 생태계를 구축하기 위한 함수들을 포함하고 있는 모듈들의 집합인 라이브러리 2. 셋팅 2-1. 프로젝트에 web3 추가하기 $ npm install web3 2-2. web3 인스턴스 생성 및 provider 셋팅 import Web3 from 'web3'; const web3: Web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:8545')); 3. Web3 3-1. web3.js 라이브러리의 메인(umbrella) 클래스 Web3.utils Web3.version Web3.givenProvider Web3.providers Web.. 2022. 6. 28.