[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.jsRopsten 네트워크 설정 추가
  • call me challenge를 해결하기 위해 아래와 같이 스크립트를 작성하고 npx hardhat test --network ropsten으로 문제를 해결한다.
  • Ropsten 네트워크를 이용하기 위해서는 AlchemyAPI Key 값MetamaskPrivate 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);
	});


});
  • 달라진 점은 함수를 호출할 때 인자를 넘겨준다는 것 밖에 없다.

결과

  • 설정한 닉네임으로 주소값이 바뀌었고, 점수도 50+100+200=35050 + 100 + 200 = 350

좋은 웹페이지 즐겨찾기