ICON 2.0 SCORE fee policy update draft proposal

Hi everyone.

There are two major problems in ICON1 that must be solved at the launch of ICON 2.0.

  1. Runtime step costing
  2. Deployment step costing

We propose to apply the following modification in the step costing calculation. Those changes are still a work in progress, but we want to the developer community feedback on this as soon as possible.

Please let us know you thoughts about those changes. We would like to submit a network proposal by August 2nd.


GET

Introduce Step cost for ‘get’ along with the concept of ‘defaultGet’.

  • Costget() = DEFAULT_GET + sizeof() * GET
  • GET should be non-zero value (we need to decide the proper number of this)

DEFAULT_GET is needed as many MPT node traversals (i.e. Disk I/O) should be involved to reach the leaf node that contains .

SET

Also introduce the ‘defaultSet’ concept.

  • Costset(, ) = DEFAULT_SET + sizeof() * SET
  • Adding a new key/value entry is more expensive operation than updating an already existing key/value entry because the former increases overall indexing data size.

REPLACE

Also introduce the ‘defaultReplace’ concept.

  • Costreplace(, , )
    = DEFAULT_REPLACE + sizeof() * SET + sizeof() * DELETE

  • DEFAULT_REPLACE = (DEFAULT_SET + DEFAULT_DELETE) / 2

  • Apply different Step costing for and values in order to prevent illegal Step earning

DELETE

Also introduce the ‘defaultDelete’ concept.

  • Costdelete() = DEFAULT_DELETE + sizeof() * DELETE

EVENTLOG

Also introduce the ‘defaultEvent’ concept.

Costevent(,) = DEFAULT_EVENTLOG + sizeof(<indexed|data>) * EVENTLOG

Summary


CONTRACTUPDATE

Adjust to have the same value as ‘contractInstall’. There is no longer need to differentiate between install and update. Rather, updating the existing SCOREs are preferable on ICON2 since it does not increase a leaf node of account MPT.

CONTRACTSET

Reduce the value to 23,000 from 30,000. Together with the change ‘contractUpdate’ above, this will make the maximum code size around 64 KB for both Install and Update.


Thank you.

4 Likes

Is it a positive or negative cost for delete operation?

DELETE cost is negative. This is same as the current step cost.

1 Like

How does it handle the exponential calculations? Is there any cost for exponential calculation or will it continue until the transaction goes over the specified run time?

Currently we don’t have any consideration about the exponential calculations. The proposal mainly focuses on StateDB get/set operations as ICON 2.0 manages StateDB differently.

1 Like

Hi everyone,

We are currently undergoing a change in step cost designing, and we want to show you guys a breakdown of the costs. Please note that this is what we are initially setting, and therefore things can change later via network proposal.

Please take a look at this sheet to understand the breakdown: Step Used Comparison

A few things to note:

  1. We are lowering the step cost related to Deploy & Update
  2. Overall increase in run-time step costs
  3. We are charging 25 for each Database get (=read).

The rationale behind charging 25 for Database get (=read) is based on preventing abusing smart contracts; at the moment the most commonly occurring abuse cases are happening here. It’s causing our network to slow down and increase in our overhead, therefore we want to mitigate this by charging a fair fee for Database get (=read).

Hope this change is understandable and please let us know if you have any other thoughts.

Thank you.

3 Likes

You can now test the new fee policy on Berlin testnet!
https://icondev.io/introduction/the-icon-network/testnet#berlin

Faucets are not yet up to date, so please DM me on Telegram @nymkappa if you need some test ICX on Berlin testnet.

Thank you.

1 Like