daostack / arc

Arc is an operating system for DAOs.
GNU General Public License v3.0
47 stars 25 forks source link

Design token architecture #234

Closed leviadam closed 6 years ago

leviadam commented 6 years ago

There are several standards for tokens. One can consider the ERC20, or ERC223 or ERC721

I think we do not need the 721, as it is not fungible. Regarding 223, I totally understand why we want to allow transfer and call to save the notion of approve and transferFrom. However, the fact that 223 is not backwards compatible with 20 is a problem for me.

My idea is to suggest a mixture of 20 and 223. Which will have two different functions transfer and transact, the first is the usual ERC20 transfer, and the other is like the 223 transfer standard.

Another issue is the types for string name and symbol. The standard is string. But string is very costly. We can do bytes32, and write a getter, to support backwards, but casting from bytes32 to string is quite a problem in solidity. The other option is to just break backwards compatibility.

Thought? @orenyodfat @Alonski @dev-matan-tsuberi

leviadam commented 6 years ago

I have implemented one option. See branch.

Alonski commented 6 years ago

@leviadam Have you seen this as well? https://github.com/ethereum/EIPs/issues/777

leviadam commented 6 years ago

Hi @Alonski, Thanks for researching! But this is not good for us. It is not backwards compatible with ERC20.

leviadam commented 6 years ago

OK. I have updated the branch. I have changed the function transact to transfer to be compatible with erc233. Thoughts?

Alonski commented 6 years ago

I am working on this. I'll expand on Adam's implementation over the weekend.

tsuberim commented 6 years ago

ERC223 is compatible with ERC20 (set this)

ERC223 is a superset of the ERC20 token standard. ... ERC23 tokens are backwards compatible with ERC20 tokens.

Alonski commented 6 years ago

@leviadam explained to me that even though it is meant to be backwards compatible it actually isn't

tsuberim commented 6 years ago

There's also ERC827 (which is ERC20 compatibe, at least according to zeppelin-solidity's implementation)

leviadam commented 6 years ago

This is very close to what I was thinking, maybe we can simply adopt it. Can you maybe see if some people already use it? Did it get comments in the EIP? Maybe you can test it a bit? Write a receiver that uses it?

hyperbolictonic commented 6 years ago

Not an Ark dev, but interested none the less. I think ERC721 tokens can be useful outside of their current popularity in smart contract based blockchain games.

Asset management is a fair example of this. Lets say company x buys buys 300 computers and 100 phones spread accross 6 departments.. They want to represent each of these on the chain as assets tradeable and traceable between departments. They could represent them with ERC721 tokens stored in each departments wallet. Department A sends 3 phones to department B and department B sends them a spare computer. The transaction is mirrored by admin staff in both departments via their wallets.

In this way assets of different values can be kept track of by the companies internal blockchain. Maybe I am beating down the wrong path but there is a use for non fungible tokens.

tsuberim commented 6 years ago

@hyperbolictonic Thanks for your interest! (BTW it's "Arc" and not "Ark").

I think there's definitely a use for non-fungible tokens. But the DAOToken Arc is concerned with is a token which is used to represent value and reward the participants of the DAO for their actions, and as such, it needs to be fungible. Of course any specific DAO can choose to maintain other tokens like ERC721.

(@leviadam correct me if i'm wrong about this)

hyperbolictonic commented 6 years ago

Hiya, yeah sorry I hit submit and then realised I was in the wrong place and then work beckoned. These are the hazards of researching while on your lunch break. Feel free to delete. I will check out your project though, I am now intrigued as to what I stumbled onto and by the friendliness of the community.

tsuberim commented 6 years ago

Token transfer and call scheme