Neo: Remove base58 address, scripthash is the address

Created on 15 Mar 2020  路  9Comments  路  Source: neo-project/neo

Summary or problem description

  • Scripthash and Address are equivalent and can be converted to each other.
  • But users often only know privatekey, address and developers often only know privateKey, publicKey, address.
  • Most people don't write their addresses to paper, base58 addresses don't make much difference.
  • And we are about to add NNS contract, we can bind address with a readable alias name.

Do you have any solution you want to propose?
Therefore, we recommend to remove base58 address, scripthash is the address.

Neo Version

  • Neo 3

Where in the software does this update applies to?

  • CLI
  • Plugins
  • RPC (HTTP)
  • SDK
  • Other:
discussion

Most helpful comment

Thanks for summoning me here brother @vncoelho ... The address base58 structure is the safest thing we have to prevent malformed addresses and bad transfers. For example, we can easily read an address on QR-code and transfer safely, but with scripthash one would need to fully trust the QR-code security itself, which will probably be not enough. Personally, I would never do a transfer directly based on scripthash, because even a basic mistake (byte ordering, big vs little) would cause catastrophic damage. Finally, address prefixing scheme allows users to recognize it by common letters, and it even possible to recognize addresses from different blockchains (such as Bitcoin) just by looking at it. Please, let's keep it, or even strengthen its applicability (maybe allowing contracts to handle them natively, although slightly expensive), but never remove it.

All 9 comments

It's good to me, we have public key, script hash, and base58 address... we don't need 3 ways for the same thing

What do you think @neo-project/core ?

I think we can use scripthash for smart contracts, but base58 for address is very useful for user as it includes checksum to avoid mistakes, so not very sure.

I'd like only one address type, namely scripthash, which is convenient for users and developers.

In etherscan.io, user can even query in contract by address, eg: USDT contract. But for our users, it will be very confused, they don't know what scripthash is.

As @belane said, the checksum add a very important layer

Agree with @belane.

Okay, we'll close related PR. But for me, I don't think checksum is important which is rarely used, most people use copy and paste.

@igormcoelho

Thanks for summoning me here brother @vncoelho ... The address base58 structure is the safest thing we have to prevent malformed addresses and bad transfers. For example, we can easily read an address on QR-code and transfer safely, but with scripthash one would need to fully trust the QR-code security itself, which will probably be not enough. Personally, I would never do a transfer directly based on scripthash, because even a basic mistake (byte ordering, big vs little) would cause catastrophic damage. Finally, address prefixing scheme allows users to recognize it by common letters, and it even possible to recognize addresses from different blockchains (such as Bitcoin) just by looking at it. Please, let's keep it, or even strengthen its applicability (maybe allowing contracts to handle them natively, although slightly expensive), but never remove it.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

igormcoelho picture igormcoelho  路  34Comments

lock9 picture lock9  路  62Comments

deanpress picture deanpress  路  39Comments

SueNEO picture SueNEO  路  30Comments

lock9 picture lock9  路  35Comments