- ๐ ์์ฒํฅ๋ํ๊ต ์ปดํจํฐ์ํํธ์จ์ด๊ณตํ๊ณผ 3ํ๋ , ํํ ํฌ ๋ฉ(Fintech Lab) ํ๋ถ์ฐ๊ตฌ์์ ๋๋ค.
- ๐ ์คํ ์ด๋ธ์ฝ์ธ ๋ฐํ์ฌ์ ๋๊ฒฐ ๊ถํ์ ์ฃผ์ ๋ก ๋ ผ๋ฌธ์ ์ค๋นํ๊ณ ์์ต๋๋ค. ๋๊ฒฐ ์ ์ฐจ๋ฅผ ์ฝ๋๋ก ์ด๋๊น์ง ๊ฐ์ ํ ์ ์๋์ง, ๋ฌด๊ณ ํ ์ด์ฉ์๋ฅผ ์ํ ์ ์ ๊ธฐ๊ฐ์ ์ด๋ป๊ฒ ๋๋ ๊ฒ ๋ง๋์ง๋ฅผ ๋ณด๊ณ ์์ต๋๋ค.
- ๐ ๊ด์ฌ ๋ถ์ผ: ์ค๋งํธ ์ปจํธ๋ํธ ๋ณด์, ์์ง์ ์ฆ๋ช , ์คํ ์ด๋ธ์ฝ์ธยทRWA ํ ํฐํ
- ๐งช ๊ณต๋ถํ๋ ๋ฐฉ์: ๊ท์น์ ์ปจํธ๋ํธ๋ก ์ฎ๊ฒจ ๋ณด๊ณ , ์ฒ์ ๋ง๋ ๋ฒ์ ์ด ์ด๋์ ๊นจ์ง๋์ง๋ฅผ ํ ์คํธ๋ก ๋จ๊น๋๋ค.
| ํ๋ก์ ํธ | ๋ด์ฉ | ์ฌ์ฉ ๊ธฐ์ |
|---|---|---|
| ๐ฑ KRW Stablecoin Lab (KRWS) |
์ํ ์คํ ์ด๋ธ์ฝ์ธ์ ๋ฐํ์ฌ ์ ์ฅ์์ ํ ๋จ๊ณ์ฉ ๋ง๋ค์ด ๊ฐ๋ ๋ ํฌ์ ๋๋ค. 1๋จ๊ณ๋ก ๋ฐํ๊ณผ ์ํ์ ๋ง๋ค์๋๋ฐ, ์ฒ์ ๋ฒ์ ์ ๋ฐํ์ฌ๊ฐ burn(from)์ผ๋ก ๊ณ ๊ฐ ๋์ ์์ด ๋จ์ ์๊ณ ๋ฅผ ์ง์ธ ์ ์์ด์ ๋ณด์ ์๊ฐ ์ง์ ํ์ฐ๋ redeem์ผ๋ก ๋ฐ๊ฟจ์ต๋๋ค(ํ ์คํธ 9๊ฐ). ์ํ์ ์ํ๊ฐ ์์ด๋ ๋ฐํ์ฌ๊ฐ ์ผ๋ง๋ ์ง ์ฐ์ ์ ์๋ ๋ฌธ์ ๋ 2๋จ๊ณ ์ค๋น๊ธ ํ์ธ์์ ๋ง์ ๊ณํ์ ๋๋ค. | Solidity, Foundry, OpenZeppelin |
| โ๏ธ KRES |
KRWS๋ฅผ ๋์ค์ ์ฌ๋ฆด ์ฒด์ธ์ Cosmos SDK๋ก ์ง์ ๋ง๋ค๊ณ ์์ต๋๋ค. ์ง๊ธ์ Ignite๋ก ๋ผ๋๋ฅผ ๋ง๋ค๊ณ , ์ฃผ์๊ฐ kres1๋ก ์์ํ๋ ๋ ธ๋๋ฅผ ๋ด ์ปดํจํฐ์์ ๋์ด 1๋จ๊ณ๊น์ง์ ๋๋ค. ์์ง ๋ด ๋ชจ๋๊ณผ ํ ์คํธ๋ ์๊ณ , 2๋จ๊ณ์์ ์คํ ์ด๋ธ์ฝ์ธ ๋ฐํ์ฌ ๋ฑ๋ก ๋ชจ๋์ ๋ฃ์ ์๊ฐ์ ๋๋ค. | Go, Cosmos SDK, Ignite CLI |
| ๐ฆ Tokenized Stock Backoffice Lab |
SEC ๋ฉ์์ ๋ง๋ ๊ธฐ์ค์ผ ๋ฐฐ๋น ์ปจํธ๋ํธ๋ฅผ ๋ฐํ์ฌ๊ฐ ์ค์ ๋ก ์ฐ๋ ค๋ฉด ๋ญ๊ฐ ํ์ํ์ง Spring Boot ์๋ฒ๋ก ๋ง๋ค์ด ๋ดค์ต๋๋ค. ํฌ์์ ๋ช ๋ถ๋ DB์, ์๊ณ ๋ ์ฒด์ธ์ ๋๊ณ , ๋ช ๋ถ์ ์๋ ์ง๊ฐ์ผ๋ก ํ๋ฌ๊ฐ ํ ํฐ์ Transfer ์ด๋ฒคํธ๋ก ์ฐพ์๋ด๊ณ , ํธ๋์ญ์ ์ ๋ณด๋ด๊ธฐ ์ ์ eth_call๋ก ๋๋ ค์ revert ์ด์ ๋ฅผ ์๋ต์ ์ฃ์ต๋๋ค(JUnit 8๊ฐ, anvil). ๋ฐํ์ฌ ํค๊ฐ ์๋ฒ ์ค์ ์ ์๋ ๊ฑด ์์ง ๊ทธ๋๋ก์ ๋๋ค. | Java, Spring Boot, web3j, Solidity, Foundry |
| ๐ข K-Gold Trade Escrow Lab |
K-Gold ๋ฌด์ญ ์์คํฌ๋ก๋ฅผ ๋ง๋ค์ด ๋ดค์ต๋๋ค. ์์ ์ฌ ๊ฒฐ์ฌ์ 3๋ช ์ค 2๋ช ์ด ์๋ช ํ๋ฉด ์ ์ฐ๋๋๋ฐ, ์ฒ์ ๋ฒ์ ์ ์๋ช ๋ค์ ์๋ฅ๋ฅผ ๋ฐ๊ฟ๋ ์ ์ฐ๋๊ณ , ๊ธฐํ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ง ํ๋ฉด ์์ ์ฌ๊ฐ ํ๋ถ๋ฐ์๊ณ , ๊ธ๊ฐ์ด ๋ด๋ฆฌ๋ฉด ์์ถ์ฌ๊ฐ ๋ ๋ฐ์์ต๋๋ค. ์ธ ๊ณณ์ ๊ณ ์น๊ณ ํ ์คํธ๋ก ๋จ๊ฒผ์ต๋๋ค(ํ ์คํธ 20๊ฐ). ๊ธ๊ฐ์ด ๋ด๋ฆฐ ๋ค ์์ ์ฌ๊ฐ ์ถ๊ฐ๋ก ์ ๋ฃ์ผ๋ฉด ๋ฉ์ถ๋ ๋ฌธ์ ๋ ์์ง ๋จ์ ์์ต๋๋ค. | Solidity, Foundry, EIP-712 |
| ๐ง Stablecoin Freeze ZK Lab |
๋๊ฒฐ ์ ์์ด ์คํ ์ ์ ๊ณต๊ฐ๋๋ ๋ฌธ์ ๋ ์ปค๋ฐ-๋ฆฌ๋น๋ก, ๋๊ฒฐ ์ฌ์ ๊ฐ ๋จ์ง ์๋ ๋ฌธ์ ๋ "์น์ธ๋ ์ฌ์ ๋ชฉ๋ก์ ์๋ค"๋ Groth16 ์ฆ๋ช ์ผ๋ก ๋ง์ ๋ดค์ต๋๋ค. ์ฆ๋ช ์ ๋์ ์ฃผ์๋ฅผ ๋ฌถ์ง ์์ผ๋ฉด ๋ค๋ฅธ ์ฃผ์๋ก ๋ณต์ฌํด ์ธ ์ ์๋ค๋ ๊ฒ๋ ํ ์คํธ๋ก ํ์ธํ์ต๋๋ค(ํ ์คํธ 15๊ฐ). ์ฌ์ ๋ชฉ๋ก์ด ๋ฐ๋๋ฉด ์งํ ์ค์ธ ์ฆ๋ช ์ด ๋ฌดํจ๊ฐ ๋๋ ๋ฌธ์ ๋ ์์ง ๋จ์ ์์ต๋๋ค. | Solidity, Foundry, Circom, snarkjs |
| ๐ช K-Gold Reserve Breaker Lab |
ํํ ํฌ ์์ด๋์ด ๊ณต๋ชจ์ ์์ ์ค๊ณํ ๊ธ ๋ด๋ณด ์ ์ฐ ์์คํ (K-Gold)์ ๋ฐํ ํ๋, ๋ณด์ ๊ณ ์ฆ๋ช ์ค๋ผํด(๋ ธ๋ 5๊ฐ ์ค 3๊ฐ ์๋ช ), ์ํท๋ธ๋ ์ด์ปค๋ฅผ ๋ง๋ค์ด ๋ดค์ต๋๋ค. ์ฒ์ ์ธ์ด ์ค๊ณ๊ฐ ๊นจ์ง๋ ๊ณณ ๋ค ๊ตฐ๋ฐ๋ฅผ ํ ์คํธ๋ก ๋จ๊ฒผ์ต๋๋ค(๋ถ๋ณ์ ํผ์ฆ ํฌํจ 25๊ฐ). | Solidity, Foundry, EIP-712 |
| ๐ SEC TSV Tokenized Stock Lab |
SEC๊ฐ ํ ํฐํ ์ฃผ์์ 'ํ์ ๋ฉด์ '๋ฅผ ์น์ธํ๋ค๋ ๊ธฐ์ฌ๋ฅผ ๋ณด๊ณ , ๊ธฐ์ฌ์ ๋์จ ์กฐ๊ฑด 4๊ฐ(๊ฑฐ๋๋ ํ๋, ๊ฑฐ๋์ ์ง ์ฐ๊ณ, ๋ฐํ์ฌ ๊ฑฐ๋ถ๊ถ, ๊ถ๋ฆฌ ์น๊ณ)๋ฅผ ์ปจํธ๋ํธ๋ก ์ฎ๊ฒจ ๋ดค์ต๋๋ค. ๋ฌธ์ฅ์ ๊ทธ๋๋ก ์ฎ๊ธฐ๋ฉด ์ด๋์ ์ด๊ธ๋๋์ง ํ ์คํธ 13๊ฐ๋ก ํ์ธํ์ต๋๋ค. | Solidity, Foundry |
| ํ๋ก์ ํธ | ๋ด์ฉ | ์ฌ์ฉ ๊ธฐ์ |
|---|---|---|
| ๐
K-Gold Bar Receipt NFT |
30ํ์ฐจ NFT ๊ณผ์ . ์์
VibeMint ๊ตฌ์กฐ๋ฅผ ๊ธ๊ดด ๋ณด๊ด์ฆ(๊ธ๊ดด 1๊ฐ = NFT 1์ฅ)์ผ๋ก ์ฎ๊ฒผ๋๋, ๊ฐ์ ๊ธ๊ดด๋ก ๋ณด๊ด์ฆ์ด ๋ ์ฅ ๋์ค๊ณ , KYC๋ฅผ ๋ฐํ ๋๋ง ๋ด์ ์๋ฌด์๊ฒ๋ ๋๊ธธ ์ ์๊ณ , ์ธ์ถํ ๋ณด๊ด์ฆ์ด ๊ณ์ ํ๋ ธ์ต๋๋ค. ์ธ ๊ณณ์ ๊ณ ์น๊ณ , ์์
์์ฑ๋ณธ์์ _totalMinted++ ํ ์ค๋ง ์ฎ๊ธฐ๋ฉด ์ง๊ฐ๋น 3๊ฐ ์ ํ์ด ๋ซ๋ฆฌ๋ ๊ฒ๋ ํ
์คํธ๋ก ํ์ธํ์ต๋๋ค(ํ
์คํธ 21๊ฐ). ๋ฉํ๋ฐ์ดํฐ๋ ์ปจํธ๋ํธ๊ฐ ์ง์ ๋ง๋ค๊ณ , Sepolia์ ๋ฐฐํฌํ์ต๋๋ค. |
Solidity, Foundry, OpenZeppelin, React, wagmi |
| ๐ก๏ธ Smart Contract Audit Lab |
22ํ์ฐจ ๋ณด์ ๊ณผ์ . ๊ต์ฌ์ ๋์จ ์ทจ์ฝ์ 5์ข (์ ๊ทผ์ ์ด ๋๋ฝ, delegatecall ์ด๊ธฐํ, tx.origin ํผ์ฑ, ์ฌ์ง์ , cross-function ์ฌ์ง์ )์ ๊ณต๊ฒฉ ์ฝ๋์ ๊ณ ์น ์ฝ๋๋ก ์ฌํํ์ต๋๋ค(ํ ์คํธ 10๊ฐ). Slither๋ฅผ ์ง์ ๋๋ ค์ ๋ฌด์์ ์ก๊ณ ๋ฌด์์ ๋์น๋์ง๋ ๋น๊ตํ์ต๋๋ค. | Solidity, Foundry, Slither |
| ๐ Multichain Wallet Lab | 21ํ์ฐจ Wallet ๊ณผ์ . ๋๋ชจ๋๊ณผ EVM ์ฃผ์๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์ง์ ๊ณ์ฐํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฐ๊ณผ์ ๋์กฐํ๊ณ , EIP-1559 ํธ๋์ญ์ ์ ๋จ๊ณ๋ณ๋ก ์กฐ๋ฆฝํด ์๋ช ํด ๋ดค์ต๋๋ค(๊ธฐ๋ณธ์ dry-run). EIP-712 digest๋ ์ง์ ์กฐ๋ฆฝํด ๋น๊ตํ์ต๋๋ค. ๋ฌดํ approve๋ฅผ ์ฐพ์ ํ์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ๋ก ๋ถ์๊ณ , SuiยทSolana๋ ๊ฐ์ ๋๋ชจ๋์ผ๋ก ์ฃผ์๋ฅผ ํ์ํด ์กฐํํ๋ ๋ฐ๊น์ง ํ์ต๋๋ค. | Node.js, ethers.js, @mysten/sui, @solana/web3.js |
| ๐ชช Indy DID Credential Demo | 20ํ์ฐจ DID ๊ณผ์ . ๋ก์ปฌ Indy ๋คํธ์ํฌ(von-network)๋ฅผ Docker๋ก ๋์ฐ๊ณ DID ๋ฑ๋ก, VC ๋ฐ๊ธ, VP ๊ฒ์ฆ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ ๋ดค์ต๋๋ค. ํ์ํ ์์ฑ๋ง ๊ณต๊ฐํ๋ ์ฆ๋ช ์ AnonCreds(CL ์๋ช ) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ์ ์ผ์ต๋๋ค. | Python, Hyperledger Indy, Docker |
๐ English (click to expand)
I'm a third-year Computer Software Engineering student at Soonchunhyang University and an undergraduate research student in the Fintech Lab.
I'm preparing a paper on stablecoin issuers' power to freeze accounts: how far the freeze procedure can be enforced in code, and how to set a grace period that protects innocent holders.
The repositories below are study projects. I turn a rule into a contract, then write tests that show where my first version breaks.
- Interests: smart contract security, zero-knowledge proofs (learning Circom/Groth16), stablecoins and RWA tokenization
- Main languages: Java, Kotlin
- Mostly used in blockchain labs: Solidity, Foundry
- Also used in labs: Circom, snarkjs (Groth16), Slither, Node.js (ethers.js), Python, Hyperledger Indy, Docker
โ๏ธ Labs on topics I picked
| Project | What I did | Tech |
|---|---|---|
| ๐ฑ KRW Stablecoin Lab (KRWS) |
A won stablecoin built step by step from the issuer's side. Stage 1 is issue and redeem. My first version let the issuer wipe any holder's balance with burn(from), so I replaced it with redeem, where holders burn their own tokens (9 tests). Still open: the issuer can mint with no won in the bank, which stage 2 (reserve check) will block. | Solidity, Foundry, OpenZeppelin |
| โ๏ธ KRES |
My own Cosmos SDK chain where KRWS will move later. So far it is stage 1: a chain scaffolded with Ignite, running locally with kres1 addresses. No custom module or tests yet. Stage 2 adds a module for registering stablecoin issuers. | Go, Cosmos SDK, Ignite CLI |
| ๐ฆ Tokenized Stock Backoffice Lab |
What an issuer needs on top of the record-date dividend contract from my SEC lab, built as a Spring Boot server. Investor list in the DB, balances on chain, tokens that drifted to unlisted wallets found through Transfer events, and every transaction dry-run with eth_call so the revert reason reaches the API response (8 JUnit tests, anvil). Still open: the issuer key lives in the server config. | Java, Spring Boot, web3j, Solidity, Foundry |
| ๐ข K-Gold Trade Escrow Lab |
A trade escrow for K-Gold where 2 of the importer's 3 approvers sign to settle. My first version settled even after the document was swapped, refunded the importer if the approvers just waited out the deadline, and underpaid the exporter when gold fell. All three are fixed and kept as tests (20 tests). Still open: settlement stalls if the importer never tops up after a price drop. | Solidity, Foundry, EIP-712 |
| ๐ง Stablecoin Freeze ZK Lab |
Two gaps in a freeze multisig: pending proposals are public, and freeze reasons are not recorded. I tried commit-reveal for the first and, for the second, a Groth16 proof that the reason is on an approved list. Tests also show that a proof not bound to the target address can be copied to freeze someone else (15 tests). Still open: updating the list invalidates pending proofs. | Solidity, Foundry, Circom, snarkjs |
| ๐ช K-Gold Reserve Breaker Lab |
Mint cap, a 3-of-5 proof-of-reserve oracle and a circuit breaker for K-Gold, a gold-backed settlement design from a fintech idea contest. The four places where my first design broke are kept as tests (25 tests, including invariant fuzzing). | Solidity, Foundry, EIP-712 |
| ๐ SEC TSV Tokenized Stock Lab |
Four conditions from a news report on the SEC's "innovation exemption" for tokenized stocks (volume cap, halt linkage, issuer veto, rights pass-through), turned into contracts to see where a literal translation goes wrong (13 tests). | Solidity, Foundry |
๐ Blockchain Meetup Day labs (2026, sessions 20 to 22 and 30)
| Project | What I did | Tech |
|---|---|---|
| ๐
K-Gold Bar Receipt NFT |
Session 30, NFT track. I moved the course VibeMint structure to a gold bar receipt (one bar = one NFT). It broke in three places: one bar could get two receipts, KYC was checked only at mint, and redeemed receipts could still be sold. All three are fixed, and tests show that moving just _totalMinted++ in the course solution lets one contract pass the 3-per-wallet cap (21 tests). Metadata is built on chain, and the contract is deployed on Sepolia. |
Solidity, Foundry, OpenZeppelin, React, wagmi |
| ๐ก๏ธ Smart Contract Audit Lab |
Session 22, security track. Five textbook vulnerabilities (missing access control, delegatecall initialization, tx.origin phishing, reentrancy, cross-function reentrancy) reproduced as exploit/fix pairs (10 tests). I also ran Slither on each to compare what it catches and misses. | Solidity, Foundry, Slither |
| ๐ Multichain Wallet Lab | Session 21, wallet track. Derived the mnemonic and EVM address without a library and checked them against library output, built and signed an EIP-1559 transaction step by step (dry-run by default), and assembled an EIP-712 digest by hand. I then added a script that finds and revokes unlimited approvals. Sui and Solana go only as far as deriving and looking up addresses from the same mnemonic. | Node.js, ethers.js, @mysten/sui, @solana/web3.js |
| ๐ชช Indy DID Credential Demo | Session 20, DID track. Ran a local Indy network (von-network) in Docker and walked through DID registration, VC issuance and VP verification. Selective disclosure comes from the AnonCreds (CL signature) library. | Python, Hyperledger Indy, Docker |