Accounts
컨테이너( accounts
또는 a
로 사용 가능)를 사용하면 모든 로컬 계정에 액세스할 수 있습니다.
>>> accounts
['0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301', '0xf414d65808f5f59aE156E51B97f98094888e7d92', '0x055f1c2c9334a4e57ACF2C4d7ff95d03CA7d6741', '0x1B63B4495934bC1D6Cb827f7a9835d316cdBB332', '0x303E8684b9992CdFA6e9C423e92989056b6FC04b', '0x5eC14fDc4b52dE45837B7EC8016944f75fF42209', '0x22162F0D8Fd490Bde6Ffc9425472941a1a59348a', '0x1DA0dcC27950F6070c07F71d1dE881c3C67CEAab', '0xa4c7f832254eE658E650855f1b529b2d01C92359','0x275CAe3b8761CEdc5b265F3241d07d2fEc51C0d8']
>>> accounts[0]
<Account object '0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301'>
각각의 계정은 Accounts
객체로 표시됩니다. 이 객체는 잔액 조회 또는 ETH 전송과 같은 작업을 수행할 수 있습니다.
>>> accounts[0]
<Account object '0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301'>
>>> dir(accounts[0])
[address, balance, deploy, estimate_gas, nonce, transfer]
Account.balance
메서드는 계정의 잔액을 확인하는 데 사용됩니다. 반환된 값은 wei
단위로 표시됩니다.
>>> accounts[1].balance()
100000000000000000000
Account.transfer
메서드를 사용하면 계정 간 이더를 전송하거나 기타 간단한 트랜잭션을 수행할 수 있습니다. 아래 예제에서 보여지듯, 전송할 금액은 Wei
로 변환되는 문자열로 지정할 수 있습니다.
>>> accounts[0].transfer(accounts[1], "10 ether")
Transaction sent: 0x124ba3f9f9e5a8c5e7e559390bebf8dfca998ef32130ddd114b7858f255f6369
Transaction confirmed - block: 1 gas spent: 21000
<Transaction object '0x124ba3f9f9e5a8c5e7e559390bebf8dfca998ef32130ddd114b7858f255f6369'>
>>> accounts[1].balance()
110000000000000000000
계정 생성, 추가 및 잠금 해제
새로 추가된 계정은 자동으로 Accounts
컨테이너에 추가됩니다.
Accounts.add
메서드를 사용하여 새로운 계정을 무작위로 생성할 수 있습니다:
>>> accounts.add()
mnemonic: 'rice cement vehicle ladder end engine tiger gospel toy inspire steel teach'
<LocalAccount '0x7f1eCD32aF08635A3fB3128108F6Eb0956Efd532'>
특정 계정에 액세스하기 위해 선택적으로 개인 키를 지정할 수 있습니다:
>>> accounts.add('0xca751356c37a98109fd969d8e79b42d768587efc6ba35e878bc8c093ed95d8a9')
<LocalAccount '0xf6c0182eFD54830A87e4020E13B8E4C82e2f60f0'>
개발 환경에서 주소의 개인 키를 소유하지 않고 해당 주소에서 트랜잭션을 보낼 수 있습니다. 임의의 주소에서 Account
객체를 만들려면 Accounts.at
메서드를 사용하고 키워드 인수로 force=True
를 포함시키십시오:
>>> accounts.at('0x79B2f0CbED2a565C925A8b35f2B402710564F8a2', force=True)
<Account '0x79B2f0CbED2a565C925A8b35f2B402710564F8a2'>
계정 관리에 대한 자세한 정보는 계정 관리를 참조하십시오.
여러 거래 전송 방송
거래 전송 방송은 일반적으로 차단 작업입니다. 브라우니는 거래가 확인될 때까지 기다립니다. 차단하지 않고 거래를 방송하는 한 가지 방법은 required_confs = 0
로 설정하는 것입니다. 이렇게 하면 대기하지 않고 즉시 보류 중인 TransactionReceipt
이 반환되며 확인을 기다리지 않고 계속 진행됩니다. 또한 silent = True
로 설정하면 콘솔 출력이 억제됩니다.
>>> transactions = [
accounts[0].transfer(accounts[i], "1 ether", required_confs=0, silent=True)
for i in range(1, 4)
]
>>> [tx.status for tx in transactions]
[1, -1, -1]
이러한 거래는 처음에 대기 상태(status == -1
)이며 콘솔에서 노란색으로 표시됩니다.
거래 대체하기
TransactionReceipt.replace
메서드를 사용하여 아직 대기 중인 가격이 낮은 거래를 대체할 수 있습니다:
>>> tx = accounts[0].transfer(accounts[1], 100, required_confs=0, gas_price="1 gwei")
Transaction sent: 0xc1aab54599d7875fc1fe8d3e375abb0f490cbb80d5b7f48cedaa95fa726f29be
Gas price: 13.0 gwei Gas limit: 21000 Nonce: 3
<Transaction object '0xc1aab54599d7875fc1fe8d3e375abb0f490cbb80d5b7f48cedaa95fa726f29be'>
>>> tx.replace(1.1)
Transaction sent: 0x9a525e42b326c3cd57e889ad8c5b29c88108227a35f9763af33dccd522375212
Gas price: 14.3 gwei Gas limit: 21000 Nonce: 3
<Transaction '0x9a525e42b326c3cd57e889ad8c5b29c88108227a35f9763af33dccd522375212'>
모든 대기 중인 거래는 history
객체에서 사용 가능합니다. 하나의 거래가 확인되면 나머지 취소된 거래는 제거됩니다. 더 많은 정보는 거래 기록에 액세스하는 방법을 참조하십시오.
'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글
[브라우니 (Brownie)] 11. 트랜잭션 가스 가격 설정하기 (0) | 2023.06.16 |
---|---|
[브라우니 (Brownie)] 10. 컨트랙트로 작업하기 (0) | 2023.06.16 |
[브라우니 (Brownie)] 8. 브라우니 GUI (0) | 2023.06.16 |
[브라우니 (Brownie)] 7. 브라우니 패키지 관리자 (0) | 2023.06.16 |
[브라우니 (Brownie)] 6. 컨트랙트와 상호작용하기 (0) | 2023.06.16 |
Accounts
컨테이너( accounts
또는 a
로 사용 가능)를 사용하면 모든 로컬 계정에 액세스할 수 있습니다.
>>> accounts
['0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301', '0xf414d65808f5f59aE156E51B97f98094888e7d92', '0x055f1c2c9334a4e57ACF2C4d7ff95d03CA7d6741', '0x1B63B4495934bC1D6Cb827f7a9835d316cdBB332', '0x303E8684b9992CdFA6e9C423e92989056b6FC04b', '0x5eC14fDc4b52dE45837B7EC8016944f75fF42209', '0x22162F0D8Fd490Bde6Ffc9425472941a1a59348a', '0x1DA0dcC27950F6070c07F71d1dE881c3C67CEAab', '0xa4c7f832254eE658E650855f1b529b2d01C92359','0x275CAe3b8761CEdc5b265F3241d07d2fEc51C0d8']
>>> accounts[0]
<Account object '0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301'>
각각의 계정은 Accounts
객체로 표시됩니다. 이 객체는 잔액 조회 또는 ETH 전송과 같은 작업을 수행할 수 있습니다.
>>> accounts[0]
<Account object '0xC0BcE0346d4d93e30008A1FE83a2Cf8CfB9Ed301'>
>>> dir(accounts[0])
[address, balance, deploy, estimate_gas, nonce, transfer]
Account.balance
메서드는 계정의 잔액을 확인하는 데 사용됩니다. 반환된 값은 wei
단위로 표시됩니다.
>>> accounts[1].balance()
100000000000000000000
Account.transfer
메서드를 사용하면 계정 간 이더를 전송하거나 기타 간단한 트랜잭션을 수행할 수 있습니다. 아래 예제에서 보여지듯, 전송할 금액은 Wei
로 변환되는 문자열로 지정할 수 있습니다.
>>> accounts[0].transfer(accounts[1], "10 ether")
Transaction sent: 0x124ba3f9f9e5a8c5e7e559390bebf8dfca998ef32130ddd114b7858f255f6369
Transaction confirmed - block: 1 gas spent: 21000
<Transaction object '0x124ba3f9f9e5a8c5e7e559390bebf8dfca998ef32130ddd114b7858f255f6369'>
>>> accounts[1].balance()
110000000000000000000
계정 생성, 추가 및 잠금 해제
새로 추가된 계정은 자동으로 Accounts
컨테이너에 추가됩니다.
Accounts.add
메서드를 사용하여 새로운 계정을 무작위로 생성할 수 있습니다:
>>> accounts.add()
mnemonic: 'rice cement vehicle ladder end engine tiger gospel toy inspire steel teach'
<LocalAccount '0x7f1eCD32aF08635A3fB3128108F6Eb0956Efd532'>
특정 계정에 액세스하기 위해 선택적으로 개인 키를 지정할 수 있습니다:
>>> accounts.add('0xca751356c37a98109fd969d8e79b42d768587efc6ba35e878bc8c093ed95d8a9')
<LocalAccount '0xf6c0182eFD54830A87e4020E13B8E4C82e2f60f0'>
개발 환경에서 주소의 개인 키를 소유하지 않고 해당 주소에서 트랜잭션을 보낼 수 있습니다. 임의의 주소에서 Account
객체를 만들려면 Accounts.at
메서드를 사용하고 키워드 인수로 force=True
를 포함시키십시오:
>>> accounts.at('0x79B2f0CbED2a565C925A8b35f2B402710564F8a2', force=True)
<Account '0x79B2f0CbED2a565C925A8b35f2B402710564F8a2'>
계정 관리에 대한 자세한 정보는 계정 관리를 참조하십시오.
여러 거래 전송 방송
거래 전송 방송은 일반적으로 차단 작업입니다. 브라우니는 거래가 확인될 때까지 기다립니다. 차단하지 않고 거래를 방송하는 한 가지 방법은 required_confs = 0
로 설정하는 것입니다. 이렇게 하면 대기하지 않고 즉시 보류 중인 TransactionReceipt
이 반환되며 확인을 기다리지 않고 계속 진행됩니다. 또한 silent = True
로 설정하면 콘솔 출력이 억제됩니다.
>>> transactions = [
accounts[0].transfer(accounts[i], "1 ether", required_confs=0, silent=True)
for i in range(1, 4)
]
>>> [tx.status for tx in transactions]
[1, -1, -1]
이러한 거래는 처음에 대기 상태(status == -1
)이며 콘솔에서 노란색으로 표시됩니다.
거래 대체하기
TransactionReceipt.replace
메서드를 사용하여 아직 대기 중인 가격이 낮은 거래를 대체할 수 있습니다:
>>> tx = accounts[0].transfer(accounts[1], 100, required_confs=0, gas_price="1 gwei")
Transaction sent: 0xc1aab54599d7875fc1fe8d3e375abb0f490cbb80d5b7f48cedaa95fa726f29be
Gas price: 13.0 gwei Gas limit: 21000 Nonce: 3
<Transaction object '0xc1aab54599d7875fc1fe8d3e375abb0f490cbb80d5b7f48cedaa95fa726f29be'>
>>> tx.replace(1.1)
Transaction sent: 0x9a525e42b326c3cd57e889ad8c5b29c88108227a35f9763af33dccd522375212
Gas price: 14.3 gwei Gas limit: 21000 Nonce: 3
<Transaction '0x9a525e42b326c3cd57e889ad8c5b29c88108227a35f9763af33dccd522375212'>
모든 대기 중인 거래는 history
객체에서 사용 가능합니다. 하나의 거래가 확인되면 나머지 취소된 거래는 제거됩니다. 더 많은 정보는 거래 기록에 액세스하는 방법을 참조하십시오.
'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글
[브라우니 (Brownie)] 11. 트랜잭션 가스 가격 설정하기 (0) | 2023.06.16 |
---|---|
[브라우니 (Brownie)] 10. 컨트랙트로 작업하기 (0) | 2023.06.16 |
[브라우니 (Brownie)] 8. 브라우니 GUI (0) | 2023.06.16 |
[브라우니 (Brownie)] 7. 브라우니 패키지 관리자 (0) | 2023.06.16 |
[브라우니 (Brownie)] 6. 컨트랙트와 상호작용하기 (0) | 2023.06.16 |