일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프록시배포구조
- 스마트컨트렉트프록시
- rust 기초
- multicall
- 체인의정석
- SBT표준
- 머신러닝기초
- ethers typescript
- 스마트컨트렉트테스트
- git rebase
- vue기초
- 티스토리챌린지
- Vue
- 러스트 기초 학습
- 러스트기초
- ambiguous function description
- 컨트렉트 배포 자동화
- ethers
- ethers websocket
- chainlink 설명
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 동일한 함수이름 호출
- 오블완
- ethers v6
- Vue.js
- nest.js설명
- Today
- Total
목록블록체인/Ethers & web3 (59)
체인의정석
스마트컨트렉트에 있어서 자동으로 배포해주고 설정해주는 스크립트를 짜는 것은 중요하다. 이번 프로젝트에서는 여러 상황에 따라 여러 종류의 스크립트를 사용하였는데 1. env 파일을 사용하는방법 .env 파일을 만든 후에 process.env.환경변수 를 이용하여서 스크립트를 사용한다. 나중에 리눅스 커멘드로 운영할때도 편리한 방법이다. 다만 계속해서 변수가 바뀔 경우 환경변수로 하기에는 복잡한 한계가 존재한다. 2. 변수를 모듈로 빼서 정의 후 사용하는 방법 export const를 사용하여 따로 하나의 변수 파일에 정의한 후 import 해와서 해당 변수를 파악한다. ethers.js를 사용하면 둘 다 쉽게 쓸 수 있지만 현재 상황은 여러 체인의 여러 환경 (dev,prd,test) 등을 같이 관리해야 ..
실제 프로덕트를 배포할 단계가 오면서 가스비에 대한 산정을 해야 하는 단계에 이르렀다. 일단 먼저 usedGas를 사용하기로 하였다. 개발자 단톡방에 물어봐서 조언을 얻은 결과 1. estimateGas 로 고정 가스비 계산 ( 이 경우는 이더스캔에서 확실하게 확인하였다.) 2. eth_gasPrice API 결과로 얻은 gasPrice 두 값을 곱해서 결제를 올리면 된다는 추천을 받았다. 다만, gasPrice의 값은 네트워크 상황에 따라 달라질 수 있으며, 변동값인건 어쩔 수 없으므로 보수적으로 넉넉히 받을것 또한 고정된 가스비보다 3만 정도를 더 포함시킬 것이 유의사항이다. 3만을 포함시키는 이유는 측정값보다 더 적게 나올 가능성이 있기 때문이며, 사용안된 가스는 반환되므로 큰 상관이 없다. 그리고..
npx hardhat coverage http://www.correccionesweb.com.ar/hardhat_vue/plugins/solidity-coverage.html Ethereum development environment for professionals by Nomic Labs Compile, deploy, test and debug your Ethereum software. Get Solidity stack traces, console.log, mainnet forking and more. www.correccionesweb.com.ar 솔리디티의 테스트 코드 커버리지를 구해야하 하는 상황이다. 일단 이더리움 체인이 아니라서 테스트코드에서 가스비를 지정해주는 부분이 있었는데, 이렇게 가스비..
내일 테스트 환경 배포를 앞두고 최종적으로 관리자 권한 세팅을 수정하다가. Owner를 바꿀때 Pauser나 Signer를 바꾸는 부분을 발견하였다. 이를 테스트하기위해 관리자를 계속해서 바꾸면서 잘못된 관리자도 넣어봤는데 실행이 되고 넘어가고 이상한 곳에서 에러가 났다. 몇시간을 봐도 에러를 찾을 수 없었고 아무리 고민해봐도 답이 안보였다. 하지만 스마트컨트렉트가 잘못될 경우 물어볼 곳 같은건 존재하지 않는다 ㅠㅠ 그래서 일단 배포하고 나서 같은 상황을 만든 후 tenderly를 사용해서 오류의 정확한 원인을 찾아야겠다는 결론에 너무 귀찮았지만 실제로 배포후 테스트해보니 에러가 안났다. 그 이후 테스트 코드에 잘못된 관리자가 보낼 때 예외 처리를 마무리 시키니 오류가 잡히고 정상작동 하였다. Signe..
크게 3가지 유형으로 나뉘며, 이걸 제대로 못할 시 에러가 나게 된다. 스마트컨트렉트 개발에 가장 큰 시간을 들여야 하는 부분은 역시 테스트 코드가 아닌가 싶다. 반복되는 부분을 정리하여 나중에 해메지 않아야 하기 때문에 이쯤에서 다시한번 정리하고 넘어가도록 하겠다. 1. 함수를 실행하고 이벤트를 남겼는지 체크 이 경우 await로 전체를 감싸준다. 이벤트가 발생되었는지 체크하는 시점은 함수 전체가 실행 되고 난 이후이기 때문이다. it("Should setBridge in Contract", async () => { await expect(컨트렉트이름.함수명(입력값1, 입력값2)) .to.emit(컨트렉트이름, "이벤트이름") .withArgs(이벤트값1, 이벤트값2) }) 2. 오류가 제대로 발생하는..
일단 트랜잭션을 보내기 위해서는 signer 객체를 생성해야 한다. 이는 hardhat.config.ts에 있는 module.exports = { networks: { hardhat: { }, ropsten: { url: process.env.DEFAULT_ETHEREUM_ROPSTEN_RPC_URL, accounts: [process.env.TEST_PK] }, 위와 같은 형태의 네트워크 설정값의 accounts에 넣어주면 된다. 해당 내용은 https://docs.ethers.io/v5/api/signer/ Signers Documentation for ethers, a complete, tiny and simple Ethereum library. docs.ethers.io ethers js의 사이너..
작성한 스마트컨트렉트의 배포 이후 지난번 메타마스크에 이어서 이번에는 관리자가 사용할 백엔드 환경에서의 API를 만들어야 하는 상황이 왔다. 지난번에는 자바스크립트로 모듈을 만들었었는데 이번에는 타입스크립트로 ABI를 저장한 후 불러와서 사용해야 되는 상황이 되었다. https://radlohead.gitbook.io/typescript-deep-dive/project/modules/external-modules 파일을 이용한 모듈화 - TypeScript Deep Dive 그러나 특정조건에서 foo파일만 불러오기를 원할 수 있습니다. 그런 경우에는 type annotation 및 not로 import를 변수이름으로 사용해야 합니다. 이렇게하면 타입스크립트에서 주입되는 런타임 종속성 radlohead.g..
https://hardhat.org/tutorial/debugging-with-hardhat-network.html Ethereum development environment for professionals by Nomic Labs Compile, deploy, test and debug your Ethereum software. Get Solidity stack traces, console.log, mainnet forking and more. hardhat.org pragma solidity ^0.6.0; import "hardhat/console.sol"; contract Token { //... } 테스트때 쓰려고 막상 찾으려니 찾는데 해메서 글로 올린다. 위와 같이 import를 선언하여 har..