Replies: 10 comments 21 replies
-
Great proposal and I generally support the proposal, it will significantly save space and provide flexibility in terms of changing the private/public keys. A few points which may need further clarification:
Other suggestions:
|
Beta Was this translation helpful? Give feedback.
-
I like the proposal because accounts are more "normal" vocabulary for web and can help mass adoption even though I have multiple questions/remarks:
I don't really understand. You will need to have another account creating your before sending funds to you ? So for example if I want to buy on a CEX I will have two options : 1 already have an account send coins to me, 2 create my account and send money to me ?
I'm not sure about that. Following this website Ethereum has currently 190M addresses created. If, as you said, there is storage costs :
This can create a lot of collision in operations in my mind. If we have 2 accounts that are created in the same time on two nodes they will have the same number and it will make one fail ? Also if the first node know more operations and then give a higher number to the account created on the second node this can cause collision ? Maybe I misunderstood something in speculative execution but in my mind collision can happens a lot.
Since we are spending most of our time here don't you think it will be a too big overload ?
If there is no owner the account can't be delete so the MAS for space ledger is lost forever right ?
I think in use cases we can add that it will be possible on a explorer to know that an address has no owner and therefore will be never accessed (to the funds or the bytecode) it could be useful information for safety for bridges or for burn address it will be like unhackable bridge because nobody has permissions on it. Thanks for writing this it's a good idea ! |
Beta Was this translation helpful? Give feedback.
-
Oh yeah my bad was thinking of 2 billions which is for Ok with all your answers. Thank you ! |
Beta Was this translation helpful? Give feedback.
-
Just an idea, reacting to this: "having an "address" short enough to remember by heart" => I'm pretty sure people will not remember but the most trivial numbers (still hard for most people to remember more than their own phone number!). I think the advent of a DNS service for account names will be pretty much inevitable. Since looking up this DNS in the ledger will be done frequently, why not simply taking a hash of the account name as a key? It will make the account creation process a bit more complex and slow (to avoid collisions), but it's rare so it doesn't matter that much. Then, people would be able to register very short account names at the beginning, similar to user logins, with no problem remembering it (it would most likely be their name + initials, in most of the cases). |
Beta Was this translation helpful? Give feedback.
-
I see two points in your proposal: 1- an opportunity for reduction of transaction size using integers instead of hashes, at the cost of a similar increase in the ledger size with pubkeys, For the first point: I think why not, let's study the benefits / costs For the second point: I think all the described use cases can be done at the smart contract level, so we should let them at the smart contract level for more safety, simplicity, generality and maintenance of the core. Otherwise why not adding ERC20 to the core ? NFTs ? etc. So a good question is how we set the limit of core features, considering the improvements in perfomance and user experience, and the costs in safety, simplicity, generality, maintenance. I agree that for more performance, we added transactions at the core level instead of letting them in smart contracts like Ethereum, but I really think this is one of the main use cases of blockchain (to transfer value in the native token), with maybe half of the operation volume in the future, and a big performance improvement. |
Beta Was this translation helpful? Give feedback.
-
As I understand the main advantages are to 1) shorten the address format in transactions for optimization and ease of use/extra possibilities and 2) implement certain functions natively that smart-contracts would otherwise carry out (multisig, timelocks). Some thoughts:
—> Are there any technical objections against having huge lists of public keys connected to an account number?
—> Can limitations/rights be set on pubkeys for specific functions? Sort of like different admin rights for different public keys
(1.) Adjusting the public keys linked to an account Would be good if 1 is cheaper than 2 and 3 combined.
Not sure what security considerations are here. |
Beta Was this translation helpful? Give feedback.
-
Updated with chosen-account-name |
Beta Was this translation helpful? Give feedback.
-
I like the idea. And I think it makes sense to implement this in the core of the protocol since we want user to be able to browser decentralized websites. One thing that I don't like with this proposition is that once I buy a name domain, I hold it forever. It will probably lead to people buying "interesting" name domains right from the start of the network to make a profit later. Also, if someone buys "interesting" name domains and then forget his private key then those domains are lost forever. In the case of ENS name domains are rented so it will eventually become available again. |
Beta Was this translation helpful? Give feedback.
-
TODO: choose an economic model to unlock this discussion.
|
Beta Was this translation helpful? Give feedback.
-
Alternative: #3454 |
Beta Was this translation helpful? Give feedback.
-
RFC: Native DNS
Intro
Currently, because the identifier of an account in the ledger (the Address) is tightly linked to its authentication method (the private/public key), we have several limitations:
This proposal consists in separating the concept of account from the concept of authentication by having accounts in the ledger be identified by a user-chosen string, and storing the corresponding public key (if any) as part of their ledger entry.
Another effect of this proposal is to encourage creating as few accounts per person as possible and keeping them.
Account format
Address format
Addresses are of two possible variants:
20sdsqdd89SDQ9SQ9D8DSQdd.massa
(at least 32 bytes)myaddress.massa
so that it matches the decentralized web domain name system.Ledger entry
In the ledger, an entry is identified by address and associated to:
Optional public key in each ledger entry
The public keys of an account can be:
Creating a new account
CreateAccount operation
To create a new account, an existing account needs to emit the
CreateAccount
operation with the following fields:If the target address already exists in the ledger, the call fails.
Smart contract ABI
We also allow smart contracts to create an account through a
create_account
ABI:Note that if
address
is None, an automatically generated address is assigned.Also note that this ABI can only create accounts that don't have an associated public key.
As of before, the execution context retains write access to the created account until its end.
Costs
Creating an account consumes a constant amount of gas, and storage costs linked to storing a new account in the ledger can also be accounted for.
Changing the auth parameters of an account
The optional public key can be changed by the owner of the account, or by smart contracts with temporary write access to it.
Note that to prevent fee funds disappearance, this operation simply marks the account for deferred update. The account is effectively updated 1 period later.
SetAccountAuth operation
This operation allows changing the public key list of an account and has the fields:
Smart contract ABI
We also allow smart contracts to change account public keys through a
set_account_auth
ABI:Deleting an account
Accounts can be deleted by their owner(s) or by smart contracts with write access to them.
Note that to prevent fee funds disappearance, this operation simply marks the account for deferred update. The account is effectively deleted 1 period later.
DeleteAccount operation
This operation allows marking an an account for deletion and has the fields:
When an account is effectively deleted, the "transfer account address" is credited with the remaining coins if it exists, as well as the reimbursed coins coming from the freed ledger space.
Smart contract ABI
We also allow smart contracts to mark accounts they have write access to for deletion using the
delete_account
ABI:Transaction format
The format of normal transactions changes. Here are the fields it would have:
Implications on the proof-of-stake system
Rolls ledger
The rolls ledger will be indexed by address. Its size does not change.
Staker accounts must be locked
While an account is staking, this account existence and auth are locked: no deletion, and no auth changes are allowed during the whole staking + lock time.
This ensures that:
Other implications on the architecture
Sharding
Operation sharding can be achieved by taking
first_5_bits(hash(address))
as the thread index.Importance of finality
Until finality, the account is speculative.
So it is a good practice to wait for finality to ensure your newly created account is indeed yours.
Use cases
Beta Was this translation helpful? Give feedback.
All reactions