Gas optimization in Solidity, Ethereum
I’m sorry but my English is terrible. I hope you understand that generously.Recently, I was developing a toy project named Blind Market. It’s a simple P2P trading application using smart contract. I was making a contract using Solidity, and the trade stage proceeded in the order of pending, shipping, and done. The problem was appeared in done phase. The problem was that when I tried to close the transaction by paying the price raised by the seller in msg.value, the following error occurred.Pe...
Uvicorn & Gunicorn
Uvicorn and GunicornUvicorn and Gunicorn are important concepts when developing applications in Python. However, there are many concepts to be aware of in order to fully understand Uvicorn and Gunicorn. The following is a brief summary of the necessary concepts, and the details will be dealt with separately later.Necessary ConceptsStarletteStarlette is a Web application server that can run asynchronously. Starlette runs on top of Uvicorn.FastAPIFastAPI provides many features on top of Starlet...
P2WPKH
P2WPKHP2WPKH란 비트코인 내에서 가장 일반적인 스크립트 형식으로 비트코인 프로토콜에 대한 지불 거래 유형이다. 주소는 1로 시작하는데, 세그윗을 지원하는 새로운 주소 3 또는 bc1로 시작하는 주소보다 훨씬 비싸다. https://mirror.xyz/0xA1d9f681B25C14C1eE7B87f1CF102E73cA3ad4d9/egjhNVklgy_LgZmcTXXAOTBa6ePBqO3Ja9ZSoDIad-8 즉, 비트코인 주소가 1로 시작하면 P2PKH 주소를 사용하고 있는 것이다. 공개키의 간단한 해시이며, 이 해시를 주소로 사용하는 것이다. 이것은 원래 비트코인 주소 형식이었으며 오늘까지도 충실히 작동한다. 레거시 주소는 세그윗과 호환되지 않지만, 여전히 문제없이 P2PKH 주소에서 세그윗 주소로 BTC를 보낼 수 있다. 그러나 레거시 주소 트랜잭션이 더 크기 때문에 P2PKH 주소에서 전송하는 평균 속도는 세그윗 주소에서 전송할 때보다 더 높은 요금이 발생할 수 있다....
Smart Contract Developer, Web3 Backend Developer
Gas optimization in Solidity, Ethereum
I’m sorry but my English is terrible. I hope you understand that generously.Recently, I was developing a toy project named Blind Market. It’s a simple P2P trading application using smart contract. I was making a contract using Solidity, and the trade stage proceeded in the order of pending, shipping, and done. The problem was appeared in done phase. The problem was that when I tried to close the transaction by paying the price raised by the seller in msg.value, the following error occurred.Pe...
Uvicorn & Gunicorn
Uvicorn and GunicornUvicorn and Gunicorn are important concepts when developing applications in Python. However, there are many concepts to be aware of in order to fully understand Uvicorn and Gunicorn. The following is a brief summary of the necessary concepts, and the details will be dealt with separately later.Necessary ConceptsStarletteStarlette is a Web application server that can run asynchronously. Starlette runs on top of Uvicorn.FastAPIFastAPI provides many features on top of Starlet...
P2WPKH
P2WPKHP2WPKH란 비트코인 내에서 가장 일반적인 스크립트 형식으로 비트코인 프로토콜에 대한 지불 거래 유형이다. 주소는 1로 시작하는데, 세그윗을 지원하는 새로운 주소 3 또는 bc1로 시작하는 주소보다 훨씬 비싸다. https://mirror.xyz/0xA1d9f681B25C14C1eE7B87f1CF102E73cA3ad4d9/egjhNVklgy_LgZmcTXXAOTBa6ePBqO3Ja9ZSoDIad-8 즉, 비트코인 주소가 1로 시작하면 P2PKH 주소를 사용하고 있는 것이다. 공개키의 간단한 해시이며, 이 해시를 주소로 사용하는 것이다. 이것은 원래 비트코인 주소 형식이었으며 오늘까지도 충실히 작동한다. 레거시 주소는 세그윗과 호환되지 않지만, 여전히 문제없이 P2PKH 주소에서 세그윗 주소로 BTC를 보낼 수 있다. 그러나 레거시 주소 트랜잭션이 더 크기 때문에 P2PKH 주소에서 전송하는 평균 속도는 세그윗 주소에서 전송할 때보다 더 높은 요금이 발생할 수 있다....
Smart Contract Developer, Web3 Backend Developer

Subscribe to Primrose

Subscribe to Primrose
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
Audit이란 스마트 컨트랙트 코드를 점검하여, 보안 취약점을 찾아내고 안정성을 분석하는 것이다.
업그레이드가 가능한 스마트 컨트랙트를 작성하더라도, 이미 한 번 공격당해 금전적인 손해가 발생한 이후에는 돌이킬 수가 없다.
요구 사항 이해 : 감사자는 스마트 계약이 실행하려는 전체 기능과 비즈니스 논리를 이해해야 합니다. 여기에는 프로젝트 문서 검토 및 개발 팀과의 의사 소통이 포함됩니다.
수동 코드 검토 : 감사자는 코드를 수동으로 검토하여 취약성, 코드 품질 문제 또는 로직의 불일치를 식별합니다. 이 프로세스는 시간이 많이 소요될 수 있지만 잠재적인 위험에 대한 포괄적인 이해를 제공합니다.
자동 분석 : 알려진 취약점에 대해 스마트 계약 코드를 자동으로 스캔하도록 설계된 다양한 도구가 있습니다. 자동화된 분석은 프로세스 속도를 높일 수 있지만 미묘한 차이나 새로운 문제를 놓칠 수 있으므로 수동 검토를 대체할 수는 없습니다.
테스트 : 감사자는 일반적으로 정적 및 동적 테스트를 모두 수행합니다. 정적 테스트는 코드를 실행하지 않고 분석하는 반면 동적 테스트는 코드를 실행하고 동작을 관찰하는 것입니다. 여기에는 스마트 계약에서 발생할 수 있는 다양한 시나리오를 시뮬레이션하기 위한 사용자 지정 테스트 사례 작성이 포함됩니다.
보안 분석 : 보안은 스마트 계약에서 가장 중요하며 감사자는 재진입, 오버플로 등과 같은 일반적인 공격에 대한 잠재적 취약성을 포함하여 계약이 최상의 보안 관행을 준수하는지 평가합니다.
감사를 하게 되면 우선 컨트랙트가 실행하려는 전체 기능과 비즈니스 로직에 대한 명세가 필요하다.
예를 들어 백서나 백서 발행 이후 개정된 내용들에 대해 정보를 수집하는 과정 등이 있다.
이러한 작업을 통해 명세를 구체화하고, 스마트 컨트랙트가 명세에 맞게 구현되었는지 확인하기 위한 준비를 한다.
명세가 확인되었다면, 스마트 컨트랙트에 대한 테스트 코드를 작성한다.
모든 예외 상황과 라이브러리들이 올바르게 작동하는지 검증하며, 필요로 하는 조건들을 달리하여도 예외 상황을 일으키지 않는지에 대해 검사하는 작업이다.
이는 각각의 로직들이 명세에 따라 구현되었는지 확인하는 과정이 된다.
또한 명세를 통해 유추할 수 있는 사용자들의 악의적인 패턴들을 분석하는 시나리오 테스팅까지 해당 과정에서 수행된다.
테스트 코드가 작성되었고 모든 코드의 예외 상황을 점검했을 때, 정적 분석을 수행한다.
코드에는 취약점을 가지는 구현 패턴이 존재할 수 있으며, 테스트 코드로 검출되지 않는다는 특성을 가지고 있다.
TheDAO의 해킹 사례에서 공격자가 스마트 컨트랙트인 경우에 새로운 로직이 중간에 끼어들 수 있다는 점은 테스트 코드로 검출되기 어렵다.
이러한 구현 패턴은 보안 감사 도구를 통해서 검증하는 것이 훨씬 정확하다.
대부분 알려진 스마트 컨트랙트 코드의 취약점들은 Smart Contract Weakness Classification(이하 SWC)라는 이름으로 잘 정리되어 있다. 이 중에서 분석되어야 하는 SWC 항목에 대해 검증하게 된다.

https://velog.io/@jhin/%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8-%EC%98%A4%EB%94%A7audit
Audit이란 스마트 컨트랙트 코드를 점검하여, 보안 취약점을 찾아내고 안정성을 분석하는 것이다.
업그레이드가 가능한 스마트 컨트랙트를 작성하더라도, 이미 한 번 공격당해 금전적인 손해가 발생한 이후에는 돌이킬 수가 없다.
요구 사항 이해 : 감사자는 스마트 계약이 실행하려는 전체 기능과 비즈니스 논리를 이해해야 합니다. 여기에는 프로젝트 문서 검토 및 개발 팀과의 의사 소통이 포함됩니다.
수동 코드 검토 : 감사자는 코드를 수동으로 검토하여 취약성, 코드 품질 문제 또는 로직의 불일치를 식별합니다. 이 프로세스는 시간이 많이 소요될 수 있지만 잠재적인 위험에 대한 포괄적인 이해를 제공합니다.
자동 분석 : 알려진 취약점에 대해 스마트 계약 코드를 자동으로 스캔하도록 설계된 다양한 도구가 있습니다. 자동화된 분석은 프로세스 속도를 높일 수 있지만 미묘한 차이나 새로운 문제를 놓칠 수 있으므로 수동 검토를 대체할 수는 없습니다.
테스트 : 감사자는 일반적으로 정적 및 동적 테스트를 모두 수행합니다. 정적 테스트는 코드를 실행하지 않고 분석하는 반면 동적 테스트는 코드를 실행하고 동작을 관찰하는 것입니다. 여기에는 스마트 계약에서 발생할 수 있는 다양한 시나리오를 시뮬레이션하기 위한 사용자 지정 테스트 사례 작성이 포함됩니다.
보안 분석 : 보안은 스마트 계약에서 가장 중요하며 감사자는 재진입, 오버플로 등과 같은 일반적인 공격에 대한 잠재적 취약성을 포함하여 계약이 최상의 보안 관행을 준수하는지 평가합니다.
감사를 하게 되면 우선 컨트랙트가 실행하려는 전체 기능과 비즈니스 로직에 대한 명세가 필요하다.
예를 들어 백서나 백서 발행 이후 개정된 내용들에 대해 정보를 수집하는 과정 등이 있다.
이러한 작업을 통해 명세를 구체화하고, 스마트 컨트랙트가 명세에 맞게 구현되었는지 확인하기 위한 준비를 한다.
명세가 확인되었다면, 스마트 컨트랙트에 대한 테스트 코드를 작성한다.
모든 예외 상황과 라이브러리들이 올바르게 작동하는지 검증하며, 필요로 하는 조건들을 달리하여도 예외 상황을 일으키지 않는지에 대해 검사하는 작업이다.
이는 각각의 로직들이 명세에 따라 구현되었는지 확인하는 과정이 된다.
또한 명세를 통해 유추할 수 있는 사용자들의 악의적인 패턴들을 분석하는 시나리오 테스팅까지 해당 과정에서 수행된다.
테스트 코드가 작성되었고 모든 코드의 예외 상황을 점검했을 때, 정적 분석을 수행한다.
코드에는 취약점을 가지는 구현 패턴이 존재할 수 있으며, 테스트 코드로 검출되지 않는다는 특성을 가지고 있다.
TheDAO의 해킹 사례에서 공격자가 스마트 컨트랙트인 경우에 새로운 로직이 중간에 끼어들 수 있다는 점은 테스트 코드로 검출되기 어렵다.
이러한 구현 패턴은 보안 감사 도구를 통해서 검증하는 것이 훨씬 정확하다.
대부분 알려진 스마트 컨트랙트 코드의 취약점들은 Smart Contract Weakness Classification(이하 SWC)라는 이름으로 잘 정리되어 있다. 이 중에서 분석되어야 하는 SWC 항목에 대해 검증하게 된다.

https://velog.io/@jhin/%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8-%EC%98%A4%EB%94%A7audit
No activity yet