Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BURNT_FUNDS_ACTOR explanation #21

Closed
snissn opened this issue Dec 17, 2023 · 7 comments
Closed

BURNT_FUNDS_ACTOR explanation #21

snissn opened this issue Dec 17, 2023 · 7 comments

Comments

@snissn
Copy link
Contributor

snissn commented Dec 17, 2023

address constant BURNT_FUNDS_ACTOR = address(99);

is address(99) special or just chosen to be any other burn address? Why not 0?

Interpretation of 'BURNT_FUNDS_ACTOR' as an address constant (address(99)) requires explanation. Does this address signify a special use case within the IPC context?

Copy link

linear bot commented Dec 17, 2023

@snissn
Copy link
Contributor Author

snissn commented Dec 19, 2023

There's other discussion about the value of using 0x0 as the explicit burn address
consensus-shipyard/ipc-solidity-actors#313

with this being worth reading

https://forum.openzeppelin.com/t/removing-address-0x0-checks-from-openzeppelin-contracts/2222/2

I think that it's important to consider this coding standard - use 0x0 as the explicit burn address and create specific functions for burning.

The idea is to have a safeTransfer method that reverts if the 0x0 burn address used
and a safeBurn method that is the only accepted method to transfer to the 0x0 burn address

@raulk
Copy link
Contributor

raulk commented Dec 19, 2023

@aakoshh @adlrocha any reason for this choice? Note that this makes the burn address clash with the Ethereum precompile designated address range (0x01..0xff), which weakens forward compatibility. Why can't this be the nil address (0x00)?

@adlrocha
Copy link
Contributor

I think we should use the zero address for this. This is another of the "blunders" coming from the close to literal translation of the native actors implementation of IPC to Solidity that we got from the team that did it.

@jsoares jsoares transferred this issue from consensus-shipyard/ipc-solidity-actors Dec 19, 2023
@snissn
Copy link
Contributor Author

snissn commented Dec 20, 2023

Another benefit of using the 0x0 address is that there's standardized acceptance about how to measure the supply of a token by discounting anything owned by the 0x0 burn account (and the 0x29 etc burn account)

@aakoshh
Copy link
Contributor

aakoshh commented Dec 20, 2023

The IDs are coming from ref-fvm. The 0x0 address became the system actor ID.

@aakoshh
Copy link
Contributor

aakoshh commented Dec 20, 2023

There were apparently other expectations regarding 0x0 in #166 which lead to consensus-shipyard/fendermint#409

@jsoares jsoares closed this as not planned Won't fix, can't repro, duplicate, stale Mar 13, 2024
maciejwitowski pushed a commit that referenced this issue May 28, 2024
Callout that automatic restarts should be disabled when reaching halting height
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants