6

From what I understand by this wiki on Transaction processing, quorum-nodes which are privy to a private Tx, will update their private stateDbs.

My question is, can two different accounts access single node and perform private transactions with another account in a different node?
For example,
Node-A will be accessed by two accounts A1,A2
Node-B will be accessed by two accounts B1,B2
Now, can A1 perform a private TX with B1 resulting in updation of private-state-A1 and private-state-B1?

I feel I've misunderstood something here but I'm not sure what it is. I'm quite confused.

Please help. Thank you.

1 Answer 1

5

You'll have:

  • Node A with public state and private state A listening for A1 and A2.
  • Node B with public state and private state B listening for B1 and B2.

A1 will send a privateFor transaction to: B1. Since it's private, it will hand the transaction to the transaction manager. The transaction manager will know that Node B listens for B1 and will hand it to the enclave for encryption. A signed message comes back. Transaction manager sends the signed message to node B which decrypts, acks and notes the hash of the transaction. Node A puts the hash of the transaction in the public state (a private transaction hash).

Now, node A and node B both have knowledge of a private transaction from A1 to B1 but it hasn't been included in the chain. They wait for the mined transaction with the transaction hash (that only they know about). This is to establish the private transaction's place in the overall network transaction order.

When they see the hash of the privateFor: transaction they know about, they run the transaction and update their respective private states. There's one private state per node, and they are not expected to be uniform between nodes, because they have knowledge of different private transactions.

It is probably better to think about a private contract state rather than A1 talking to B1 - more like A1 deploys contract A1B1 privateFor [A1, B1]. It would start with a contract deployment transaction privateFor A1 and B1. A1 and B1 would each send transactions to the private contract which has an internal private state. This lays out a partition of subject-matter that A1 and B1 will have knowledge of, and, by extension, Node A and Node B.

In my understanding, there is a strong assurance that Node C has no knowledge of that contract or its state.

Hope it helps.

2
  • I still have some catching up to do myself. But your explanation gives better perspective. Thank you. So, there's only one private state per node even though it's accessed by multiple nodes. This would mean that, in the above example, A2 and B2 will have access to contracts and transactions which are privateFor A1 and B1, right?
    – dnn
    Commented Mar 12, 2018 at 11:50
  • As I understand it, one private state per node. Commented Mar 12, 2018 at 22:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.