Relayer를 통해 스마트 계약을 배포하는 방법
Defender 팀 API 키 및 암호 복사
Defender 에서 오른쪽 상단의 햄버거 메뉴를 선택한 다음 Team API Keys를 선택합니다. 여기에서 기존 API 키와 이를 사용하여 수행할 수 있는 작업을 볼 수 있습니다. 이 대시보드에서 마우스를 가져간 후 오른쪽에서 휴지통을 선택하여 API 키를 삭제할 수도 있습니다.
팀 API 키 생성을 선택한 다음 이 API 키를 사용하여 수행할 수 있는 권한을 제한하지 않으려면 모든 항목을 선택된 상태로 둡니다. 저장을 누르십시오. API 키와 시크릿을 복사하라는 메시지가 표시됩니다. 안전한 장소에 보관하십시오. 다시 표시되지 않습니다.
키를 복사했음을 나타내는 확인 표시를 선택하고 저장을 선택합니다.
Defender에서 팀 API 키와 암호를 복사합니다.
릴레이어 만들기
먼저 필요한 패키지를 설치합니다.
$ npm install defender-relay-client
.env 파일에 Defender API 키와 비밀을 제공하고 변수 이름을 적절하게 조정하여 다음과 같은 스크립트를 만듭니다.
const { RelayClient } = require('defender-relay-client');
const { appendFileSync, writeFileSync} = require('fs');
async function run() {
require('dotenv').config();
const { DEFENDER_API_KEY: apiKey, DEFENDER_API_SECRET: apiSecret } = process.env;
const relayClient = new RelayClient({ apiKey, apiSecret });
// create relay using defender client
const requestParams = {
name: 'MyRelayer',
network: 'goerli',
minBalance: BigInt(1e17).toString(),
};
const relayer = await relayClient.create(requestParams);
// store relayer info in file (optional)
writeFileSync('relay.json', JSON.stringify({
relayer
}, null, 2));
console.log('Relayer ID: ', relayer);
// create and save the api key to .env - needed for sending tx
const {apiKey: relayerKey, secretKey: relayerSecret} = await relayClient.createKey(relayer.relayerId);
appendFileSync('.env', `\nRELAYER_KEY=${relayerKey}\nRELAYER_SECRET=${relayerSecret}`);
}
run().catch((error) => {
console.error(error);
process.exitCode = 1;
});
참고: API를 사용하여 Relayer를 통해 직접 거래를 보내려면 키와 비밀(위 코드에서
.env
파일에 추가됨)이 필요합니다. 그러나 Autotask를 통해 트랜잭션을 보내려는 경우 필요한 유일한 자격 증명은 relayerId
와 함께 팀 API 키 및 비밀입니다(위 단계에서 relay.json
파일에 저장됨).계약 컴파일 및 배포
실행
npx hardhat compile
(또는 다른 컴파일러를 사용하는 경우 동등 항목)을 실행하여 스마트 계약을 배포할 준비를 하십시오.다음 스크립트를 사용하여 계약을 배포합니다.
const { DefenderRelayProvider, DefenderRelaySigner } = require('defender-relay-client/lib/ethers');
const { ethers } = require('hardhat');
const {writeFileSync} = require('fs');
async function main() {
require('dotenv').config();
const credentials = {apiKey: process.env.RELAYER_KEY, apiSecret: process.env.RELAYER_SECRET};
const provider = new DefenderRelayProvider(credentials);
const relaySigner = new DefenderRelaySigner(credentials, provider, { speed: 'fast' });
const MyContract = await ethers.getContractFactory("SimpleRegistry");
const myContract = await MyContract.connect(relaySigner).deploy().then(f => f.deployed());
writeFileSync('deploy.json', JSON.stringify({
MyContract: myContract.address,
}, null, 2));
console.log(`MyContract: ${myContract.address}\n`);
}
if (require.main === module) {
main().then(() => process.exit(0))
.catch(error => { console.error(error); process.exit(1); });
}
이 코드는 계약에 대한 아티팩트와 함께 로컬 파일에서 Relayer의 자격 증명을 가져오고 ethers.js를 사용하여 배포합니다. 계약의 관련 주소가 로컬 파일
deploy.json
에 저장됩니다.Relayer를 통해 계약을 성공적으로 배포한 것을 축하합니다!
Reference
이 문제에 관하여(Relayer를 통해 스마트 계약을 배포하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/slw/how-to-deploy-smart-contracts-via-relayer-3876텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)