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

Universal addressing spec and foreign runtime support #690

Closed
Tracked by #936
raulk opened this issue Aug 8, 2022 · 1 comment
Closed
Tracked by #936

Universal addressing spec and foreign runtime support #690

raulk opened this issue Aug 8, 2022 · 1 comment

Comments

@raulk
Copy link
Member

raulk commented Aug 8, 2022

Motivation

Foreign runtimes (e.g. EVM) make assumptions about the addressing scheme. Furthermore, existing workloads deployed on those runtimes (e.g. smart contracts on Ethereum) make further assumptions, as is the case of Solidity smart contracts.

All of this is aggravated by the fact that Filecoin lacks a stable, universal address (universal = can refer to any actor). ID addresses are universal but not stable (they are sensitive to reorgs). f1 and f3 addresses are stable but not universal. f2 is semi-stable because the current address generation algorithm is stateful (unlike something like CREATE2).

We need to introduce a stable, universal address and a scheme for using that address type in foreign runtimes, notably the EVM first.

Constraints

As postulated by the author (@raulk).

  • Zero ambiguity and full compatibility with existing tools. In the immediate horizon, our goal is to interoperate seamlessly with Ethereum wallets like MetaMask. These wallets keep custody of keys and compute receiving addresses using Ethereum's scheme. Users will expect that the address presented there is usable as-is in Filecoin. It would be inadmissible for users to send to the address only to have funds locked because of a mismatch in the protocol's address validation scheme.
  • Ideally, registry-less. We have the opportunity here to provide a multi-chain addressing scheme, potentially even under the multiformats umbrella. This could be a specialised version of multihash, or something entirely new. The basic outline would be: given some cryptographic input (e.g. public key or contract creation parameters) and some chain-specific function (e.g. Ethereum = keccak-256 with 160 right truncation), produce an address.
  • Compatible with the upcoming Undifferentiated Actor type.
  • Compatible with actor/contract address generation schemes.
@karim-agha
Copy link
Contributor

#694

@maciejwitowski maciejwitowski removed this from the M2.1 Selenium (r2) milestone Aug 30, 2022
@maciejwitowski maciejwitowski added this to the M2.1 (r5) Obsidian milestone Oct 7, 2022
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

4 participants