NithyaPalanisamy on Tue, 11 Jul 2017 07:06:32
I have created a Ethereum Consortium Leader and Member Blockchain as per the document provided in the link https://gallery.technet.microsoft.com/Bletchley-Ethereum-4bc7d80dand established a connection between member and leader.
Now, I wanted to add new members to the account. In the document, it is suggested to create the new account through Metamask. I installed the metamask chrome plugin and pointed to Ethereum Consortium Member RPC endpoint. I created a new account lets say, 'account1', and transferred the ether from Ethereum Consortium Member admin site to the 'account1' created in the Metamask. Later, I tried to transfer the ether form 'account1' to Ethereum Consortium Member's address(taken from Admin site). But the transfer failed saying 'invalid sender address'.
As per my understanding, Ethereum Consortium Member and account1 created in the metamask forms the Blockchain network. I'm not able to understand how I'm able to transfer from Ethereum Consortium Member account to 'account1' but not in the reverse way. Can anyone please provide me some guidance on this topic.
Also, I noticed, Ethereum Consortium Leader and Member accounts ethers are getting increased after every few minutes without doing any transactions.
Also, can you please explain me how can I add a real ethereum accounts directly without using metamask.
Microsoft Azure Blockchain Team on Fri, 14 Jul 2017 07:44:04
The accounts you see on the admin site are the default (coinbase) accounts of miners. These accounts are created when the network is deployed and live on the mining nodes (password protected by the Ethereum account password you provided when deploying). They are not meant to represent the accounts of members but rather are created as a source of Ether to fund new accounts on the network since the primary purpose of a private consortium network is typically not ether transfer but rather building applications on top of smart contracts. Being the coinbase accounts of miners, their balance goes up each time a miner successfully mines a block. For the purpose of Ether transfer, please create two Ethereum accounts, fund one of them through the admin site and then transfer Ether from the account with a balance to the one that is empty. Metamask is a convenient tool to interact with an Ethereum network over RPC and creates accounts on the client side (browser). These are real Ethereum accounts and Metamask even allows you to export the private key as well so you could use this account on any private Ethereum network (though its advised to keep accounts separate). There are various wallets and tools to create Ethereum accounts and associated private keys.
Hope this addresses your questions. Please reply back if you have any more questions.
Microsoft Azure Blockchain Team
NithyaPalanisamy on Mon, 17 Jul 2017 06:11:21
Thanks for the explanation :)
But I don't understand why I was not able to transfer the ether from 'account1' which I have created in metamask to the Ethereum Consortium Member account because I'm able to transfer from Ethereum Consortium Member account to 'account1' but not in the reverse way.
I have got some more questions. Please help me to understand the same.
1. If I create an Ethereum account using metamask pointing to an private Ethereum network RPC, where that account's blockchain will be created?
2. Based on the following statement, "These are real Ethereum accounts and Metamask even allows you to export the private key as well so you could use this account on any private Ethereum network" I have got this question, How can I use the same account with different networks?
Microsoft Azure Blockchain Team on Mon, 17 Jul 2017 23:38:14
The "invalid sender" Metamask error is due to a non-backwards-compatible feature Metamask uses that our multi-member template does not support yet. We will be updating our multi-member template this week in order to make it once again compatible with Metamask.
To answer your other questions, creating a blockchain "account" is a little bit misleading - all that happens when you create an account is that a new public/private keypair is generated in your client. You can create as many accounts as you like, and the blockchain itself will have no knowledge of these accounts until you send a transaction using that key.
This also means that, since nothing happens on the blockchain when you generate these keys, you can take the keys and use them on multiple different deployments without requiring an "account setup" on each deployment. You will want to make sure that your account's address (which is really just a hash of your public key) has sufficient ether to perform transactions, but other than that you can use your account keys on any Ethereum deployment, public or private.
Please let us know if you have any other questions!
NithyaPalanisamy on Tue, 18 Jul 2017 07:01:13
Once again thanks for the detailed explanation :)
Can you help me to understand, When I use the account, example, created in metamask, how ether will be retrieved for that account when we use in different ethereum network?
Microsoft Azure Blockchain Team on Tue, 18 Jul 2017 17:09:24
Ether balances are not carried over between networks. However, you can still use the same account after transferring ether to your account's address on a new network.
One way in which this is useful is in access control for smart contracts. Let's say you have a friend that wants to sell you a car. They could write a smart contract that handles the sale, and make it so that only your account can interact with it. It doesn't matter which network this contract is deployed on - public or private - because your account will be able to interact with it no matter what. Your account's address and signing keys remain the same and valid across any network.
Nithya Palanisamy on Fri, 28 Jul 2017 05:45:11
Thank you for the explanation :)
I still have few questions. can you please clarify.
1. If I want to transfer ether from my account in one network to my account another network, how this can be achieved?
2. I'm trying to connect "Ethereum Consortium Member" blockchain from my web application using web3.js. I'm able to connect using RPC endpoint. and can read the data from blockchain without any authentication. If I want to do transaction(e.g: calling contract/transferring ether), I am able to understand, I need to use my private key for authentication? I found some command line scripts which connects using ssh. If I want to do the same using web.js from web application, is there any way to do it?
Microsoft Azure Blockchain Team on Fri, 01 Sep 2017 07:34:06
For #1, you cannot do this without implementing a bridge that can lock assets in one network and unlock assets in another network. Accounts a distinct in different networks and you cannot transact across blockchain networks without some kind of bridge.
For #2, I assume you are trying to use web3.js. You cannot sign transactions via web3.js but there are other options like Nethereum that allow signing of transactions using private keys and then submitting via the eth_sendRawTransaction() RPC call.
Microsoft Azure Blockchain Team