本文整理汇总了Python中Node.Node.getTransId方法的典型用法代码示例。如果您正苦于以下问题:Python Node.getTransId方法的具体用法?Python Node.getTransId怎么用?Python Node.getTransId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Node.Node
的用法示例。
在下文中一共展示了Node.getTransId方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: createAccounts
# 需要导入模块: from Node import Node [as 别名]
# 或者: from Node.Node import getTransId [as 别名]
def createAccounts(self, creator, waitForTransBlock=True, stakedDeposit=1000):
if self.accounts is None:
return True
transId=None
for account in self.accounts:
if Utils.Debug: Utils.Print("Create account %s." % (account.name))
trans=self.createAccountAndVerify(account, creator, stakedDeposit)
if trans is None:
Utils.Print("ERROR: Failed to create account %s." % (account.name))
return False
if Utils.Debug: Utils.Print("Account %s created." % (account.name))
transId=Node.getTransId(trans)
if waitForTransBlock and transId is not None:
node=self.nodes[0]
if Utils.Debug: Utils.Print("Wait for transaction id %s on server port %d." % ( transId, node.port))
if node.waitForTransInBlock(transId) is False:
Utils.Print("ERROR: Failed to validate transaction %s got rolled into a block on server port %d." % (transId, node.port))
return False
return True
示例2: getNextCleanProductionCycle
# 需要导入模块: from Node import Node [as 别名]
# 或者: from Node.Node import getTransId [as 别名]
def getNextCleanProductionCycle(trans, node):
transId=Node.getTransId(trans)
rounds=21*12*2 # max time to ensure that at least 2/3+1 of producers x blocks per producer x at least 2 times
node.waitForTransFinalization(transId, timeout=rounds/2)
irreversibleBlockNum=node.getIrreversibleBlockNum()
# The voted schedule should be promoted now, then need to wait for that to become irreversible
votingTallyWindow=120 #could be up to 120 blocks before the votes were tallied
promotedBlockNum=node.getHeadBlockNum()+votingTallyWindow
node.waitForIrreversibleBlock(promotedBlockNum, timeout=rounds/2)
ibnSchedActive=node.getIrreversibleBlockNum()
blockNum=node.getHeadBlockNum()
Utils.Print("Searching for clean production cycle blockNum=%s ibn=%s transId=%s promoted bn=%s ibn for schedule active=%s" % (blockNum,irreversibleBlockNum,transId,promotedBlockNum,ibnSchedActive))
blockProducer=getBlockProducer(node, blockNum)
blockNum+=1
Utils.Print("Advance until the next block producer is retrieved")
while blockProducer == getBlockProducer(node, blockNum):
blockNum+=1
blockProducer=getBlockProducer(node, blockNum)
return blockNum
示例3: bootstrap
# 需要导入模块: from Node import Node [as 别名]
# 或者: from Node.Node import getTransId [as 别名]
def bootstrap(totalNodes, prodCount, biosHost, biosPort, dontKill=False, onlyBios=False):
"""Create 'prodCount' init accounts and deposits 10000000000 SYS in each. If prodCount is -1 will initialize all possible producers.
Ensure nodes are inter-connected prior to this call. One way to validate this will be to check if every node has block 1."""
Utils.Print("Starting cluster bootstrap.")
biosNode=Node(biosHost, biosPort)
if not biosNode.checkPulse():
Utils.Print("ERROR: Bios node doesn't appear to be running...")
return False
producerKeys=Cluster.parseClusterKeys(totalNodes)
# should have totalNodes node plus bios node
if producerKeys is None or len(producerKeys) < (totalNodes+1):
Utils.Print("ERROR: Failed to parse private keys from cluster config files.")
return False
walletMgr=WalletMgr(True)
walletMgr.killall()
walletMgr.cleanup()
if not walletMgr.launch():
Utils.Print("ERROR: Failed to launch bootstrap wallet.")
return False
biosNode.setWalletEndpointArgs(walletMgr.walletEndpointArgs)
try:
ignWallet=walletMgr.create("ignition")
if ignWallet is None:
Utils.Print("ERROR: Failed to create ignition wallet.")
return False
eosioName="eosio"
eosioKeys=producerKeys[eosioName]
eosioAccount=Account(eosioName)
eosioAccount.ownerPrivateKey=eosioKeys["private"]
eosioAccount.ownerPublicKey=eosioKeys["public"]
eosioAccount.activePrivateKey=eosioKeys["private"]
eosioAccount.activePublicKey=eosioKeys["public"]
if not walletMgr.importKey(eosioAccount, ignWallet):
Utils.Print("ERROR: Failed to import %s account keys into ignition wallet." % (eosioName))
return False
contract="eosio.bios"
contractDir="contracts/%s" % (contract)
wastFile="contracts/%s/%s.wast" % (contract, contract)
abiFile="contracts/%s/%s.abi" % (contract, contract)
Utils.Print("Publish %s contract" % (contract))
trans=biosNode.publishContract(eosioAccount.name, contractDir, wastFile, abiFile, waitForTransBlock=True)
if trans is None:
Utils.Print("ERROR: Failed to publish contract %s." % (contract))
return False
Node.validateTransaction(trans)
Utils.Print("Creating accounts: %s " % ", ".join(producerKeys.keys()))
producerKeys.pop(eosioName)
accounts=[]
for name, keys in producerKeys.items():
initx = None
initx = Account(name)
initx.ownerPrivateKey=keys["private"]
initx.ownerPublicKey=keys["public"]
initx.activePrivateKey=keys["private"]
initx.activePublicKey=keys["public"]
trans=biosNode.createAccount(initx, eosioAccount, 0)
if trans is None:
Utils.Print("ERROR: Failed to create account %s" % (name))
return False
Node.validateTransaction(trans)
accounts.append(initx)
transId=Node.getTransId(trans)
if not biosNode.waitForTransInBlock(transId):
Utils.Print("ERROR: Failed to validate transaction %s got rolled into a block on server port %d." % (transId, biosNode.port))
return False
Utils.Print("Validating system accounts within bootstrap")
biosNode.validateAccounts(accounts)
if not onlyBios:
if prodCount == -1:
setProdsFile="setprods.json"
if Utils.Debug: Utils.Print("Reading in setprods file %s." % (setProdsFile))
with open(setProdsFile, "r") as f:
setProdsStr=f.read()
Utils.Print("Setting producers.")
opts="--permission [email protected]"
myTrans=biosNode.pushMessage("eosio", "setprods", setProdsStr, opts)
if myTrans is None or not myTrans[0]:
Utils.Print("ERROR: Failed to set producers.")
return False
else:
counts=dict.fromkeys(range(totalNodes), 0) #initialize node prods count to 0
setProdsStr='{"schedule": ['
firstTime=True
prodNames=[]
for name, keys in producerKeys.items():
if counts[keys["node"]] >= prodCount:
#.........这里部分代码省略.........
示例4: spreadFunds
# 需要导入模块: from Node import Node [as 别名]
# 或者: from Node.Node import getTransId [as 别名]
def spreadFunds(self, source, accounts, amount=1):
assert(source)
assert(isinstance(source, Account))
assert(accounts)
assert(isinstance(accounts, list))
assert(len(accounts) > 0)
Utils.Print("len(accounts): %d" % (len(accounts)))
count=len(accounts)
transferAmount=(count*amount)+amount
transferAmountStr=Node.currencyIntToStr(transferAmount, CORE_SYMBOL)
node=self.nodes[0]
fromm=source
to=accounts[0]
Utils.Print("Transfer %s units from account %s to %s on eos server port %d" % (
transferAmountStr, fromm.name, to.name, node.port))
trans=node.transferFunds(fromm, to, transferAmountStr)
assert(trans)
transId=Node.getTransId(trans)
if transId is None:
return False
if Utils.Debug: Utils.Print("Funds transfered on transaction id %s." % (transId))
nextEosIdx=-1
for i in range(0, count):
account=accounts[i]
nextInstanceFound=False
for _ in range(0, count):
#Utils.Print("nextEosIdx: %d, n: %d" % (nextEosIdx, n))
nextEosIdx=(nextEosIdx + 1)%count
if not self.nodes[nextEosIdx].killed:
#Utils.Print("nextEosIdx: %d" % (nextEosIdx))
nextInstanceFound=True
break
if nextInstanceFound is False:
Utils.Print("ERROR: No active nodes found.")
return False
#Utils.Print("nextEosIdx: %d, count: %d" % (nextEosIdx, count))
node=self.nodes[nextEosIdx]
if Utils.Debug: Utils.Print("Wait for transaction id %s on node port %d" % (transId, node.port))
if node.waitForTransInBlock(transId) is False:
Utils.Print("ERROR: Failed to validate transaction %s got rolled into a block on server port %d." % (transId, node.port))
return False
transferAmount -= amount
transferAmountStr=Node.currencyIntToStr(transferAmount, CORE_SYMBOL)
fromm=account
to=accounts[i+1] if i < (count-1) else source
Utils.Print("Transfer %s units from account %s to %s on eos server port %d." %
(transferAmountStr, fromm.name, to.name, node.port))
trans=node.transferFunds(fromm, to, transferAmountStr)
transId=Node.getTransId(trans)
if transId is None:
return False
if Utils.Debug: Utils.Print("Funds transfered on block num %s." % (transId))
# As an extra step wait for last transaction on the root node
node=self.nodes[0]
if Utils.Debug: Utils.Print("Wait for transaction id %s on node port %d" % (transId, node.port))
if node.waitForTransInBlock(transId) is False:
Utils.Print("ERROR: Failed to validate transaction %s got rolled into a block on server port %d." % (transId, node.port))
return False
return True
示例5: errorExit
# 需要导入模块: from Node import Node [as 别名]
# 或者: from Node.Node import getTransId [as 别名]
errorExit("Failed to lock all wallets")
Print("Unlocking wallet \"%s\"." % (testWallet.name))
if not walletMgr.unlockWallet(testWallet):
cmdError("%s wallet unlock" % (ClientName))
errorExit("Failed to unlock wallet %s" % (testWallet.name))
transferAmount="97.5311 {0}".format(CORE_SYMBOL)
Print("Transfer funds %s from account %s to %s" % (
transferAmount, testeraAccount.name, currencyAccount.name))
trans=node.transferFunds(testeraAccount, currencyAccount, transferAmount, "test transfer a->b")
if trans is None:
cmdError("%s transfer" % (ClientName))
errorExit("Failed to transfer funds %d from account %s to %s" % (
transferAmount, testeraAccount.name, currencyAccount.name))
transId=Node.getTransId(trans)
expectedAmount="98.0311 {0}".format(CORE_SYMBOL) # 5000 initial deposit
Print("Verify transfer, Expected: %s" % (expectedAmount))
actualAmount=node.getAccountEosBalanceStr(currencyAccount.name)
if expectedAmount != actualAmount:
cmdError("FAILURE - transfer failed")
errorExit("Transfer verification failed. Excepted %s, actual: %s" % (expectedAmount, actualAmount))
Print("Validate last action for account %s" % (testeraAccount.name))
actions=node.getActions(testeraAccount, -1, -1)
assert(actions)
try:
if not enableMongo:
assert(actions["actions"][0]["action_trace"]["act"]["name"] == "transfer")
else: