브라우니에는 프로젝트를 테스트할 때 사용할 수 있는 사용자 정의 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 ..
브라우니는 단위 테스트를 위해 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..