Skip to content

Instantly share code, notes, and snippets.

@garethtdavies
Last active September 10, 2019 21:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save garethtdavies/1e2269a8e1ac2965798395ab0849cf50 to your computer and use it in GitHub Desktop.
Save garethtdavies/1e2269a8e1ac2965798395ab0849cf50 to your computer and use it in GitHub Desktop.
Time a Coda transaction
import asyncio
import time
import CodaClient
import datetime
coda = CodaClient.Client(graphql_host="localhost", graphql_port="8000")
# This currently responds to all tx for the provided public key on L#33 - it could be filtered to listen for payment id
async def blockReceived(message):
receivedTime = datetime.datetime.now()
print("TX received at {}".format(receivedTime))
#print(message)
print("Time taken: {}".format(receivedTime - currentTime))
async def listenForTX(public_key):
await coda.listen_new_blocks(public_key, blockReceived)
# This needs to be in the wallet so create one via addWallet mutation or simply import existing
sender = "tNciLXrEncLDVURwYWLejYa3WDRU4p223e6ZSweVU2Wm6F9fniK3inSgah6Ak7kuSdyzjdZ75VF2yjBwLbRYRFRFinJba2fPRoGVGDGXBZZd9USFkp7Gb2MHYb3LdQoXRX6qKxqP7xCqpw"
# Choose a recipient, this will pick up any tx and not just the one we are interested in
recipient = "tNciB5atiEC8k4poyYQX64WPZzSTt1pLYwujjiQeQtw9xaTPY5ZqVdcc6aP3MUVUVm8QTP7vcGPtGqZmDmozkjpZZKiMppMc4D6Dq8JScuPw5D9oCjAoYq431Ka8Ch2povNMJE7TYusPM3"
# Get the current time
currentTime = datetime.datetime.now()
print("Current Time is {}".format(currentTime))
# Send a payment
payment = coda.send_payment(recipient, sender, 10, 10, "Enter something here for a memo")
print("Sent TX, now we wait...")
print("Payment ID: {}".format(payment["sendPayment"]["payment"]["id"]))
# Start listening
asyncio.run(listenForTX(recipient))
@garethtdavies
Copy link
Author

garethtdavies commented Sep 10, 2019

Current Time is 2019-09-10 13:46:43.205203
Sent TX, now we wait...
Payment ID: 8KRGybpoRnmsskQg2yrVoBZWT25Mc3RG7bpGpyPrF3nG527p9HLHoheCoqX7umUoFZ51s8fxphTpCbz77b6tcD6BtELtNgHWXb3zY6mF3cpLkPFZyvYD3LfRfFNraNktkvXCSQ8jzRXptUWg4eyzbQgJ4ijos7UyUCfhqwVLB7NGJGTRqvhpmw23GBitwKf5xGp9N32f9L158DV4bKGnnqidAE4CEpGGKknbaMc3QGFBfap1PA3znjDHcS6ETLBqKkGQjYcp8XFv438fezRVoGaCk1CDu2eMP7Hxx4S5UvtxokW9jmNf6X6vcnuFwWgDcri1p6bQtr51rKPMH6KSrYP39oe7QKadp2cLjUxJdZ43H1LSEVVtaXZjgJ2aWBmMeuAUzVUwVfF3FB7eDojsanMXY6hTgjoQMNm9iS5F4RMAt9J1rNEFPTMrw7hdip9oeXSjVn2k5tn8BLiTwVAqnf1qRpyyQcnEWsMz8SVDm8KurPFLXrrnmK1SAViKkxHNbYNTz4PeXXhb3tr2qhqvZj23hEko9b998o8msDeJcRNbikZayFhkKVkRMVe7RPNd9fXW4qNVRLadtjavgcmqQn8CT9hwG9Dtt
TX received at 2019-09-10 14:23:50.087986
Time taken: 0:05:16.837822

@garethtdavies
Copy link
Author

garethtdavies commented Sep 10, 2019

message will return a dictionary should you wish to restrict to an id in userCommands

{"type":"data","id":"1","payload":{"data":{"newBlock":{"creator":"tNcihXwbnb6Sv3MwW2rbhXDS4TNSn75tnDZjzUKsjgFSmVJUycLFftqnSZmikKBKEo7KHeLviRpsZw3XUh6zDZwtdH8zk9mhNG6ydL8pqrFM5FdkeV9fYdtvysVC29PSKyb97vK7jkJB5d","stateHash":"4ApWKJ9abY8NNihHm3FL7E5nbq27JFowuEYpXpDr3BBs2w99DE93mySy4YqoZAURBy4xFKS5CDA234v8fatx4MiEMYt6rNrdT63FcNsmz7WWL3bH2y6pjpLtca7sLBvpA1iPjyRmEDY8c","protocolState":{"previousStateHash":"4ApWKt1SzQVkxtnuXmNeC8kgBBB6S7iDjV3Pzj4ZjWip2BXVxssPBakQg6Goc6XcXvuoz8bVhPcRMgvnDfdhc73n1EHKz4hyAtpNR8vDXjLCMeBZCRJY9namVTrr9DPwiGtK9CV3AXGfJ","blockchainState":{"date":"1568150400000","snarkedLedgerHash":"4ApWGM6wRR7dvhTQJz9fXm48PxmUzEh3eZLUvM6Pi5YvDzibV4EhjfBGdRrHYczkDR1So27A32c5ka6B5nZitTjTSN4qbgmnmnW2bzrX9pR4kpjKegWawpPkVpNj7poRpkHS3PjEgmENU","stagedLedgerHash":"4ApWJeDZwdvbcw1Zobny3D1UidBKAUqzUb4sU9hV7U55MeNe4etiF7hyGQv295NzPWX8gEkjc8Fm2z8CaWAZgmRVxx7XfgGdymetxj3LEeJKeqeWt9Pb7y4723rLGnSfAoHGiun3bSqVE"}},"transactions":{"userCommands":[{"id":"8KRGybpuBExUszXkesPVWcyVLx7ChVr2q94yJbKvbqTgEfutK4aWdfw8V1Euzk9V6ZNbQVe8iPtvaDkTaNC21gE2NgvSYBRPCBtGNqPQvu4gGreefhQQPT2kvGNcUogBFHhpzPZTmzyX5CAdkv9idw7oiJuUby1cH1A3oGPb6TgxgRVNSGNoaFe47p9vKiEqtJPzsRwNVwDDHoaXnvoSh8nHQNgWQgTBe3LpqdCLkqSZi3VpeHzWpwMDs3MJk5AjSWYsH8sX8Lwsr1DDYPxYYHScn542YVwCwi3cVmkXcYn4foaHa1cTahnAHwoi7Nt36gdwdWbwtPFJo5EhdRknVBCKmXoaT3sm13uFwNYeBUT2u4jMLPcCGZZVMxyoGHALG4oEeNRrJJVudTuTfercfAnZiUQ4qrSSoi6aXUWRVWzQhpJqce5uuPtUd7XL7z7iEdHgLL3iwtkEAAd5XkV5mm72sJL2B9N6Xh6oPYKp11wcN1P77eykHBDTWCY653u7mhZMy3VnXrMfR7L61AR1rvpKSmaMRhb3aAQAJoPdWYAqebnZF9KKiQxV9QMBMTRgouuLpUvtQbG1YxVbCMgikQGv611CNhdLU","isDelegation":false,"nonce":20,"from":"tNciLXrEncLDVURwYWLejYa3WDRU4p223e6ZSweVU2Wm6F9fniK3inSgah6Ak7kuSdyzjdZ75VF2yjBwLbRYRFRFinJba2fPRoGVGDGXBZZd9USFkp7Gb2MHYb3LdQoXRX6qKxqP7xCqpw","to":"tNciB5atiEC8k4poyYQX64WPZzSTt1pLYwujjiQeQtw9xaTPY5ZqVdcc6aP3MUVUVm8QTP7vcGPtGqZmDmozkjpZZKiMppMc4D6Dq8JScuPw5D9oCjAoYq431Ka8Ch2povNMJE7TYusPM3","amount":"10","fee":"10","memo":"2pmu5fn89nTXhgEwZYVLebMBU73NkmFgSZJyYyKZKZVNfbxAAjLbHk"}],"feeTransfer":[{"recipient":"tNciCJB9Df2QdurcjSpKEJDuFU5sBphMCmjSr5xVPf77V7Pq3HyuKqheWiz6pekZjdhnBMTxYrfttMoiA4tzYPBmTwEN2bZKkhH9hcHa28eEJFZdiSryZ6mCKyniqXYhAxzKUfSXAKwQWN","fee":"9"},{"recipient":"tNciB5atiEC8k4poyYQX64WPZzSTt1pLYwujjiQeQtw9xaTPY5ZqVdcc6aP3MUVUVm8QTP7vcGPtGqZmDmozkjpZZKiMppMc4D6Dq8JScuPw5D9oCjAoYq431Ka8Ch2povNMJE7TYusPM3","fee":"1"}],"coinbase":"20"}}}}}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment