일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프록시배포구조
- 러스트기초
- SBT표준
- ethers websocket
- git rebase
- 머신러닝기초
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- multicall
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트 예약어 함수이름 중복
- ambiguous function description
- 체인의정석
- ethers type
- ethers typescript
- vue기초
- 러스트 기초 학습
- ethers v6
- Vue.js
- nest.js설명
- 스마트 컨트렉트 함수이름 중복
- rust 기초
- chainlink 설명
- nestjs 튜토리얼
- Vue
- ethers
- 스마트컨트렉트프록시
- 깃허브명령어
- 스마트컨트렉트테스트
- 러스트 기초
Archives
- Today
- Total
체인의정석
hardhat, ethers, typescript 에서 서명정보 및 공개키 등록 및 가져오기 (getSigners, getContractAt) 본문
블록체인/Ethers & web3
hardhat, ethers, typescript 에서 서명정보 및 공개키 등록 및 가져오기 (getSigners, getContractAt)
체인의정석 2023. 7. 20. 10:50728x90
반응형
hardhat config 에서 먼저 다음과 같이 네트워크와 프라이빗 키를 넣어준다.
wemixTest: {
url: 'https://api.test.wemix.com',
accounts: [process.env.PRIVATE_KEY!,process.env.PRIVATE_KEY2!],
}
해당 private key에 대한 public key를 불러오려면 다음과 같이 쓰면 된다.
const signer = await ethers.getSigners();
console.log("getSigner:", signer[0].address);
console.log("getSigner:", signer[1].address);
그리고 해당 signer의 경우
const contractName = await ethers.getContractAt("ContractName",contractAddress,signer[0]);
이런식으로 지정하면 특정 컨트렉트의 정보를 가져와서 서명을 할 수 있게 된다.
물론 프라이빗 키가 하나라면
const ContractName = await ethers.getContractFactory("ContractName");
const contractName = await ContractName.attach(ContractAddress);
이렇게 하더라도 똑같이 된다.
해당 부분은 모든 스크립트에 적용 될 만한 부분이었기에 Utils.ts 에다가
export async function getAllSigners(i: number): Promise<Signer> {
const signers : Array<Signer> = await ethers.getSigners();
return signers[i];
}
해당 함수를 넣어 준 후에
const contractName = await ethers.getContractAt("ContractName",contractAddress,getAllSigners[0]);
이런식으로 signer를 넣어주었다.
그리고 msg.sender를 파라미터로 넣고 싶을 때는
const singers: Signer = await getAllSigners(0);
const signerAddress = await singers.getAddress();
이런식으로 값을 뽑아서 넣어주었다.
const contractName = await ethers.getContractAt("ContractName",contractAddress,signer);
이런식으로 하니 서명 및 signer의 퍼블릭 키를 배열 중 원하는 프라이빗 키로 할 수 있다.
* 다만 현재 ethers의 최신 버전은 문법이 많이 바뀌었다고 하며 많은 부분을 고쳐야 한다. 참고로 현재 내가 사용중인 버전은 이건데 아직까진 해당버전의 소스코드가 대부분이기 때문에 아직 최신버전으로 넘어갈 생각은 없다.
"ethers": "^5.0.8",
"hardhat": "^2.12.7",
728x90
반응형
'블록체인 > Ethers & web3' 카테고리의 다른 글
Module '"hardhat"' has no exported member 'ethers' 에러 해결법 (0) | 2023.07.21 |
---|---|
ethers & typechain 사용해서 타입 정의하기 (0) | 2023.07.20 |
블록체인에서 발생한 이벤트 데이터 정리해서 엑셀 파일로 만들기 (ethers, hardhat, excel) (0) | 2023.07.10 |
hardhat 에서 HeadersTimeoutError: Headers Timeout Error 해결 법 (0) | 2023.07.10 |
ethers에서 함수를 못찾을 때 , 오버로딩 문제 체크해 보기 (0) | 2023.05.23 |
Comments