Hi! I am giving a try to Iroha, it looks a great piece of software, thanks to the people working on it.
I am having an issue: I am trying to run the example provided in the iroha repository in a machine (with a single node). No dockers, Ubuntu 18.04LTS. Unfortunately, I am not being able to see the voting process moving on:
[2020-11-22 23:33:17.121761655][I][Irohad/Consensus/HashGate]: Vote VoteMessage: [yac hash=YacHash: [round=Round: [block=2, reject=0], hashes=VoteHashes: [proposal=, block=]], signature=Signature: [publicKey=716fe505f69f18511a1b083915aa9ff73ef36e6688199f3959750db38b8f4bfc, signedData=9b5014ada87027e59c197cb4a3e5c88d4f32e87006c33dea325169af3f01592493f17364c58330619c5aa5cbdd26627a96c284254c85036cce0a0609df372303]] to peer Peer: [address=127.0.0.1:10001, pubkey=bddd58404d1315e0eb27902c5d7c8eb0602c16238f005773df406bc191308929, tlsCertificate=0]
[2020-11-22 23:33:17.122507508][I][Irohad/Consensus/Network]: Send votes bundle[size=1] to 127.0.0.1:10001
[2020-11-22 23:33:17.123582587][I][Irohad/Consensus/Network]: Received votes[size=1] from ipv4:127.0.0.1:56762
[2020-11-22 23:33:17.123778849][W][Irohad/Consensus/HashGate]: Got a vote from an unknown peer: VoteMessage: [yac hash=YacHash: [round=Round: [block=2, reject=0], hashes=VoteHashes: [proposal=, block=]], signature=Signature: [publicKey=716fe505f69f18511a1b083915aa9ff73ef36e6688199f3959750db38b8f4bfc, signedData=9b5014ada87027e59c197cb4a3e5c88d4f32e87006c33dea325169af3f01592493f17364c58330619c5aa5cbdd26627a96c284254c85036cce0a0609df372303]]
I have been trying to figure out what the problem could be but I am not being able to solve it. Any suggestion?
Thank you very much in advance!!
Initially I thought it could have to do with the fact of only having one node, but according to this sandbox:
it seems to be possible.
P.S1: I think the previously linked Sandbox does not work, since when trying to execute the python scripts the iroha module is not found.
P.S2: The "tab" in the top of the page: https://soramitsu.co.jp/iroha linking to resources does not work in Google Chrome (one has to scroll manually there).
Hi Konrad, thanks for your answer!
I am using the files given in the Iroha repository example.
In the original genesis.block file, where the peer is added, the peerKey is set to be the one from the node0.pub file.
Nevertheless, I saw that in the VoteMessage appearing in Irohad, the Signature PublicKey is the one from email@example.com.
If I change in the genesis.block the peerKey to be firstname.lastname@example.org, it (apparently) works. I am actually confused by this, since I thought the voting process depended on peers and not accounts. Why does Irohad use the email@example.com and not for example firstname.lastname@example.org account?
Once I do that modification, the following appears, so it seems to work although not new blocks are added (since there is not transactions???):
...Ordering/Service]: onCollaborationOutcome => Round: [block=2, reject=1813]
...Consensus/HashGate]: Order for voting: [127.0.0.1:10001]
...Consensus/HashGate]: Vote VoteMessage: [yac hash=YacHash: [round=Round: [block=2, reject=1813], hashes=VoteHashes: [proposal=, block=]], signature=Signature: [publicKey=716fe505f69f18511a1b083915aa9ff73ef36e6688199f3959750db38b8f4bfc, signedData=92426b036d1ab16c72f85ff6b97adfe2a822b333f6097b416402fdb0971a8b792fe0123447593bfaf3e625421f048b25539650f6368dbddeac56aa47417f3505]] to peer Peer: [address=127.0.0.1:10001, pubkey=716fe505f69f18511a1b083915aa9ff73ef36e6688199f3959750db38b8f4bfc, tlsCertificate=0]
...Consensus/Network]: Send votes bundle[size=1] to 127.0.0.1:10001
~ ~~| PROPOSAL ^_^ | ~~~
...Consensus/Network]: Received votes[size=1] from ipv4:127.0.0.1:32910
...Consensus/VoteStorage/ProposalStorage]: Vote with Round: [block=2, reject=1738] and hashes [, ] looks valid
...Consensus/VoteStorage/ProposalStorage/BlockStorage]: Vote with round Round: [block=2, reject=1738] and hashes (, ) inserted, votes in storage [1/1]
...Consensus/HashGate]: Received supermajority of votes for Round: [block=2, reject=1738], skip propagation
...Consensus/HashGate]: Pass outcome for Round: [block=2, reject=1738] to pipeline
...Consensus/Gate]: Consensus skipped round, voted for nothing
...Synchronizer]: processing consensus outcome
~ ~~| EMPTY (-_-)zzz | ~~~
After that, when trying to interact with the blockchain following this guide:
I get this:
Congratulation, your transaction was accepted for processing.
Its hash is c5cb317271240b7be5908473b002f3ab0fb085aff933719ec9274b6a37d36ce3
But it was not processed, I don't think nothing was shown in Irohad and no new blocks were created.
What am I doing wrong?
Thank you very much in advance!! Once I have a better understanding of Iroha, I could contribute to create some additional documentation addessing some of the issues I am facing being new to this technology.
Sara via telegram
Well, the thing that you've built is basically the 'core' part of Iroha. To send something there (including the commands and queries) you will need some sort of a client side.
For example, you can try CLI (although it is only for trying things out - it is not sonething for actually building stuff and not exactly reliable) here (https://iroha.readthedocs.io/en/master/getting_started/cli-guide.html) or use Python client library - a little guide is here (https://iroha.readthedocs.io/en/master/getting_started/python-guide.html). Bonus resource for Python is a Katacoda tutorial: https://katacoda.com/hyperledger-iroha where everything is shown step-by step.
Burrow smart-contract business is trickier. First of all, you will need to build Iroha again with Burrow flag, and then carefully follow this part of the documentation: https://iroha.readthedocs.io/en/master/integrations/index.html#hyperledger-burrow
I would start with Python example just to get the idea of what the system looks like.
I am new in here, I am confused on setting up configuration ports, peer communication and block store on a multiple nodes situation.
I was able to compile the master on a Windows 10 Ubuntu 18.4 (WSL). I want to run two nodes on the same machine. Following are my configuration and setup..
Node0’s config has
• internal_port = 10001,
• "torii_port" : 50051,
• "block_store_path" : "/tmp/block_store/"
Node1’s config has
• internal_port = 10002,
• "torii_port" : 50052,
• "block_store_path" : "/tmp/block_store2/"
The genesis.block for both has
I am able to run both and can use “ iroha_cli” to create asset, add asset and query asset.
However, if I created an asset1 with peer node1, I will not able to query the asset1 on the node0
If I created an asset0 with peer on node0, I will not able to query the asset0 on node1.
When I look at the /tmp/block_store and /tmp/block_store1
I can see 2 blocks on each store, the node0, /tmp/block_store has the 000000001 and 0000002 blocks, and the node1, /tmp/block_store1, I have the 0000001 and 0000003 blocks.
In my mind, both stores /tmp/block_store or /tmp/block_store1, should have 3 blocks as 000001, 000002, and 000003.
Am I doing some wrong in the configuration (config, and genesis.block)? Or should I use the ‘iroha_cli’ to issue the add peer/node as well.
Thanks for all your help.
I'm thinking about how to implement auction in Iroha.
The best possibility I see (in current functionalities) is:
What do You think? Does anybody has better idea?
validator@auctionto all bidder accounts
validator@auctionshould maintain a list of bidder accounts it needs to check
1234@auction, and a quorum of 2.
validator@auctionwill collect pending transactions from all bidders, maybe at a fixed time interval (e.g. at the end of the bidding round).
validator@auctionwill evaluate all the bids, and signs the winning bid. The rest of bids will be invalidated.
1234@auctionas key-value and everybody would be able to see offers. What do You thing?