본문 바로가기

Hack129

Solidity Visibility, 그리고 View와 Pure 속성 Soliditiy에서는 함수 및 State Variable을 다른 Smart Contract에서 액세스 할 수 있도록 Visibility(가시성)를 설정할 수 있습니다. Visibility 종류 구분 설명 public 모든 Smart Contract와 Account에서 접근 가능함 private 기능이 정의된 Smart Contract에서만 접근 가능함 internal 내부 기능을 상속받은 Smart Contract에서만 접근 가능함 external 외부 Smart Contract 및 Account에서만 접근 가능함 Sample Code (Solidity) // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; contract Base { // Private.. 2023. 7. 8.
Rollup (Optimistic Rollups, ZK Rollups) Rollup 2023년에는 정말 많은 가상 자산이 존재하고 있는데요. 이 중 제일 많이 사용되고 영향력이 높은 가상 자산은 Ethereum일 것 같습니다. 그런 Ethereum의 Mainnet인 EVM 상에는 정말 다양한 프로젝트들이 올라가 있습니다. 그런데 Ethereum이 초당 처리할 수 있는 Transaction인 TPS(Transaction Per Sencond)는 고작 15 정도에 불과합니다. 실제 사용량에 비해서는 터무니없이 낮은 수준이라고 볼 수 있습니다. (Ethereum이 2.0으로 업그레이드 되면서 TPS가 증가하였다고 하지만, 그럼에도 확장성은 필요하다고 생각합니다.) Ethereum 생태계에서는 이러한 확장성 문제를 해결하기 위해 Plasma, Validium, Rollup, Sha.. 2023. 7. 1.
Contract Application Binary Interface (ABI) Contract Application Binary Interface (ABI)란 Solidity 환경에서의 ABI는 블록체인 외부 환경과 Smart Contract 또는 Smart Contract 간에 상호 작용하는 표준 방법을 의미 합니다. 이러한 상호 작용을 위해서는 ABI 포맷으로 Encoding 하거나, Encoding된 ABI를 Decoding 할 수 있어야 합니다. 실제 Encoding된 ABI Data를 통하여 이러한 방식을 알아보도록 하겠습니다. ※ 이번 포스팅에서는 비표준 방식의 ABI Encoding은 다루지 않을 계획입니다! ABI Encode ABI Encoding된 데이터는 아래와 같은 포맷을 가지게 됨 정적 타입 - 일반 타입, [M]와 같이 배열 크기가 고정된 경우 4Byte .. 2023. 7. 1.
브릿지와 크로스 체인, 멀티 체인, 옴니 체인을 알아보자 각각의 가상 자산들은 각각 고유한 기능과 장단점 등을 가지고 있습니다. 정말 다양한 가상 자산들이 생겨나면서 블록체인 간의 자산을 이동하기 위한 수요가 늘어나기 시작했습니다. 그리고 블록체인 간의 자산 이동 수요를 해결하기 위해 블록체인 생태계 간의 연결을 수행하여 이러한 수요를 해결한 것이 바로 브릿지(Bridge)입니다. 브릿지(Bridge) 앞서 언급했던 것처럼 Mainnet을 보유한 모든 가상 자산은 독립된 환경의 블록체인에서 각각의 규칙과 합의 메커니즘 등으로 작동합니다. 즉, 기본은 블록체인 생태계 간의 통신은 불가능하고 가상 자산이 자유롭게 이동하는 것도 불가능합니다. 브릿지는 현실 세계의 다리와 같이 블록체인 생태계 간의 연결 역할을 수행하면서 정보 및 가상 자산 등이 교환될 수 있도록 만.. 2023. 6. 24.
ERC-165 (Ethereum Request for Comments 165) ERC-165 (Ethereum Request for Comments 165) ERC-165는 Smart Contract에서 Interface 지원을 위해 사용하는 Ethereum 표준 규격으로, Smart Contract가 특정 Interface를 구현하고 있는 지 확인하는 기능을 지원합니다. ERC-165: Standard Interface Detection eips.ethereum.org ERC-165를 준수하는 Smart Contract는 다른 Contract나 Client가 해당 Contract가 특정 Interface를 지원하고 있는 지 확인할 수 있도록 supportsInterface 함수가 구현되어있습니다. pragma solidity ^0.4.20; interface ERC165 { //.. 2023. 6. 21.
AWS S3 Bucket 설정 시 주의해야 할 점 AWS에서 제공하는 서비스인 S3(Simple Storage Service)는 객체(Object)를 저장하는 AWS의 파일 서버 입니다. AWS S3와 관련된 기본 개념 객체(Object) S3에 저장된 파일 (파일의 메타 데이터 포함) 버킷(Bucket) 객체를 담고 있는 컨테이너 Bucket를 생성해야만 객체를 저장할 수 있음 AWS S3 특징 최대 5TB 크기의 객체를 저장할 수 있음 Bucket 및 객체에 대한 접근 제어를 쉽게 설정 가능함 Bucket에서 수행할 수 있는 행위에 대한 권한 관리를 쉽게 설정 가능함 이중화를 쉽게 설정 가능함 AWS S3는 위에서 설명한 것과 같이 파일을 쉽게 저장할 수 있도록 AWS 에서 제공하는 파일 서버이면서 접근 제어 및 행위에 대한 권한 관리를 쉽게 수행할.. 2023. 5. 27.
Flash Loan Attack in Crypto Currency Flash Loan Flash Loan Attack은 탈중앙 금융 서비스인 DeFi를 포함한 Smart Contract에서 발생할 수 있는 공격 입니다. Flash Loan Attakc에 대해서 이해하기 위해서는 먼저 Flash Loan이 무엇인지를 알아야 합니다. Flash Loan이란 "동일한 Transaction 내에서 대출을 상환할 수 있는 경우 담보 없이 대출을 받을 수 있는 무담보 대출" 입니다. 어떻게 담보 없이 대출을 받을 수 있을까요? Flash Loan은 동일한 Transaction 내에 대출이 상환되지 않을 경우 대출을 실행하지 않도록 하는 조건이 반드시 들어있습니다. 즉, 대출 상환이 불가능한 거래에 대해서는 대출을 실행하지 않기 때문에 채무 불이행이 발생할 수 없어 무담보 대출이 .. 2023. 5. 20.
[CVE-2023-0842] xml2js Prototype Pollution Node JS Prototype Pollution은 Prototype의 특성을 이용하여 다른 객체들의 값을 오염시키는 공격 기법입니다. 객체의 프로토타입은 객체.__proto__를 통하여 참조할 수 있으며, 객체의 프로타입이 변경되면 해당 객체와 같은 프로토타입을 가진 모든 객체들에 변경사항이 적용되게 됩니다. 또한, 객체의 프로토타입은 Object.prototype과 동일하기 때문에 프로토타입의 변조를 통하여 일반적인 객체들의 속성을 제어할 수 있게됩니다. 아래의 예제를 통해 obj 객체의 프로토타입에 polluted 속성을 1로 지정한 결과, obj와 같은 프로토타입을 갖고 있는 obj2에도 polluted 속성이 1로 설정된 것을 확인할 수 있습니다. const obj = {}; console.lo.. 2023. 5. 13.
Transaction Order Dependence Attack in Smart Contract Transaction Order Dependence Attack도 Smart Contract에서 발생할 수 있는 공격인데요. Smart Contract는 블록체인 기술에서 중요한 개념 중 하나로, 계약 체결과 실행을 자동으로 수행할 수 있는 프로그램이며, 블록체인 기술을 활용하여 제 3자의 인증 기관 없이 개인 간 계약이 이루어질 수 있도록 하는 기술입니다. 그런데 Smart Contract는 사람이 직접 코드를 개발해야 하기 떄문에 코드 상의 문제 또는 버그가 존재할 경우 예상치 못한 결과가 발생할 수 있습니다. 그 중 하나인 Reentrancy Attack은 아래의 포스팅을 통해 확인하실 수 있습니다! Reentrancy Attack in Smart Contract Smart Contract는 블록체.. 2023. 5. 5.