브라우니는 단위 테스트를 위해 pytest 프레임워크를 사용합니다. Pytest는 성숙하고 기능이 풍부한 테스트 프레임워크입니다. 최소한의 코드로 작은 테스트를 작성할 수 있으며 대규모 프로젝트에 확장성이 뛰어납니다. 테스트를 실행하려면: $ brownie test 이 문서에서는 기본 pytest 사용 방법을 간단하게 설명하며, 특히 Brownie와 관련된 기능에 중점을 둡니다. pytest의 많은 구성 요소는 부분적으로 또는 전혀 설명되지 않았습니다. pytest에 대해 더 자세히 알고 싶다면 공식 pytest 문서를 참조해야합니다 (https://docs.pytest.org/en/latest/). 시작하기 테스트 파일 구조 Pytest는 프로젝트의 테스트 스위트에 포함해야하는 함수를 찾기 위해 tes..
데이터 유형 브라우니는 일반적으로 나타내는 값을 간소화하기 위해 사용자 정의 데이터 유형을 사용합니다. Wei Wei 클래스는 이더리움의 양을 나타내는 값으로 사용됩니다. 이 클래스는 문자열, 과학적 표기법 및 16진 문자열을 wei로 표현된 정수로 변환할 수 있는 int 서브 클래스입니다. >>> Wei("1 ether") 1000000000000000000 >>> Wei("12.49 gwei") 12490000000 >>> Wei("0.029 shannon") 29000000 >>> Wei(8.38e32) 838000000000000000000000000000000 다른 값들도 비교, 덧셈, 뺄셈을 수행하기 전에 Wei**로 변환됩니다: >>> Wei(1e18) == "1 ether" True >>>..
TransactionReceipt 객체는 트랜잭션에 관한 정보와 디버깅을 돕는 다양한 메서드를 제공합니다. >>> tx = Token[0].transfer(accounts[1], 1e18, {'from': accounts[0]}) Transaction sent: 0xa7616a96ef571f1791586f570017b37f4db9decb1a5f7888299a035653e8b44b Token.transfer confirmed - block: 2 gas used: 51019 (33.78%) >>> tx 트랜잭션에 대한 사람이 읽기 쉬운 정보를 보려면 TransactionReceipt.info 메서드를 호출하세요. >>> tx.info() Transaction was Mined -----------------..
블록 정보에 액세스하기 chain으로 사용 가능한 Chain 객체는 리스트와 같은 구문을 사용하여 블록 정보에 액세스할 수 있습니다: >>> chain >>> chain[12965000] AttributeDict({ 'baseFeePerGas': 1000000000, 'difficulty': 7742494561645080, 'extraData': HexBytes('0x68747470733a2f2f7777772e6b7279707465782e6f7267'), 'gasLimit': 30029122, 'gasUsed': 30025257, 'hash': HexBytes('0x9b83c12c69edb74f6c8dd5d052765c1adf940e320bd1291696e6fa07829eee71'), 'logsBloom..
동적 수수료 거래 EIP-1559를 구현하는 네트워크에 상호 작용하는 경우, 거래를 보낼 때 더 나은 수수료 모델을 사용할 수 있습니다. gas_price를 지정하는 대신 priority_fee와 선택적인 max_fee를 지정합니다. priority_fee는 maxPriorityFeePerGas를 결정하며, 이것은 채굴자에게 팁을 줍니다. 권장 우선 수수료는 chain.priority_fee에서 읽을 수 있습니다. max_fee는 모든 트랜잭션에서 동일하게 소비되는 기본 수수료와 우선순위 수수료를 포함하는 maxFeePerGas를 결정합니다. 현재 기본 수수료는 chain.base_fee에서 읽을 수 있습니다. 브라우니는 우선순위 수수료만 지정하는 경우 base_fee * 2 + priority_fee를..
계약 배포하기 Brownie가 로드될 때마다 프로젝트를 자동으로 컴파일하고 배포 가능한 각 계약에 대한 ContractContainer 객체를 만듭니다. 이 객체는 개별 배포에 액세스하기 위한 컨테이너로 사용됩니다. 또한 새 계약을 배포하는 데에도 사용됩니다. >>> Token [] >>> type(Token) >>> Token.deploy ContractContainer.deploy 함수는 새로운 스마트 컨트랙트를 배포하는 데 사용됩니다. >>> Token.deploy 계약 생성자 전달인자 및 거래 매개변수 사전과 함께 호출해야 하며, 이는 from 필드를 포함하는 것이 필요하며 해당 필드는 계약을 배포할 Account를 지정합니다. >>> Token.deploy("Test Token", "TST", ..
Accounts 컨테이너( accounts 또는 a로 사용 가능)를 사용하면 모든 로컬 계정에 액세스할 수 있습니다. >>> accounts ['0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301', '0xf414d65808f5f59aE156E51B97f98094888e7d92', '0x055f1c2c9334a4e57ACF2C4d7ff95d03CA7d6741', '0x1B63B4495934bC1D6Cb827f7a9835d316cdBB332', '0x303E8684b9992CdFA6e9C423e92989056b6FC04b', '0x5eC14fDc4b52dE45837B7EC8016944f75fF42209', '0x22162F0D8Fd490Bde6Ffc9425472941a1a59348..
브라우니 GUI 브라우니에는 테스트 커버리지 데이터를 볼 수 있고 컴파일 된 계약 바이트 코드를 분석할 수 있는 GUI가 포함되어 있습니다. 이 섹션의 일부는 EVM 바이트 코드에 대한 이해 수준을 전제로 합니다. 이 주제에 대해 더 알고 싶다면 OpenZeppelin의 Alejandro Santander가 훌륭한 가이드를 작성했습니다. - Solidity 컨트랙트 해체. ✅ GUI를 로드하려고 할 때 오류가 발생하면 시스템에 Tk가 설치되어 있지 않은 것입니다. 더 자세한 정보는 Tk 설치 지침을 확인하십시오. 시작하기 GUI를 열려면 프로젝트 폴더 내에서 다음 명령을 실행하십시오. $ brownie gui 또는 콘솔에서: >>> Gui() 로드된 후에는 먼저 볼 계약을 선택해야합니다. 이를 위해 오른..