호스팅된 노드(예: Infura)를 통해 원격 네트워크에 연결할 때, Accounts 컨테이너는 비어 있습니다. 거래를 수행하기 전에 Brownie에 로컬 계정을 추가해야 합니다. 로컬이라는 용어를 사용할 때, 해당 계정이 노드에서 직접 사용 가능한 것이 아니라 시스템 내부에 로컬로 존재한다는 것을 의미합니다. 로컬 계정은 keystores라고 불리는 암호화된 JSON 파일에 저장됩니다. Keystore 파일에 대해 자세히 알고 싶다면, Julien Maffre의 “What is an Ethereum keystore file?”를 읽어볼 수 있습니다. 로컬로 사용 가능한 계정은 명령줄을 통해 관리할 수 있습니다: $ brownie accounts 새 계정 생성하기 명령 줄을 사용하여 새 계정을 생성하려면..
브라우니는 개발 및 라이브 환경에서 모두 사용할 수 있습니다. 개발 환경은 테스트 및 디버깅에 사용되는 로컬 임시 네트워크입니다. 브라우니는 개발 환경에서 Ganache를 사용합니다. 라이브 환경은 비로컬적이고 지속적인 블록체인을 의미합니다. 이 용어는 Ethereum 메인넷과 테스트넷 모두를 가리킵니다. 네트워크 설정 네트워크 설정은 커맨드 라인을 통해 처리됩니다: $ brownie networks 기존 네트워크 보기 네트워크는 "개발" (로컬, 일시적인 환경)와 "라이브" (비로컬, 지속적인 환경)로 크게 분류됩니다. 라이브 네트워크는 또한 체인 (이더리움, ETC 등)별로 분류됩니다. 기존 네트워크 목록을 보려면 brownie networks list를 입력하세요: $ brownie networks..
프로젝트가 영구 체인 (예 : Ethereum 메인넷 또는 테스트넷)으로 배포 준비가 되면, Brownie를 사용하여 배포를 처리할 수 있습니다. 블록체인은 영구적이고 불변적이라는 것을 기억하는 것이 중요합니다. 프로젝트가 배포되면 돌이킬 수 없습니다. 이러한 이유로, 메인넷에 배포할 때 다음과 같은 프로세스를 강력히 권장합니다. 배포 스크립트 생성 로컬 개발 환경에서 스크립트 테스트 공개 테스트 네트워크 중 하나에서 스크립트를 다시 테스트하고 의도한대로 실행되었는지 확인합니다. 스크립트를 사용하여 프로젝트를 메인넷에 배포합니다. 배포가 완료되면 ethPM 패키지를 생성하여 프로젝트와 상호 작용하려는 다른 개발자들이 프로세스를 단순화 할 수 있습니다. 배포 스크립트 작성하기 배포 스크립트는 다른 Brow..
브라우니는 MythX 분석 API와 통합되어 프로젝트의 보안 검사를 자동화할 수 있습니다. MythX는 정적 분석, 동적 분석 및 상징적 실행을 사용하여 프로젝트의 취약점을 검사하는 스마트 계약 보안 서비스입니다. 다음과 같은 세 가지 모드에서 실행됩니다. Quick 모드: 나쁜 코딩 패턴과 낮은 복잡도 버그를 찾는 데 효과적입니다 (무료 사용자에게 제공됨). Standard 모드: 더 오래 걸리지만 복잡한 보안 문제를 해결할 수 있습니다 (Dev 사용자에게 제공됨). Deep 모드: 더 오래 걸리지만 깊이있고 숨겨진 취약점을 찾을 수 있습니다 (Pro 사용자에게 제공됨). MythX는 무료 및 유료 서비스를 모두 제공합니다. 작동 방식에 대해 자세히 알아보려면 Bernhard Mueller의 MythX..
상태 기반 테스트는 복잡한 시스템을 테스트하는 데 사용되는 속성 기반 테스팅의 고급 방법입니다. 상태 기반 테스트에서는 다양한 방식으로 결합할 수 있는 여러 가지 동작을 정의하고, 가설은 실패를 초래하는 이러한 동작의 순서를 찾으려고 시도합니다. 이는 가능한 상태가 많은 복잡한 계약이나 계약 간 상호 작용을 테스트할 때 유용합니다. Brownie는 hypothesis 프레임워크를 활용하여 상태 저장 테스트를 용합니다. 이 섹션의 많은 내용은 공식 hypothesis.works 웹사이트를 기반으로 합니다. 상태 기반 테스팅에 대해 더 자세히 알아보려면 다음 글을 읽어보시기를 추천합니다: David R. MacIver의 Rule Based Stateful Testing Nicholas Chammas의 Sol..
브라우니는 속성 기반 테스트를 수행하기 위해 hypothesis 프레임워크를 사용합니다. 이 섹션의 많은 내용은 공식 hypothesis.works 웹사이트를 기반으로 합니다. 속성 기반 테스트에 대해 더 알아보려면 이 소개 글 시리즈를 읽거나 공식 Hypothesis 문서를 참조할 수 있습니다. 속성 기반 테스트란? 속성 기반 테스트는 코드 내에서 엣지 케이스를 찾고 잘못된 가정을 발견하는 강력한 도구입니다. 속성 기반 테스트의 핵심 개념은 단일 시나리오에 대한 테스트를 작성하는 대신, 여러 시나리오를 설명하는 테스트를 작성하고 컴퓨터가 각 경우의 가능성을 탐색하도록 하는 것입니다. 이를 수작업으로 일일이 작성하는 대신 컴퓨터가 자동으로 수행합니다. 기본적인 프로세스는 다음과 같습니다: 스마트 계약 내..
브라우니에는 프로젝트를 테스트할 때 사용할 수 있는 사용자 정의 fixtures 및 markers가 포함되어 있습니다. 세션 fixtures 이러한 fixtures는 테스트 중 자주 사용되는 Brownie 객체에 빠르게 액세스할 수 있도록 제공됩니다. 이러한 객체에 익숙하지 않은 경우 목차에서 "핵심 기능"으로 나열된 문서를 읽으시기 바랍니다. accounts 활성 프로젝트에 대한 Accounts 컨테이너를 생성하여 로컬 계정과 상호 작용하는 데 사용됩니다. def test_account_balance(accounts): assert accounts[0].balance() == "100 ether" a accounts 픽스처의 약식 형태. def test_account_balance(a): assert ..