Skip to content

Instantly share code, notes, and snippets.

View Violet-Bora-Lee's full-sized avatar
💜
I code, build and act.

Bora Lee Violet-Bora-Lee

💜
I code, build and act.
View GitHub Profile
@Violet-Bora-Lee
Violet-Bora-Lee / DebugContracts.tsx
Created October 7, 2024 18:35
Speed Run Ethereum, #2: Token Vendor, Debug Contracts page
"use client";
import { useCallback, useEffect, useMemo, useState } from "react";
import { BarsArrowUpIcon } from "@heroicons/react/20/solid";
import { ContractUI } from "~~/app/debug/_components/contract";
import { ContractName } from "~~/utils/scaffold-eth/contract";
import { getAllContracts } from "~~/utils/scaffold-eth/contractsData";
const selectedContractStorageKey = "scaffoldEth2.selectedContract";
const contractsData = getAllContracts();

이더리움 기초

![[Pasted image 20240323012814.png]]

솔리디티에서 데이터를 저장할 수 있는 공간은 총 6개이다. 솔리디티로 코딩하면서 자주 언급되는 개념은 총 stack, memory, storage, calldata 이므로 이 넷에 대해 알아보자.

Stack

EVM은 기존 프로세서와 컴퓨터에서 볼 수 있는 레지스터 기반 아키텍처가 아닌 스택 기반 아키텍처이다.

EVM의 스택엔 16진수 32바이트 워드(word)를 단위로 자료가 저장된다.

c#을 사용한 리팩토링 기법

기법1

기법2

@Violet-Bora-Lee
Violet-Bora-Lee / erc20.sol
Created March 30, 2024 18:30
erc-20 토큰 발행
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("DUG Coin", "DUG") {
_mint(msg.sender, 100 * 10 ** ERC20.decimals());
}
@Violet-Bora-Lee
Violet-Bora-Lee / curl.bash
Created March 26, 2024 12:09
bitfinity test token add
curl https://testnet.bitfinity.network \
-X POST -H 'content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"67","method":"ic_mintNativeToken","params":["0x629A54Cb82f9A300a67bB77477D747a1F19815Cf", "0x100"]}'
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract MoodDiary {
string mood;
function setMood(string memory _mood) public {
mood = _mood;
}
@Violet-Bora-Lee
Violet-Bora-Lee / wl_mapping.sol
Created October 4, 2023 02:21
솔리디티 매핑 연습
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract Whitelist {
// 화이트 리스트에 등록된 사람을 관리하는 용도의 map작성
// mapping 변수 선언
// 화이트 리스트에 특정 주소를 등록시키는 함수 선언
}
@Violet-Bora-Lee
Violet-Bora-Lee / event_example.sol
Created October 3, 2023 14:10
솔리디티 이벤트 예시
pragma solidity ^0.8.0;
contract SimpleToken {
mapping(address => uint256) public balances;
// 토큰 전송 이벤트 정의
event Transfer(address indexed _from, address indexed _to, uint256 _amount);
constructor(uint256 initialSupply) {
balances[msg.sender] = initialSupply;
@Violet-Bora-Lee
Violet-Bora-Lee / state_variable_example.sol
Last active October 3, 2023 14:06
솔리디티 상태변수 예시
pragma solidity ^0.8.0;
contract SimpleToken {
// state 변수로 각 주소의 잔액을 저장
mapping(address => uint256) public balances;
// 초기 잔액 설정
constructor(uint256 initialSupply) {
balances[msg.sender] = initialSupply;
}
@Violet-Bora-Lee
Violet-Bora-Lee / event.sol
Last active October 3, 2023 18:58
솔리디티 event 기본 문법
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
// 이벤트
// 블록체인에 로그를 남길 때 사용하는 문법(객체)이다.
// 프론트엔드 등에서 특정 컨트랙트에 대한 로그를 파싱하여 응용하려 할 때 유용하다.
// 블록체인 상태변수보다 낮은 비용으로 정보를 저장할 수 있다.
contract Events {
// sender 주소와 메시지에 해당하는 문자열을 기록할 용도의 이벤트 선언