본문 바로가기

전체 글273

[Solidity] 7. 접근 제어 패턴과 `modifier` ✅ 7. 접근 제어 패턴과 modifierSolidity에서 보안과 권한 제어의 핵심 기능오직 owner만 자금을 인출하게 만들기특정 조건을 만족해야만 실행되게 만들기공통 로직(예: require) 중복 방지📌 1. 접근 제어란?스마트컨트랙트의 민감한 기능을 특정 조건을 만족하는 사용자만 실행할 수 있도록 제한하는 구조입니다.✅ 대표적인 실무 패턴패턴 이름설명onlyOwner소유자만 호출 가능onlyAdmin관리자 전용 기능whenNotPaused정지 상태일 때 호출 차단validAmount조건을 만족해야 실행 가능📌 2. modifier란?함수 실행 전후에 조건 검사 로직을 삽입하는 재사용 가능한 코드 블록입니다.✅ 문법modifier onlyOwner() { require(msg.sender.. 2025. 4. 18.
[Tistory] 코드블럭 언어 추가 코드블럭이 지원하지 않는 언어를 코드블럭에 작성하려면? 먼저 highlight.js class 확인 표에서 해당 언어 Language 확인 & Alias 확인 이후 글 쓰거나 수정 시 html 모드로 변경 한 후 아래 코드처럼 작성. 예시// SPDX-License-Identifier: MITpragma solidity ^0.8.20;contract Example { string public name; // storage uint public totalSupply = 1000; // 상태 변수 address public immutable owner; // 배포 후 고정 constructor() { o.. 2025. 4. 17.
[Solidity] 6.매핑(Mapping)과 배열(Array) ✅ 6. 매핑(Mapping)과 배열(Array)Solidity의 데이터 저장 구조의 핵심📌 1. 매핑 (Mapping)✅ 정의Solidity의 핵심 자료구조.Key → Value 쌍으로 데이터를 저장하며, 해시테이블처럼 작동합니다.mapping(address => uint) public balances;balances[0x123...] = 100; 처럼 사용기본값 자동 초기화 (해당 키가 없으면 0 반환)✅ 특징특징설명검색 빠름해시 기반으로 즉시 접근전체 순회 불가키 목록을 직접 저장하지 않으면 전체 조회 불가기본값 존재존재하지 않는 키에 접근 시에도 오류 발생하지 않음 (기본값 반환)중첩 가능mapping(address => mapping(uint => bool)) 가능✅ 실무 예시mapping(a.. 2025. 4. 17.
[Solidity] 5. 구조체(Struct)와 열거형(Enum) ✅ 5. 구조체(Struct)와 열거형(Enum)Solidity에서 복잡한 데이터 구조를 표현할 수 있게 해줌.이 둘은 단순히 문법적으로만 중요한 게 아니라, 실무에서사용자 정보주문 상태NFT 메타데이터접근 권한 설정등의 도메인 모델링에 필수적입니다.📌 1. 구조체(Struct)✅ 정의여러 변수들을 하나로 묶은 사용자 정의 타입struct User { string name; uint age; address wallet;}Java의 class나 Python의 dict처럼 필드를 그룹화컨트랙트 내에서 재사용, 배열/매핑으로 조합 가능✅ 선언 위치contract 내부 또는 외부 가능(단, 외부에 선언 시 import 필요)contract A { struct Item { ... }}✅ 사.. 2025. 4. 17.
[Solidity] 4. 제어 구조 & 연산자 (조건문, 반복문, 오류 처리) ✅ 4. 제어 구조 & 연산자 (조건문, 반복문, 오류 처리)스마트컨트랙트의 흐름 제어와 조건 검사, 오류 처리에 필수적인 기능들인 제어 구조(Control Flow) & 연산자비즈니스 로직 검증, 보안 취약점 방지, 오류 발생 최소화에 매우 중요📌 1. 조건문: if, else, require, revert, assert✅ if, elseif (balance[msg.sender] >= 1 ether) { // 처리 로직} else { revert("Insufficient balance");}일반적인 조건 분기Solidity는 elseif 대신 else if 사용📌 2. 입력 검증 및 오류 처리구문사용 용도특징require(condition, "error")입력값, 권한 등 조건 검사조건이.. 2025. 4. 17.
[Solidity] 3. 함수(Function) 정의와 실행 흐름 ✅ 3. 함수(Function) 정의와 실행 흐름스마트컨트랙트는 대부분 함수를 통해 외부와 상호작용📌 1. 함수 기본 구조function functionName(parameterList) accessModifier functionType returns (returnType) { // 함수 내용}예시:function setValue(uint _x) public { value = _x;}📌 2. 함수 접근 제어자 (Visibility)키워드설명호출 가능 위치public외부 + 내부✅ Remix 버튼 생성external외부 전용✅ Remix 버튼 생성 (내부 호출 불가)internal내부 + 상속 컨트랙트❌ 외부 호출 불가private현재 컨트랙트만❌ 완전 캡슐화✅ 실무 팁external은 가스.. 2025. 4. 17.