[CTE] Warmup
Warmup
Deploy (#)
- 별다른 해야 할 건 없고, 환경설정을 하는 단계이다.
- Metamask 설치
- Metamask 지갑 생성
- 네트워크를 Ropsten 으로 변경
- 트랜잭션을 위한 Ropsten Eth 얻기 (faucet)
- 이후 시키는대로 버튼을 누르면
50 points
를 얻고 통과한다.
Call me(#)
컨트랙트
는 블록체인(이더리움) 네트워크 상에 배포되어(deployed
) 있다.
- 따라서,
On-Chain
컨트랙트와 interact하기 위한 방법이 필요했다.
- 이를 해결하기 위해 나는
Hardhat
을 이용했다.
Hardhat
은 이더리움 개발환경으로 컨트랙트 컴파일
, Built-in Local Network 제공
등 다양한 기능이 있다.
- 여러 기능 중 CTE 에서는
test
기능을 이용한다.
Warmup
단계이기 때문에 Call me Challenge도 환경설정 단계로 볼 수 있다.
Hardhat
을 설치
hardhat.config.js
에 Ropsten
네트워크 설정 추가
- call me challenge를 해결하기 위해 아래와 같이 스크립트를 작성하고
npx hardhat test --network ropsten
으로 문제를 해결한다.
- Ropsten 네트워크를 이용하기 위해서는
Alchemy
의 API Key 값
과 Metamask
의 Private Key
값을 얻어서 hardhat.config.js
에 지정해야 한다.
- 이는
hardhat tutorial
등을 찾아보면 자세히 나와있다.
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("Call Me Contract", function () {
before( async () => {
const factory = await ethers.getContractFactory("CallMeChallenge")
contract = factory.attach("0x8FA2BEBace3C78492601306035852Ab748179073")
});
it("solves the challenge", async () => {
const tx = await contract.callme();
await tx.wait()
});
});
- 스크립트 실행 결과는 아래와 같다.
c0np4nn4@ubuntu:~/Desktop/hardhat-tutorial$ npx hardhat test ./test/callme.js --network ropsten
Call Me Contract
✔ solves the challenge (8626ms)
1 passing (10s)
c0np4nn4@ubuntu:~/Desktop/hardhat-tutorial$
Choose a nickname(#)
- call me challenge와 동일한 온체인 컨트랙트와 interact 하는 challenge 이다.
- 스크립트 코드는 아래와 같다.
const { ethers } = require("hardhat");
const { expect } = require("chai");
describe("Nickname Challenge", function () {
before(async function () {
const factory = await ethers.getContractFactory("CaptureTheEther")
contract = factory.attach(`0x71c46Ed333C35e4E6c62D32dc7C8F00D125b4fee`)
});
it("solves the challenge", async function () {
const myNickname = ethers.utils.formatBytes32String(`p4nn4`);
const tx = await contract.setNickname(myNickname);
});
});
- 달라진 점은 함수를 호출할 때 인자를 넘겨준다는 것 밖에 없다.
결과
- Metamask 설치
- Metamask 지갑 생성
- 네트워크를 Ropsten 으로 변경
- 트랜잭션을 위한 Ropsten Eth 얻기 (faucet)
50 points
를 얻고 통과한다.컨트랙트
는 블록체인(이더리움) 네트워크 상에 배포되어(deployed
) 있다.On-Chain
컨트랙트와 interact하기 위한 방법이 필요했다.Hardhat
을 이용했다.Hardhat
은 이더리움 개발환경으로 컨트랙트 컴파일
, Built-in Local Network 제공
등 다양한 기능이 있다.test
기능을 이용한다.Warmup
단계이기 때문에 Call me Challenge도 환경설정 단계로 볼 수 있다.Hardhat
을 설치hardhat.config.js
에Ropsten
네트워크 설정 추가
npx hardhat test --network ropsten
으로 문제를 해결한다.- Ropsten 네트워크를 이용하기 위해서는
Alchemy
의API Key 값
과Metamask
의Private Key
값을 얻어서hardhat.config.js
에 지정해야 한다. - 이는
hardhat tutorial
등을 찾아보면 자세히 나와있다.
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("Call Me Contract", function () {
before( async () => {
const factory = await ethers.getContractFactory("CallMeChallenge")
contract = factory.attach("0x8FA2BEBace3C78492601306035852Ab748179073")
});
it("solves the challenge", async () => {
const tx = await contract.callme();
await tx.wait()
});
});
c0np4nn4@ubuntu:~/Desktop/hardhat-tutorial$ npx hardhat test ./test/callme.js --network ropsten
Call Me Contract
✔ solves the challenge (8626ms)
1 passing (10s)
c0np4nn4@ubuntu:~/Desktop/hardhat-tutorial$
const { ethers } = require("hardhat");
const { expect } = require("chai");
describe("Nickname Challenge", function () {
before(async function () {
const factory = await ethers.getContractFactory("CaptureTheEther")
contract = factory.attach(`0x71c46Ed333C35e4E6c62D32dc7C8F00D125b4fee`)
});
it("solves the challenge", async function () {
const myNickname = ethers.utils.formatBytes32String(`p4nn4`);
const tx = await contract.setNickname(myNickname);
});
});
- 설정한 닉네임으로 주소값이 바뀌었고, 점수도 점이 되었다.
Author And Source
이 문제에 관하여([CTE] Warmup), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@c0np4nn4/CTE-Warmup저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)