블록체인 (Block Chain)/이더리움

[브라우니 (Brownie)] 9. 계정으로 작업하기

2023. 6. 16. 16:40
728x90
반응형
SMALL

 

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 객체에서 사용 가능합니다. 하나의 거래가 확인되면 나머지 취소된 거래는 제거됩니다. 더 많은 정보는 거래 기록에 액세스하는 방법을 참조하십시오.

 

728x90
반응형
LIST

'블록체인 (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
'블록체인 (Block Chain)/이더리움' 카테고리의 다른 글
  • [브라우니 (Brownie)] 11. 트랜잭션 가스 가격 설정하기
  • [브라우니 (Brownie)] 10. 컨트랙트로 작업하기
  • [브라우니 (Brownie)] 8. 브라우니 GUI
  • [브라우니 (Brownie)] 7. 브라우니 패키지 관리자
gsroot
gsroot
gsrootgsroot 님의 블로그입니다.
gsroot
gsroot
gsroot
전체
오늘
어제
  • 분류 전체보기 (126)
    • 파이썬 (Python) (3)
    • 데이터 과학 (Data Science) (29)
      • 데이터브릭스 (11)
      • Apache Superset (9)
    • 인공지능 (AI) (43)
      • 머신러닝 (ML) (19)
      • LLM (8)
      • MCP (8)
      • OpenAI Agents SDK (7)
    • 블록체인 (Block Chain) (37)
      • 이더리움 (36)
      • 코스모스 (0)
    • 웹 (Web) 개발 (9)
    • 앱 (App) 개발 (0)
    • 데브옵스 (DevOps) (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Superset
  • 파이썬
  • Ai
  • MCP
  • 자연어 처리
  • claude
  • 선형회귀
  • 브라우니
  • 스마트컨트랙트
  • FastAPI
  • 솔리디티
  • redis
  • 블록체인
  • 자동화
  • 데이터 과학
  • 데이터 시각화
  • cognosys
  • LLM
  • 이더리움
  • cursor
  • Python
  • GPT
  • Redis Sentinel
  • ci/cd
  • 웹 개발
  • 데이터브릭스
  • 머신러닝
  • DevOps
  • NLP
  • openai agents sdk

최근 댓글

최근 글

반응형
250x250
hELLO · Designed By 정상우.
gsroot
[브라우니 (Brownie)] 9. 계정으로 작업하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.