I thought this might solve a trust problem. I have considered the Dice example in the tutorial.

  1. If I'm the host (Dice) and I have the owner and active permission, then I'm able to transfer all of those margins from Alice and Bob without their permission.

    2.If I create a multisig Dice account and make the only possible way to transfer funds is that 3 parties(me, Alice, Bob) all agree. Assume Bob have lost most his money, then when Alice want to withdraw, he may simply ignore the request.

    3.If I set the threshold to 2, Alice can still doubt that I mignt collude with Bob to steal her margin.

The only solution I came up with is that Dice run independently by setting the owner of the 'Dice' account as 'eosio'. And when some event is triggered, say time limit is touched or both Alice and Bob withdrawed their funds, the contract will give the permissions back to me.

I think this will make everybody happy.

Am I thinking too much, and there is just an easy way to solve this?


Update 8-7-18:

I think you should also look into the concept of an Oracle. Ducatur's white paper explains this well:

"DUCATUR is a framework that allows you to create oracles for reliable data exchange between the interacting participants on the blockchain. That would be a system in which you always trust the received data and which provides a reliable connection between the blockchain and external information."



There are multiple levels in which you could "give the ownership of the contract's account to others".

  • The first level would be creating a new owner permission level and giving that to others. This means that the new owner would have full rights over this contract. I doubt this is what you want.

  • Another way of doing this would be with multi signature over the owner permission level. This would mean that you could assign how much power each multi sig party has and what the threshold is to perform an action like resetting the owner private key.

  • A third example of this could be creating an action in the contract with requires a specific permission level like on steemit. That permission level could then also use multi sig.

You can read more about accounts, permission levels, and multi signature capabilities here.

  • Well, actually the first case maybe what I want. For example, I have a contract of which the only purpose is to transfer full rights of the account the contract is running on to a given account in a specified time. And then I create a account , say 'a', set the contract on 'a', set 'b' as the second owner and give the control of 'a' to 'eosio'. By that way, the contract will run independently for a while, and give back the rights to 'b' after some specified time. – Jiajie Ying Jul 25 '18 at 13:18
  • I think I get what you're saying. Since you created the contract, you will always retain the rights to override the contract to add whatever actions you like. To solve this, you are looking for a way of locking yourself out temporarily (giving eosio the permission of owner) so as to not be accused of collusion or modifying the contract to benefit one party and/or yourself. After a period of time you would like the permission reassigned to you so that you can still make updates/modifications. I think the answer is ultimately the inclusion and enforcement of ricardian contracts. – Nat Jul 25 '18 at 15:03
  • That's exactly what I'm trying to do :). I will take a close look at ricardian contracts, thanks a lot! – Jiajie Ying Jul 25 '18 at 15:56

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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