1. git commit (변경사항 기록하기)
2. 토큰 발행 (mint)
3. 테스트
* git..이 처음이라 코드에 붙는 설명이 모호~할 수 있음...
git commit에 대해 찾아본 내용 정리(추후첨부)
쓰다보니 길어져서 따로 정리해두었다.
일단 git 상태를 보고 확인할 수 있고..
지금 보면 변동사항이나 연동되지 않은 파일이 보인다.
❯ git status
On branch master
(요게 !5 부분)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: contracts/Lock.sol
deleted: ignition/modules/Lock.ts
modified: package-lock.json
modified: package.json
deleted: test/Lock.ts
(이건 ?3 부분)
Untracked files:
(use "git add <file>..." to include in what will be committed)
contracts/MyToken.sol
ignition/modules/MyToken.ts
test/MyToken.ts
no changes added to commit (use "git add" and/or "git commit -a")
git commit -m "~~" 으로 올릴 때,
메시지를 잘 적어둬야 찾기 용이하다..!!!
변화의 흐름 중에서 각각 다르게 적어줘야 하는 메시지가 있으니
단락별로 끊어서 commit하는 게 필요한 것 같다.
우리는 기본 파일을 지우고(1), mytoken을 만들었으니(2)
2개로 나눠서 올렸다.
❯ git add contracts/Lock.sol ignition/modules/Lock.ts test/Lock.ts
(생략해서 표기)/hardhat-test master +3 !2 ?3
❯ git status ─╯
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: contracts/Lock.sol
deleted: ignition/modules/Lock.ts
deleted: test/Lock.ts
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: package-lock.json
modified: package.json
Untracked files:
(use "git add <file>..." to include in what will be committed)
contracts/
ignition/
test/
/hardhat-test master +3 !2 ?3
❯ git commit -m "remove hardhat default solidity files" ─╯
[master f759f4b] remove hardhat default solidity files
3 files changed, 181 deletions(-)
delete mode 100644 contracts/Lock.sol
delete mode 100644 ignition/modules/Lock.ts
delete mode 100644 test/Lock.ts
/hardhat-test master !2 ?3
❯ git log

나머지는 전부 mytoken을 위해 만든 파일이니까
올라가지 않은 파일을 한꺼번에 올리는 add . 을 사용한다.
❯ git add .
/hardhat-test master +5
❯ git commit -m "mytoken phase 1 - basic state (contract, uint256, function, mappting, address)"
[master ee850c8] mytoken phase 1 - basic state (contract, uint256, function, mappting, address)
5 files changed, 149 insertions(+), 9 deletions(-)
create mode 100644 contracts/MyToken.sol
create mode 100644 ignition/modules/MyToken.ts
create mode 100644 test/MyToken.ts
log를 확인해보면 잘 추가된 것을 볼 수 있다.

원격으로 바라보고 있는 github 주소 확인
❯ git remote -v
지금까지 만든 commit 올리기
❯ git push origin master
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
contract MyToken {
string public name;
string public symbol;
uint8 public decimals;
//토큰의 총 발행 개수
uint256 public totalSupply;
//누가 얼마나 가지고 있는지
mapping(address => uint256) public balanceOf;
// (key => value)
constructor(string memory _name, string memory _symbol, uint8 _decimals) {
name = _name;
symbol = _symbol;
decimals = _decimals;
_mint(1*10**uint256(decimals), msg.sender); // 1MT
//uint256이 기본 (32바이트) <- decimals는 uint8타입 (변경필요)
}
//블록체인에서는 토큰을 발행할 때 minting, mint라는 단어를 사용함.
function _mint(uint256 amount, address owner) internal {
totalSupply += amount;
balanceOf[owner] += amount;
// 가진 사람이 없으면 증발되니까..
}
}
import hre from "hardhat";
import { expect } from "chai";
import { MyToken } from "../typechain-types";
import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers";
// hardhat에서 컴파일 할 때 필요한 타입 정의 파일을 여기에 보관함
describe("mytoken deploy", () => {
let myTokenC: MyToken;
let signers: HardhatEthersSigner[];
// before > describe, let myTokenC > myTokenC 사용ok
before("should deploy", async () => {
signers = await hre.ethers.getSigners();
myTokenC = await hre.ethers.deployContract("MyToken", [
"MyToken",
"MT",
18,
]);
});
it("should return name", async () => {
expect(await myTokenC.name()).equal("MyToken");
});
it("should return symbol", async () => {
expect(await myTokenC.symbol()).equal("MT");
});
it("should return decimals", async () => {
expect(await myTokenC.decimals()).equal(18);
});
it("should retrun 1MT totalSupply", async () => {
expect(await myTokenC.totalSupply()).equal(1n * 10n ** 18n);
});
// 1MT = 1*(10^18) = 1n*10n**18n = BigInt(1*10**18)
it("should retrun 1MT balance for signer 0", async () => {
expect(await myTokenC.balanceOf(signers[0].address)).equal(1n * 10n ** 18n);
});
});
잘 나왔다
❯ npx hardhat test
mytoken deploy
✔ should return name (56ms)
✔ should return symbol (54ms)
✔ should return decimals
✔ should retrun 1MT totalSupply
✔ should retrun 1MT balance for signer 0
5 passing (2s)
/hardhat-test master !2
❯ git add .
/hardhat-test master +2
❯ git commit -m "mint function"
[master 6ca3c69] mint function
2 files changed, 16 insertions(+), 9 deletions(-)