DEV Community

ProgramCrafter
ProgramCrafter

Posted on

Ethereum contracts system is inferior

Let's suppose we are new to Ethereum (for instance, it is true for me) and want to write a smart contract! What should we do?

The logical thing is to start with architecture overview!

  • We see there are externally-owned and contract accounts; externally-owned can transfer ETH and tokens... wait... are tokens a thing defined by the blockchain structure? If tokens need a rework, blockchain will need to be changed?
  • Then, all accounts have nonce values; it has different meaning based on whether account is a smart contract (number of transactions sent versus number of contracts created). Also, the blockchain core somewhy takes responsibility of deduplicating transactions.
  • EVM code gets executed if the account gets a message call - are there other kinds of messages?
  • storageRoot – Sometimes known as a storage hash. A 256-bit hash of the root node of a Merkle Patricia trie that encodes the storage contents of the account (a mapping between 256-bit integer values) - contract storage is flat? What if one needed to store two mappings from user address to their data in a contract?
  • When going further, we notice variety of modifiers on functions (payable, view, pure, external...)

I believe system of TON Blockchain (The Open Network) here is much straighter:

  • TON operates on accounts as well. They are all smart contracts (contain code, balance and data).
  • Externally-owned Ethereum accounts translate to wallet contracts - special programs that keep user's public key in data and, upon reception of external messages, validate signature and perform the corresponding actions.
    • Wallet contracts can be different and even created by developers, without any need for approval from someone else.
    • Users can change signature validation method, using secp256k1 or any method they like instead of Ed25519. They may abandon asymmetric cryptography altogether!
    • Wallets can include additional functionality, like restricting destination addresses to a specific set (so you can provide someone funds for staking without ability to spend them all on NFTs) or etc.
  • Messages are blobs of data, either imported into blockchain from the outer world (they are called external) or carrying value from one contract to another internally.
  • Transaction is an update on contract state when it processes incoming message. Contracts are isolated: to interact with others, they send outgoing messages.
    • From validators' point of view, each transaction can be computed efficiently due to being related to one account only.
    • From developers' point of view, interacting with malicious contract cannot interrupt normal operation of your (compare with reentrancy concerns in Ethereum) or cause gas exhaustion.
    • From users' point of view, a malicious contract cannot do anything to their assets even if user is sending messages to it! TON, tokens (jettons) and NFTs are all kept secure.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay