일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- redux 기초
- ethers typescript
- ethers type
- erc4337
- 계정추상화
- 러스트 기초
- 스마트 컨트렉트 함수이름 중복
- vue기초
- 스마트컨트렉트 예약어 함수이름 중복
- ambiguous function description
- SBT표준
- cloud hsm 서명
- erc4337 contract
- Vue
- 티스토리챌린지
- ethers v6
- 컨트렉트 동일한 함수이름 호출
- 머신러닝기초
- git rebase
- cloud hsm 사용하기
- 오블완
- 러스트 기초 학습
- 체인의정석
- cloud hsm
- redux toolkit 설명
- ethers websocket
- Vue.js
- 러스트기초
- rust 기초
- 스마트컨트렉트 함수이름 중복 호출
- Today
- Total
목록분류 전체보기 (526)
체인의정석
스마트컨트렉트에서 이더리움을 보내는 방법은 총 3가지가 있다고한다. https://solidity-by-example.org/sending-ether/ Solidity by Example solidity-by-example.org transfer (2300 gas, throws error) send (2300 gas, returns bool) call (forward all gas or set gas, returns bool) 이렇게 3가지 인데, 원래 예전에는 call을 쓰면 재진입 공격이 가능하기 때문에 잘 쓰지 않는고 배웠었다. transfer나 send를 쓰라고 했는데 예전에 어느 시점의 메인넷 업데이트 이후 가스비가 변경되어 send나 transfer에 문제가 생기는 경우가 있었던 이야기를 전에..

참고 : 폴리곤 pos portal 소스코드 중 RootChainManager.sol 폴리곤의 pos portal에서는 delegate Call을 썼다. 주석을 보면 프록시 배포를 사용했기 때문에 사용했다고 하는 Call이 사용되고 있다. 하지만 프록시 배포를 사용하는 상황이 아니라면 이더리움을 직접 전송할 때는 transfer를 사용하는 것이 가장 좋다. 먼저 위는 일반 erc20 토큰을 예치할 때의 과정 아래는 이더리움과 같은 암호화폐를 예치할 때의 과정인데 결국 _deplositFor를 부르는 것은 동일하다. 여기서 넣는 ETHER ADDRSS의 경우 컨트렉트 상단에 명시되어 있는데 address public constant ETHER_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEE..
https://www.codegrepper.com/code-examples/shell/how+to+downgrade+the+version+in+npm+install hardhat 버전 변경하기 how to downgrade the version in npm install Code Example npm install -g npm@version-no www.codegrepper.com 글로벌로 된 모듈의 버전을 바꿀 때는 위와 같이 버전을 명시해서 한번 더 설치해주면된다. 만약 적용이 바로 안된다면 창을 한번 닫았다가 잠시 뒤에 해보면 적용이 되어 있다. hardhat 을 예로들어보면 npm install -g hardhat@2.8.3 이렇게 명시하면 버전이 내려가는것을 확인할 수 있었다.
테스트 코드 작성 이후 실제 메인네트워크에서 잘 작동하나 확인을 하기 위해서 따로 스크립트를 만들어야 했다. 일단 내가 사용하는 환경은 체인별로 설정 값이 다르니 hardhat에서 단위 테스트와 시나리오 테스트를 맞추었다 하더라도 실제로 트랜잭션을 보내보고 검토하는 과정이 필요하다. 근데 EIP712를 테스트하는 과정에서 원래는 메타마스크에서 서명 정보를 받은 후 DB에 저장하는 부분이 있는데 DB를 넣고 테스트 할 수 없으니, struct를 만드는 부분은 helper로 타입을 지정하여 따로 구현을 하였다. 이런식으로 지정해 두면 makeOrder(구조체 내용)을 넣고 스크립트를 돌릴 수 있다. structHelper.ts export enum Type { A1, A2, } export type Stru..
bignumber의 경우 테스트 코드를 할 때 적용해주어야 한다. 특히 소수점 처리를 다루는 컨트렉트의 경우 정확한 예측치를 바탕으로 테스트를 하기 위해서는 decimal 을 적용시켜서 테스트 코드레벨에서 먼저 시나리오 테스트를 하는게 필요하다. 하지만 ethers로 하는 경우 잘 정리되어 있는 글이 별로 없어 따로 정리를 하였다. 먼저 decimal을 적용할 경우 ethers의 parsUnits을 사용한다. decimal이 적용되기 전의 숫자를 number라고 정의해 놓고 이를 문자열로 바꾼 후 뒤에 붙이고 싶은 0 만큼, 여기선 일반적인 케이스인 decimal이 18인 경우이니 18만큼을 넣어준다. ethers.utils.parseUnits(number.toString(), 18) 이러면 Bignum..
먼저 approve를 무한대로 해주는 infiniteApprove의 경우 https://ethereum.stackexchange.com/questions/86928/does-the-approve-function-on-an-erc20-token-need-to-be-run-once-or-before-every Does the approve function on an ERC20 token need to be run once or before every relevant transaction? I understand that an ERC20's approve() function has to be run before the token can be sent to another contract. But is this ..
https://www.reddit.com/r/ethdev/comments/v2d972/how_to_calculate_percentage_in_solidity_80/ How to calculate percentage in Solidity ^8.0? Hi there, I read a lot of posts regarding this and before the Solidity version 8.0 it seems that would be very complicated to calculate... www.reddit.com 스마트 컨트렉트에서는 소수점 계산이 이루어지지 않는다. 따라서 특정 배수를 곱한 후 계산이 진행되게 되는데 uint256 z = x / 10000 * 1500; 이런 식으로 계산이 이루어진다..
일단 해당 게시글은 hashStruct안에 UUID를 넣고 싶은 상황에서 오류가 나서 해결하기 위해 고민한 결과를 담고 있다. 먼저 테스트를 위해서 UUID를 만들어야 했다. 그 부분은 https://it-timehacker.tistory.com/317?category=1006911 typescript로 UUID 만들기 오더북에 들어갈 각 정보를 임의로 넣기 위해서 UUID를 자동으로 생성해주는 모듈을 찾아서 써보기로 하였다. https://www.uuidgenerator.net/dev-corner/typescript Generate a UUID in TypeScript Generate a UU.. it-timehacker.tistory.com 여기를 보면 알 수 있다. 그 다음 차례는 string 자료..