가상자산법/레벨 V · 개발자와 발행자/5.3 홍보와 법적 책임/수업 5
스마트 컨트랙트 감사와 그것이 제공하는 이점
코드 감사가 실제로 무엇을 포함하는지, 왜 ‘감사를 받았다’는 사실만으로는 보장이 되지 않는지, 누가 그 보고서를 신뢰할 수 있는지, 그리고 감사에 대한 주장들이 프로젝트에 어떻게 책임을 초래하는지.
교육 목적이며 법률, 세무 또는 투자 자문이 아닙니다. 가상자산 관련 법은 국가와 주(州)마다 다르며 자주 바뀝니다. 행동하기 전에 거주지의 현행 규정을 자격을 갖춘 변호사나 세무사에게 확인하세요.
가장 가벼운 길
법이 허용하는 범위에서 가장 저렴하고, 세금이 가장 적고, 가장 간단하며, 가장 사적인 방법을 우선순위대로 정리했습니다. 각 단계마다 근거가 되는 규정과 합법성을 유지하는 조건을 밝힙니다.
- 검증된 소스 코드를 블록 익스플로러에 게시하고 검토된 커밋 해시를 공개하십시오. 이는 무료이며 감사 주장이 검증 가능하게 만듭니다. 다만 해당 주장은 배포되어 업그레이드되지 않은 코드와 일치해야 합니다.
- '감사(audited)'라는 용어를 사용하는 경우 전체 보고서를 링크하고 아직 해결되지 않은 발견 사항을 나열하십시오. 중대한 미해결 발견 사항을 생략하는 것은 FTC Act §5, Rule 10b-5 또는 MiCA Article 7에 따라 기만적일 수 있습니다.
- 소규모 프로젝트는 검토 범위를 배포된 계약만으로 한정하고 공개 버그 바운티를 추가할 수 있습니다. 보고서의 면책 조항은 해당 보고서가 입증하는 내용을 제한하므로, 보고서가 포괄하는 내용만을 주장하십시오.
- Bily (Cal. 1992)에 따라 감사 회사는 고객에게만 일반 과실 수준의 의무를 지므로 구매자는 감사 회사로부터 구제를 받는 경우가 드뭅니다. 프로젝트는 자체적인 주장에 대해 책임을 집니다.
- 유타주 DAO는 법적 인정을 위해 공개 코드에 대한 보안 검토가 필요합니다. 해당 래퍼(legal wrapper)를 선택하는 경우에만 검토 비용을 예산에 편입하십시오.
준비물면책 조항이 포함된 공개된 스마트 컨트랙트 보안 검토 보고서, 예를 들어 Trail of Bits의 2023년 5월 FraxGov 보고서블록 탐색기에 있는 배포된 컨트랙트의 검증된 소스 코드와 주소빌리 대 아서 영 앤 코, 3 Cal. 4th 370 (1992), 감사인의 제3자에 대한 책임에 관하여
호기심
- 감사를 받은 계약서가 해킹당했을 경우, 구매자는 감사인을 고소할 수 있나요?
- 감사는 실제로 체인에서 실행되는 코드까지 포함하나요?
- 프로젝트가 감사를 받았다고만 말해도 법적 문제에 휘말릴 수 있을까요?
탐구
- 스마트 컨트랙트 감사는 프로젝트 측이 비용을 지불하여 외부 업체가 해당 프로젝트 코드의 특정 버전에 대해 수행하는 보안 검토입니다. 이 과정을 통해 심각도별로 문제점들이 목록으로 작성되며, 종종 프로젝트 측의 수정 방안도 함께 제시됩니다. 이 용어는 재무 감사에서 유래했지만 그 내용은 다릅니다. 감사의 범위, 기간, 방법은 검토를 수행하는 업체와 프로젝트 측 간의 사적인 계약에 따라 결정됩니다. 일반적으로 고객들은 공개된 보고서만을 확인할 수 있습니다. 일부 거래소에서도 감사라고 부르는 ‘예비금 증명 보고서’는 별개의 것입니다(레슨 4.1.6).
- 보고서 자체에도 그 한계가 명시되어 있습니다. 예를 들어, 트레일 오브 비츠가 2023년 5월에 작성한 FraxGov에 대한 리뷰에서는 해당 작업이 작업 요청서에 따라 진행되었으며, 평가는 ‘시간적 제약’이 있고 고객 측에서 제공하는 정보에 의존한다고 설명합니다. 또한 그 결과들은 ‘보안 문제의 포괄적인 목록으로 간주되어서는 안 된다’고 밝혔습니다. 아울러 자동화 도구에도 한계가 있다고 언급합니다. 수정 사항들은 특정 코드 버전을 식별하는 커밋 정보를 통해 추적되며, 예를 들어 ‘Resolved in commit ed4e708’와 같이 표시됩니다. 따라서 감사 보고서는 특정 시점의 특정 코드 상태만을 설명할 뿐, 이후에 배포되거나 업그레이드된 내용까지는 다루지 않습니다.
- 감사를 거친 코드라도 여전히 실패할 수 있습니다. 2023년 3월 13일, 율러 파이낸스의 대출 프로토콜은 약 1억 9,700만 달러의 손실을 입었습니다. 그 원인은 이전 문제를 해결하기 위해 추가된 ‘donateToReserves’라는 함수에 건강 상태 확인 기능이 누락되어 있었기 때문입니다. 이 함수 자체도 감사를 받았습니다. 율러 측은 평소보다 훨씬 많은 횟수에 걸쳐 감사를 받았으며, 버그 보상금으로 100만 달러를 마련해 두었다고 밝혔습니다. 몇 주간의 협상 끝에 2023년 4월 3일경 공격자는 약 2억 4,000만 달러 상당의 자금을 반환했습니다. 감사는 위험을 줄여주지만, 완전히 없애지는 못합니다.
- 코드 리뷰어를 고소하려는 구매자에게 재무 감사인에 관한 법률은 여러 가지 장애물이 될 수 있습니다. Bily v. Arthur Young & Co. (1992) 사건에서 캘리포니아 대법원은 감사인의 일반적인 과실에 따른 책임은 오직 그의 의뢰인에게만 있음을 판결했습니다. 다른 사람들이 과실에 기반한 허위 진술로 소송을 제기할 수 있는 경우는 감사인이 알고 있던 보고서의 특정 수혜자였을 때뿐이며, 고의적인 사기의 경우에는 그러한 결과가 합리적으로 예견될 때에만 가능합니다. 공개된 보고서를 읽는 일반 구매자는 리뷰어가 부주의했다는 증거 이상의 것이 필요할 것입니다.
- 이 프로젝트가 자체적으로 언급하는 감사에 대한 내용은 더 큰 위험을 수반합니다. 해결되지 않은 심각한 문제들을 제외하거나 다른 코드를 사용하면서 ‘감사를 받았다’거나 ‘안전하다’고 말하는 것은 오해의 소지가 있는 주장이 될 수 있습니다. 만약 해당 토큰이 증권에 해당한다면, SEC 규칙 10b-5나 12(a)(2) 조항에 따른 규제를 받을 수 있습니다(레슨 5.3.2). 그렇지 않은 경우에도 FTC법은 ‘부당하거나 기만적인 행위나 관행’을 금지하고 있으며(레슨 5.1.7), EU의 MiCA 법률 제7조에서는 마케팅이 ‘공정하고 명확하며 오해를 불러일으키지 않아야 한다’고 규정하고 있습니다. 2024년 1월 1일부터 시행된 유타주의 DAO법은 법적 인정을 받기 위해 DAO의 코드에 대한 증권성 검토를 의무화하고 있습니다.
- 감사 보고서는 배지가 아닌 계약서처럼 읽어야 합니다. 누가 비용을 지불했는지, 어떤 내용이 포함되었는지, 어떤 문제들이 해결되었는지, 어떤 문제들은 ‘인정’되어 그대로 남아 있는지, 그리고 관리자 권한을 통해 계약을 업그레이드하거나 일시 중단할 수 있는지를 확인해야 합니다(5.1.5절). 실제로 확인하는 방법은 보고서에서 커밋 식별자를 가져와 블록 탐색기에서 해당 계약을 열어, 검증된 소스 코드가 검토된 버전과 일치하며 이후에 다른 업그레이드로 대체되지 않았는지를 확인하는 것입니다. 만약 일치하지 않는다면, 그 보고서는 실제 사용 중인 코드에 대해 거의 알려주지 못합니다.
핵심 사실
- 스마트 컨트랙트 감사는 감사자와 프로젝트 간의 비공개 계약에 따라 특정 버전의 코드를 검토합니다.
- 트레일 오브 비츠의 2023년 5월 FraxGov 보고서에 따르면, 그 결과는 보안 문제들의 포괄적인 목록으로 간주되어서는 안 된다.
- 2023년 3월 13일, 율러 파이낸스는 감사를 거친 함수의 결함으로 약 1억 9,700만 달러의 손실을 입었으며, 해당 자금은 2023년 4월 3일까지 반환되었습니다.
- Bily v. Arthur Young & Co. (1992) 사건에서 캘리포니아 대법원은 감사인의 일반 과실 책임을 그들의 고객에게만 국한시켰습니다.
- 빌리에 따르면, 제3자는 감사인이 알고 있는 특정한 수혜자와 관련된 과실에 의한 허위진술이나 고의적인 사기의 경우에만 감사인을 상대로 소송을 제기할 수 있다.
- 2024년 1월 1일에 시행되는 유타주의 분산형 자율 조직법은 DAO의 공개된 코드가 보안 검토를 거쳤어야 한다고 규정하고 있습니다.
연습 아홉, 여섯, 셋, 하나
9모으기‘감사 완료’, ‘보안성 높음’과 같이 토큰이나 프로토콜 웹사이트에서 본 보안 관련 내용 9가지를 나열하십시오. 감사를 수행한 회사명이나 버그 바운티 정보도 포함할 수 있습니다(일부 목록은 더 짧을 수 있음).
6묶기보고서가 연결된 클레임, 보고서가 없는 클레임, 심각한 문제가 발견된 보고서, 이전 코드 버전에 관한 보고서, 버그 바운티 클레임, 모호한 보안 용어를 사용한 클레임으로 6개 그룹으로 분류합니다.
3추리기6개 그룹을 3개로 줄이세요: 배포된 코드를 통해 검증할 수 있다는 주장, 부분적으로만 검증할 수 있다는 주장, 그리고 전혀 검증할 수 없다는 주장.
1결정화감사 보고서는 오늘 블록체인에서 실행되는 코드에 대해 무엇을 알려주고 무엇을 알려주지 못하는지를 설명하는 문장입니다.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.
- Trail of Bits: FraxGov Security Assessment (May 2023)
- Euler Finance: War & Peace, behind the scenes of Euler's $240M exploit recovery
- Bily v. Arthur Young & Co., 3 Cal. 4th 370 (1992), CourtListener
- 15 U.S.C. 45 (FTC Act s.5), Cornell LII
- Utah H.B. 357 (2023), Decentralized Autonomous Organizations Amendments
- Regulation (EU) 2023/1114 (MiCA), EUR-Lex