일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스마트컨트렉트프록시
- 티스토리챌린지
- 러스트 기초 학습
- 컨트렉트 배포 자동화
- ethers type
- git rebase
- ethers
- nest.js설명
- ethers typescript
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트테스트
- 러스트 기초
- 스마트 컨트렉트 함수이름 중복
- chainlink 설명
- vue기초
- Vue.js
- 체인의정석
- 오블완
- Vue
- 머신러닝기초
- multicall
- ambiguous function description
- 러스트기초
- ethers v6
- 스마트컨트렉트 예약어 함수이름 중복
- ethers websocket
- SBT표준
- 프록시배포구조
- rust 기초
- 스마트컨트렉트 함수이름 중복 호출
- Today
- Total
목록블록체인/Ethers & web3 (59)
체인의정석
1. 사용하려는 버전에 맞게 오픈제플린의 npm 모듈 다운로드 하고 Solidity 코드 작성해주기 먼저, ERC20의 경우 기본 자료형인 name, symbol, decimal을 배포 시에 지정해 주어야 한다. 토큰 자체를 만드는 거라면 최신버전으로 만들면 되지만 요즘엔 ERC20 정도는 테스트 용으로 하나씩 만들어 주는 경우가 많기 때문에 상황에 맞는 버전을 선택하는 것이 중요하다. Solidity의 버전에 따라서 다르지만 (예를 들어 0.5.0 버전에서는 ERC20Detailed) 잘 찾아서 가져오면 된다. 이때 burn과 mint의 경우는 상속받은 후 public 함수로 선언하여 internal로 정의된 함수를 가져와서 선언해 주어야 한다. 마찬가지로 extension에 있는걸 상속받아서 사용해도..
bignumber의 경우 테스트 코드를 할 때 적용해주어야 한다. 특히 소수점 처리를 다루는 컨트렉트의 경우 정확한 예측치를 바탕으로 테스트를 하기 위해서는 decimal 을 적용시켜서 테스트 코드레벨에서 먼저 시나리오 테스트를 하는게 필요하다. 하지만 ethers로 하는 경우 잘 정리되어 있는 글이 별로 없어 따로 정리를 하였다. 먼저 decimal을 적용할 경우 ethers의 parsUnits을 사용한다. decimal이 적용되기 전의 숫자를 number라고 정의해 놓고 이를 문자열로 바꾼 후 뒤에 붙이고 싶은 0 만큼, 여기선 일반적인 케이스인 decimal이 18인 경우이니 18만큼을 넣어준다. ethers.utils.parseUnits(number.toString(), 18) 이러면 Bignum..
하드햇에서 첫번째로 작성하게 되는 테스트 코드는 해피케이스에 대한 시나리오 테스트이다. 이 테스트가 끝나게 되면 테스트 커버리지를 100% 까지 올리기 위해서 온갖 오류를 직접 발생시켜야 한다. 하지만 스마트컨트렉트에서 대부분의 함수들은 특정 조건에서만 실행이 가능하기 때문에 특정 시점에서 분기가 일어나서 오류가 테스트되는 경우 앞에 기본 세팅은 반복이 되어야 한다는 문제점이 있다. 여기에 따라 beforeEach를 사용하기로 하였다. 일단 기본 포맷은 아래와 같다. https://hardhat.org/hardhat-runner/docs/guides/test-contracts#using-fixtures Hardhat | Ethereum development environment for profession..
const bigNumberChainId = await exchangeCore.getChainId(); chainId = ethers.BigNumber.from(bigNumberChainId).toNumber(); 다음과 같이 ChainID를 조회하는 경우 bignumber가 나오는 경우에서 위와 같이 bigNumber를 먼저 구한 후 .toNumber()를 해주면 숫자형으로 바뀐다. 일반적인 decimal과 관련된 경우 소수점을 표시하고 싶은 경우 아래와 같이 바꿔서 표시해 줄 수 있다. https://ethereum.stackexchange.com/questions/101356/how-to-convert-bignumber-to-normal-number-using-ethers-js How to conv..
EIP712 형태의 서명에서 domain separator를 할 때 체인아이디가 들어가야 하기 때문에 이를 위해서 체인아이디를 통일 시키는 방법을 알아 보았다. 먼저 하드햇 네트워크 실행의 경우 npx hardhat node 를 입력하면 테스트 네트워크가 노드 형태로 올라가게 된다. 여기서 공개키와 비밀키가 같이 나오므로 나온 비밀키를 메타마스크에 임포트 시켜서 메타마스크 연결이 가능하다. lambda256@lambda256-ethan% npx hardhat node You are using a version of Node.js that is not supported by Hardhat, and it may work incorrectly, or not work at all. Please, make sur..
https://ethereum.stackexchange.com/questions/15641/how-does-a-contract-find-out-if-another-address-is-a-contract How does a contract find out if another address is a contract? Is it possible, from within a contract written in Solidity, to check if a contract is placed on a specific address or if this address does not contain any code? ethereum.stackexchange.com 오픈씨의 wyvernExchange의 경우 아래와 같은 코드가..
DocstringParsingError: Documented parameter "registryAddress" not found in the parameter list of the function. DocstringParsingError: Documented parameter "tokenAddress" not found in the parameter list of the function. 위의 에러가 나서 어떤 내용인지 살펴보니 /** * @dev Initialize a WyvernExchange instance * @param registryAddress Address of the registry instance which this Exchange instance will use * @param tok..
1. solidity coverage를 사용하여 라인 커버리지를 100%까지 올려야 한다. https://www.npmjs.com/package/solidity-coverage solidity-coverage [![Gitter chat](https://badges.gitter.im/sc-forks/solidity-coverage.svg)][18] ![npm (tag)](https://img.shields.io/npm/v/solidity-coverage/latest) [![CircleCI](https://circleci.com/gh/sc-forks/solidity-coverage.svg?style=svg)][20] [![codecov](https://codec. www.npmjs.com 해당 모듈을 사용하..