# ethereum
Event - (23/05/25)
지난번에 만든 카운터 기능을 약간 고치고 싶어서 컨트랙트의 카운터 증감 함수에 리턴값을 추가해봤는데요콘솔로는 이 리턴값을 확인할 수 없었습니다트랜잭션 객체의 데이터 속성에 리턴값이 들어있을 줄 알았지만... 알고보니 send()로 트랜잭션을 전송했을 경우, getTra

Testnet - (23/05/25)
체인 아이디(Chain ID)는 블록체인 네트워크를 식별하는 번호입니다 그리고 메인넷과 테스트넷도 서로 다른 체인 아이디를 가지고 있습니다예를 들면 이더리움의 메인넷의 체인 아이디는 1이고, 테스트넷(Goerli)의 체인 아이디는 5입니다(현재 가동중인 이더리움 테스트

Truffle (23/05/24)
Truffle 은 이더리움 디앱 개발을 위해 사용되는 프레임워크입니다스마트 컨트랙트 컴파일부터 배포와 테스트까지 가능한 올인원 툴로써,디앱 개발에 많은 편의성을 제공합니다(특히 calll과 send를 날리는 과정이 크게 단축됩니다)간편한 툴인 만큼 솔리디티와 블록체인

Metamask & React (23/05/23)
월렛 개요 블록체인 네트워크와 소통할 때, 일반적으로 브라우저에서 다이렉트로 노드에 요청을 전달하지는 않습니다 (콜메서드를 사용하는 경우가 아니라면) 트랜잭션을 발동시키기 위해 서명을 생성할 때 사용자에게 직접 개인키를 입력받도록 하는 것이 보안적으로도, 사용성
스마트 컨트랙트 - 2 (23/05/22)
컨트랙트 배포 & 실행 스마트 컨트랙트의 배포와 실행은 다음과 같은 과정을 따릅니다 솔리디티 코드 작성 솔리디티 컴파일 메세지의 데이터 속성에 컴파일된 내용(바이트 코드)을 보내기 트랜잭션 발동 1. 솔리디티 코드 작성 우선 솔리디티 코드에 대한 이해를 돕기
스마트 컨트랙트 ~ 1 (23/05/19)
스마트 컨트랙트 스마트 컨트랙트란? > 스마트 컨트랙트는 계약의 내용과 실행 조건을 코드를 통해 사전에 설정한 후 해당 조건이 충족되면 블록체인 네트워크에서 자동적으로 계약을 실행하는 기능을 의미합니다 이 때 계약의 조건과 실행 결과는 블록체인에 영구적으로 기록

Execution Client와 Consensus Client의 연결 과정
Execution Client와 Consensus Client는 모두 병렬로 동시에 작동한다. 두 클라이언트 간의 통신이 필요하다. 이 통신을 통해 Consensus Client는 Execution Client에 지침을 제공하고, Execution Client는 비콘
이더리움 PoS에서 트랜잭션이 만들어지는 과정
이더리움 PoS에서 트랜잭션이 만들어지는 과정 1. 트랜잭션 생성 및 브로드캐스팅 > 사용자는 개인 키로 트랜잭션을 생성하고 서명하여 이더리움 JSON-RPC API를 사용해 노드에 요청을 한다. > 사용자는 자신이 만든 트랜잭션을 블록에 포함시키기 위해 Vali
이더리움 PoS에서 트랜잭션이 만들어지는 과정
사용자는 개인 키로 트랜잭션을 생성하고 서명하여 이더리움 JSON-RPC API를 사용해 노드에 요청을 한다.사용자는 자신이 만든 트랜잭션을 블록에 포함시키기 위해 Validator에게 팁으로 줄 가스 양을 함께 정의한다.팁은 검증자에게 돌아가는 반면, 기본 수수료는

[블록체인 학회] OpenZeppelin ERC-20 코드 분석
OpenZeppelin의 ERC-20 코드를 분석해보며 Token과 ERC에 대한 이해를 높여보자.

[SCH] Smart Contract Hacking 16편 - DeFi : Dex
유니스왑V2 컨트랙트를 참고해서 빈칸들을 채워보자.문제에서 Router 주소를 제공해줘서 인터페이스를 적용해서 가져온 것 외에 특이한 점은 없다.우선 주석이 나눠져있는지 알았는데 하나였었고, ERC20을 상속했기 때문에 \_transfer와 \_approve를 바로 사

[DeFi] UniswapV2 컨트랙트 톺아보기
🦄 Uniswap V2 빈칸들을 채우기 위해서 DEX의 교과서인 유니스왑 V2 컨트랙트를 참고해보자. Figma를 사용해 간단한 다이어그램을 만들어봤다. 유니스왑V2 컨트랙트는 크게 두 가지로 나뉜다. 코어(Core)는 Pair 부분을 담당하고, 주변

[SCH] Smart Contract Hacking 15편 - Access Control 1~4
아래 컨트랙트의 이더를 탈취하면 된다.그냥 \_sendETH를 호출하면 되니 패스.토큰을 민팅해보자.onlyOwner modifier를 잘 살펴보면 require문이 없다..! 따라서 modifier는 의미가 없는 수준.통과!이더를 탈취해보자.그냥 withdraw를 호

[SCH] Smart Contract Hacking 14편 - ReEntrancy 4
onERC1155Received hook을 이용해서 스테이킹 했던 NFT를 언스테이킹할 때 unstake() 함수를 계속 호출하면 같은 id의 NFT를 다 가져올 수 있지 않을까?총 20개의 nft를 반복해서 unstake 하도록 했다. 이후 모든 nft를 가져오면 a

[SCH] Smart Contract Hacking 13편 - ReEntrancy 3
디파이 컨트랙트에 있는 USDC를 탈취해보자.그런데 현재 checks-effects-interactions 패턴이 아닌 함수는 deposit과 repay 뿐이다. 정작 토큰을 받아서 재호출을 한다고 해도 공격 컨트랙트에서 토큰만 계속 빠져나갈 뿐, 탈취할 수 없다.그렇

[SCH] Smart Contract Hacking 12편 - ReEntrancy 2
Task1 NFT를 독식해보자. 공격 컨트랙트 짜기 safeMint()의 checkOnERC721Received -> IERC721Receiver(to).onERC721Received() 콜백을 이용해서 ReEntrancy 공격을 하면 될 것 같다.

[SCH] Smart Contract Hacking 11편 - ReEntrancy 1
가장 기본적인 ReEntrancy 공격이 가능한 컨트랙트다.함수 호출 한 번에 예치, 인출 모두 하도록 만들고 이후 이더를 받아오면 계속 인출 함수를 호출하도록 만들었다.attacker에게 5이더를 주고 1이더를 예치시켜서 기존에 예치된 10이더를 빼오도록 만들었다.결

[SCH] Smart Contract Hacking 10편 - Tx.Origin Phishing
attack 컨트랙트를 만들어서 donate() 함수 또는 fallback 함수가 transfer()를 호출할 수 있게 하면 될 것 같다.donate() 함수로 유도해서 0.1이더를 컨트랙트에 받아오면 fallback() 함수가 호출돼서 모든 이더리움을 가져오도록 했다