일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트기초
- 스마트컨트렉트프록시
- chainlink 설명
- 러스트 기초 학습
- ethers websocket
- 스마트 컨트렉트 함수이름 중복
- Vue.js
- ethers typescript
- SBT표준
- ethers
- git rebase
- ethers type
- 스마트컨트렉트테스트
- 깃허브명령어
- ethers v6
- ambiguous function description
- 체인의정석
- 머신러닝기초
- 컨트렉트 배포 자동화
- 프록시배포구조
- 러스트 기초
- multicall
- nestjs 튜토리얼
- Vue
- 스마트컨트렉트 함수이름 중복 호출
- rust 기초
- 컨트렉트 동일한 함수이름 호출
- nest.js설명
- vue기초
- Today
- Total
목록분류 전체보기 (488)
체인의정석
이벤트를 작성하면서 어차피 가스비가 많이 들지 않으니 활용을 위해 인덱스를 최대한 많이 넣어보자 라는 생각으로 많은 인덱스를 달아 보았다. 그 결과 TypeError: More than 3 indexed arguments for event. 와 같은 오류가 나왓다. 사실 인덱스를 이렇게 달아본건 처음이라 여기에 제한이 있었나? 하고 찾아보니 https://ethereum.stackexchange.com/questions/52397/im-getting-an-error-when-i-have-more-than-3-indexed-arg-for-an-event I'm getting an error when i have more than 3 indexed arg for an event I want to add al..
Solidity 에서는 input값을 스토리지가 아닌 memory에 넣는다. string, bytes, struct에서는 이러한 표시를 해주지 않으면 컴파일 에러가 나게 된다. 다만 0.5.0 버전의 external에서는 솔리디티 컴파일러가 external 함수의 파라미터로 memory를 받지 않는다. Note that external functions require parameters with a data location of calldata. 그 이유는 external 함수가 아니라면 내부적으로만 호출되므로 calldata를 사용할 일이 없기 때문이다. 따라서 external의 인자값에는 memory가 아닌 calldata를 사용한다. 참고 : https://ethereum.stackexchange...
컨트렉트를 작성하고 컴파일을 하면서 TypeError: Linearization of inheritance graph impossible 다음과 같은 에러가 나타났다. 이러한 에러에 대하여 찾아보니. 상속의 순서를 최소화 시키지 않고 중복되지 않게 해야 오류가 안난다고 한다. 이에 따라서 확장성을 고려하여 설계한 각 컨트렉트에서는 하나의 인터페이스로 묶고 인터페이스를 상속해주어야지 실제로 해당 하위 컨트렉트에 external을 불러와서 사용할 수 있게 되기 때문에 원래 작성했던 컨트렉트에서 공통된 부분으로 뽑아서 하위에 전달해야 하는 공통부분을 인터페이스로 만드는 작업을 진행하였다. 각 토큰 유형별로 있는 컨트렉트의 공통 함수를 뽑아서 하나의 인터페이스로 잡은 후 최상단에서는 해당 인터페이스만 작업하도록..
Require과 Assert를 사용하는 방법 1. 함수가 실패해야 할 경우 실패를 하게 만든다. 2. 배후에 실행되는 것을 확실하게 하기 위하여 이전에는 실행이 되지 않게 require를 사용해야 한다. 3. 자신이나, 테스터에게 함수가 실패할 수 있을 경우를 상기시키기 위하여 사용한다. require 형태의 실패를 유발하기 위하여 DRY를 지키는 것이 중요하다. 그리고 해피케이스의 최소 조건에서 멀어진 단위테스트를 하면 fail이 일어나게 한다. 또한 각 함수의 유니크한 require 메세지를 통하여 왜 실패하였는지를 밝히는 것이 중요하다. 테스트 Modifier에 대하여 require 체크와 유사하게 모든 modifier들은 테스트를 해야 한다. 예를 들어 submitProposal 단위 테스트는 o..
이제 배포를 했으니 테스트코드를 작성하고 돌려봐야 한다. 테스트 코드는 딱히 가나슈랑 다른 점은 없어보여서 그대로 가져와서 사용해보기로하였다. const { expect } = require("chai"); const { ethers } = require("hardhat"); describe("Greeter", function () { it("Should return the new greeting once it's changed", async function () { const Greeter = await ethers.getContractFactory("Greeter"); const greeter = await Greeter.deploy("Hello, world!"); await greeter.deplo..
구버전의 NFT의 구현 코드를 보다가 ERC165를 발견하게 되었다. 요약하자면 해당 내용은 함수의 selector를 빼와서 컨트렉트에서 표준을 잘 지켰는지를 확인해 주는 코드 이다. https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v2.5.0/contracts/token/ERC721/ERC721.sol GitHub - OpenZeppelin/openzeppelin-contracts: OpenZeppelin Contracts is a library for secure smart contract development. OpenZeppelin Contracts is a library for secure smart contract dev..
이어서 하드햇과 오픈제플린 라이브러리를 연결하는 부분부터 진행을 하도록 한다. https://docs.openzeppelin.com/upgrades-plugins/1.x/hardhat-upgrades Using with Hardhat - OpenZeppelin Docs You can also use the plugin’s functions from your Hardhat tests, in case you want to add tests for upgrading your contracts (which you should!). The API is the same as in scripts. Proxies const { expect } = require("chai"); describe("Box", functio..
1. 하드햇 문서 페이지 https://hardhat.org/guides/project-setup.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 npx hardhat 실행시 기본 세팅이 완료됨 2. hardhat.config.js 여기서 버전 설정 및 초기 실행시 기본적으로 실행할 값들 지정 가능. 만약 낮은 버전을 사용할 시 사용하는 모듈 또한 낮은 버전에 맞추어서 찾아서 활용해야 함. 0..