Web3py로 거래 보내기
전제 조건
이 문서를 완전히 이해하려면 다음이 필요합니다.
블록체인이란 무엇입니까?
블록체인은 서로 연결된 블록으로 구성된 데이터 구조입니다. 그만큼
각 블록의 배열은 추가된 시기에 따라 다릅니다. 블록은
immutable은 다른 블록의 끝에 추가됩니다.
암호화폐에서 블록체인은 두 계정 간의 트랜잭션을 기록하는 데 사용됩니다. *노드*라고 하는 서로 다른 컴퓨터가 함께 작동하여 블록을 체인으로 마이닝합니다. 한 번 블록
노드는 채굴된 블록을 블록체인 네트워크에 추가합니다. 마이닝은 새 블록을 안전하게 부착하기 위해 해시 계산을 포함하는 컴퓨팅 집약적인 작업입니다.
로컬 네트워크 설정
ethereum 네트워크로 개발하려면 Geth 과 같은 로컬 서버를 설정해야 합니다. 로컬 서버를 사용하면 컴퓨터에서 블록체인 네트워크를 시뮬레이션할 수 있습니다. Geth를 사용하면 공용 Ethereum 네트워크를 분기할 수 있습니다.
geth --syncmode light -[network] --http
그런 다음 [네트워크]를 네트워크 이름으로 바꿉니다. Ethereum 네트워크에는 다양한 유형이 있습니다. 이러한 유형은 메인넷, rinkeby, ropsten, goerli 등이 될 수 있습니다. [Geth 문서의 명령줄 섹션](https://geth.ethereum.org/docs/interface/command-line-options)에서 다른 명령에 대해 자세히 알아볼 수 있습니다.
Geth 서버에서 트랜잭션을 수행하기 전에 Ethereum 계정이 사용 중인 네트워크에 자금이 있는지 확인하십시오. 로컬 서버에서 수행하는 모든 거래는 공용 네트워크에 영향을 미치지 않습니다.
잠금 해제된 계정으로 거래 보내기
잠금 해제된 계정에는 액세스하는 데 특별한 키가 필요하지 않습니다. 거래를 보내고 계정으로 다른 작업을 수행하려면 계정에 대한 액세스 권한이 필요합니다. 다음은 `sender`에서 `receiver`로 5개의 에테르를 보내는 Python 스크립트의 간단한 예입니다.
from web3 import Web3
# create an instance of `Web3` connected to the geth server
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545')) # `geth` creates the server at `http://127.0.0.8545`
sender = '0x12345......' # sender's address
receiver = '0xabcdef......' # receiver's address
# create and sign a transaction
tx_hash = w3.eth.send_transaction({ # `w3.eth.send_transaction` returns a transaction hash
'to': receiver,
'from': sender,
'value': w3.toWei(5, 'ether'), # convert the amount of ethers to Wei
})
# Wait for Geth to mine the transaction
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
# Confirm that the Ethers were sent
print("sender's account: ", w3.eth.get_balance(sender))
print("receiver's account: ", w3.eth.get_balance(receiver))
Note: One Wei
equals 10^-18 Eth
. You can reduce the amount of Ethers to send depending on your available amount. The account will not be deducted in the public network.
이제 코드를 실행하면 발신자의 계정은 5ethers 감소하고 수신자의 계정은 5ethers 증가해야 합니다. 오류 메시지가 표시되면 최대 5개의 이더가 없거나 계정이 잠긴 것입니다.
잠긴 계정으로 보내기
잠긴 계정에 액세스하려면 인증 방법이 필요합니다. 잠긴 계정에 액세스하려면 개인 키 또는 니모닉이 필요합니다. 다음은 잠긴 `sender` 계정에서 `receiver`로 5개의 에테르를 보내는 Python 스크립트의 예입니다.
from web3 import Web3
# create an instance of `Web3` connected to the geth server
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))
# collect the sender and receiver address
sender_address = '0xabcd..............................'
receiver = '0x1234.....................'
# gain access to the sender's account
sender = w3.eth.account.from_key('05d6c...............e') # pass the sender's private key
# sign a transaction with the sender's account
signed_txn = sender.sign_transaction({
'nonce': w3.eth.get_transaction_count(sender_address),
'gas': 100000,
'gasPrice': 100000,
'to': receiver, # you don't need to specify the sender
'value': w3.toWei(5, 'ether')
})
# extract raw transaction object from `signed_txn`
raw_transaction = signed_txn.rawTransaction
# send the transaction with the raw transaction
tx_hash = w3.eth.send_raw_transaction(raw_transaction)
# Wait for Geth to mine the transaction
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
# Confirm that the Ethers were sent
print("sender's account: ", w3.eth.get_balance(sender_address))
print("receiver's account: ", w3.eth.get_balance(receiver))
트랜잭션 개체에서 다음이 혼동될 수 있습니다.
ethereum 네트워크로 개발하려면 Geth 과 같은 로컬 서버를 설정해야 합니다. 로컬 서버를 사용하면 컴퓨터에서 블록체인 네트워크를 시뮬레이션할 수 있습니다. Geth를 사용하면 공용 Ethereum 네트워크를 분기할 수 있습니다.
geth --syncmode light -[network] --http
그런 다음 [네트워크]를 네트워크 이름으로 바꿉니다. Ethereum 네트워크에는 다양한 유형이 있습니다. 이러한 유형은 메인넷, rinkeby, ropsten, goerli 등이 될 수 있습니다. [Geth 문서의 명령줄 섹션](https://geth.ethereum.org/docs/interface/command-line-options)에서 다른 명령에 대해 자세히 알아볼 수 있습니다.
Geth 서버에서 트랜잭션을 수행하기 전에 Ethereum 계정이 사용 중인 네트워크에 자금이 있는지 확인하십시오. 로컬 서버에서 수행하는 모든 거래는 공용 네트워크에 영향을 미치지 않습니다.
잠금 해제된 계정으로 거래 보내기
잠금 해제된 계정에는 액세스하는 데 특별한 키가 필요하지 않습니다. 거래를 보내고 계정으로 다른 작업을 수행하려면 계정에 대한 액세스 권한이 필요합니다. 다음은 `sender`에서 `receiver`로 5개의 에테르를 보내는 Python 스크립트의 간단한 예입니다.
from web3 import Web3
# create an instance of `Web3` connected to the geth server
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545')) # `geth` creates the server at `http://127.0.0.8545`
sender = '0x12345......' # sender's address
receiver = '0xabcdef......' # receiver's address
# create and sign a transaction
tx_hash = w3.eth.send_transaction({ # `w3.eth.send_transaction` returns a transaction hash
'to': receiver,
'from': sender,
'value': w3.toWei(5, 'ether'), # convert the amount of ethers to Wei
})
# Wait for Geth to mine the transaction
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
# Confirm that the Ethers were sent
print("sender's account: ", w3.eth.get_balance(sender))
print("receiver's account: ", w3.eth.get_balance(receiver))
Note: One Wei
equals 10^-18 Eth
. You can reduce the amount of Ethers to send depending on your available amount. The account will not be deducted in the public network.
이제 코드를 실행하면 발신자의 계정은 5ethers 감소하고 수신자의 계정은 5ethers 증가해야 합니다. 오류 메시지가 표시되면 최대 5개의 이더가 없거나 계정이 잠긴 것입니다.
잠긴 계정으로 보내기
잠긴 계정에 액세스하려면 인증 방법이 필요합니다. 잠긴 계정에 액세스하려면 개인 키 또는 니모닉이 필요합니다. 다음은 잠긴 `sender` 계정에서 `receiver`로 5개의 에테르를 보내는 Python 스크립트의 예입니다.
from web3 import Web3
# create an instance of `Web3` connected to the geth server
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))
# collect the sender and receiver address
sender_address = '0xabcd..............................'
receiver = '0x1234.....................'
# gain access to the sender's account
sender = w3.eth.account.from_key('05d6c...............e') # pass the sender's private key
# sign a transaction with the sender's account
signed_txn = sender.sign_transaction({
'nonce': w3.eth.get_transaction_count(sender_address),
'gas': 100000,
'gasPrice': 100000,
'to': receiver, # you don't need to specify the sender
'value': w3.toWei(5, 'ether')
})
# extract raw transaction object from `signed_txn`
raw_transaction = signed_txn.rawTransaction
# send the transaction with the raw transaction
tx_hash = w3.eth.send_raw_transaction(raw_transaction)
# Wait for Geth to mine the transaction
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
# Confirm that the Ethers were sent
print("sender's account: ", w3.eth.get_balance(sender_address))
print("receiver's account: ", w3.eth.get_balance(receiver))
트랜잭션 개체에서 다음이 혼동될 수 있습니다.
from web3 import Web3
# create an instance of `Web3` connected to the geth server
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545')) # `geth` creates the server at `http://127.0.0.8545`
sender = '0x12345......' # sender's address
receiver = '0xabcdef......' # receiver's address
# create and sign a transaction
tx_hash = w3.eth.send_transaction({ # `w3.eth.send_transaction` returns a transaction hash
'to': receiver,
'from': sender,
'value': w3.toWei(5, 'ether'), # convert the amount of ethers to Wei
})
# Wait for Geth to mine the transaction
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
# Confirm that the Ethers were sent
print("sender's account: ", w3.eth.get_balance(sender))
print("receiver's account: ", w3.eth.get_balance(receiver))
Note: One Wei
equals 10^-18 Eth
. You can reduce the amount of Ethers to send depending on your available amount. The account will not be deducted in the public network.
잠긴 계정에 액세스하려면 인증 방법이 필요합니다. 잠긴 계정에 액세스하려면 개인 키 또는 니모닉이 필요합니다. 다음은 잠긴 `sender` 계정에서 `receiver`로 5개의 에테르를 보내는 Python 스크립트의 예입니다.
from web3 import Web3
# create an instance of `Web3` connected to the geth server
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))
# collect the sender and receiver address
sender_address = '0xabcd..............................'
receiver = '0x1234.....................'
# gain access to the sender's account
sender = w3.eth.account.from_key('05d6c...............e') # pass the sender's private key
# sign a transaction with the sender's account
signed_txn = sender.sign_transaction({
'nonce': w3.eth.get_transaction_count(sender_address),
'gas': 100000,
'gasPrice': 100000,
'to': receiver, # you don't need to specify the sender
'value': w3.toWei(5, 'ether')
})
# extract raw transaction object from `signed_txn`
raw_transaction = signed_txn.rawTransaction
# send the transaction with the raw transaction
tx_hash = w3.eth.send_raw_transaction(raw_transaction)
# Wait for Geth to mine the transaction
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
# Confirm that the Ethers were sent
print("sender's account: ", w3.eth.get_balance(sender_address))
print("receiver's account: ", w3.eth.get_balance(receiver))
트랜잭션 개체에서 다음이 혼동될 수 있습니다.
Nonce:
w3.eth.get_transaction_count()
함수에서 가져옵니다. Gas: 트랜잭션이 사용할 수 있는 최대 가스 수수료를 나타냅니다.
GasPrice: 각 유료 가스에 사용되는 정수입니다.
Note: The
gasPrice
value is required if you are making legacy
transactions. UsemaxFeePerGas
andmaxPriorityFeePerGas
unless it is necessary to usegasPrice
. Using those two instead ofgasPrice
is more efficient method.signed_txn = sender.sign_transaction({ 'nonce': w3.eth.get_transaction_count(sender_address), 'gas': 100000, 'maxFeePerGas': 3000000000, # replacement for `gasPrice` 'maxPriorityFeePerGas': 2000000000, # replacement for `gasPrice` 'to': receiver, 'value': w3.toWei(5, 'ether') })
그런 다음 코드를 실행하면 보낸 사람의 계정이 축소된 것을 볼 수 있습니다.
5 에테르로 수신자는 5 에테르로 증가했습니다.
결론
이 기사는 한 계정에서 다른 계정으로 Ethers를 보내는 과정을 다룹니다. 이 기사가 네트워크를 통해 거래가 이루어지는 방식을 이해하는 데 도움이 되었기를 바랍니다. 주제에 대한 지식을 넓히려면 다음 링크를 확인하십시오.
Reference
이 문제에 관하여(Web3py로 거래 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ghoulkingr/sending-transactions-with-web3py-56p8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)