Let's say peer A has deployed some contract and releases the ABI to peer B to be the part of the network as peer. If B wants to modify the contract or B is not agree with the contract then what he can do? Can he deny the contract some way in Ethereum so that peer A can be updated about that decision?

  • 1
    This question is complex, because I think you are a bit confused about smart contracts and the transactions and how it works. – Gawey Jun 6 '17 at 9:45

A "contract" in the real world is usually between multiple people, but in the Ethereum blockchain, a (smart) contract is published by one account, so at the most simple level is only from one person.

A simple contract in Ethereum only proves that Person A said something, not necessarily that the thing is true (If person B doesn't think it's true, there's nothing they can do to prevent A saying it).

But contracts in Ethereum can save data, and therefore can have different states. In the real world, a contract is drafted ("new" state), and if you agree, you sign it ("gathering signatures"), and once everyone has signed, it's active, and it may have clauses where it can be cancelled/voided. A contract in Ethereum can do the same, keeping track of who has signed a contract, agreeing to it's content, and whether it's cancelled or not. In that case, B can just not sign the contract, and it never becomes active. But the contract would have to be written to have that flexibility/logic built-in.

If there's a collaboration between two parties, ideally they'd communicate (not through Ethereum) about what the contract should be, and perhaps test it on the testnet before deploying it to the main blockchain. If one of the parties thinks there's something wrong with the contract once it's deployed, there is no way to remove a contract once it's deployed, unless the contract itself has logic that can do it (referred to as a suicide condition).

|improve this answer|||||

There's definitely a misconception in this question about how a contract gets deployed.

The nodes in the system (your 'A' and 'B') do not decide if they 'like' or 'agree' with a contract. Someone deploys the contract, and as long as the deploying address has enough gas to pay for the deployment, the contract gets added to the blockchain. From then on, if a transaction is sent against that contract, every node runs that transaction.

Nor can B 'modify the contract' or 'not agree' with it. Either the deploying address has enough gas or it doesn't. If it does, the contract is deployed. Subsequent transactions sent to that contract are processed. The nodes do not discriminate at all about (nor do they even know) what the contracts do.

|improve this answer|||||
  • Let's say Peer A created a contract and deployed it. Peer B will get the contract ABI from A. But ideally peer B are not able to see real code or implementation. Without seeing it how he will be going to accept this contract.Please clarify...... – Budhaditya Dutta Jun 14 '17 at 9:12

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