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

RFP Proposal: FileCoin + EVM + Uniswap #175

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions rfp-proposals/rfp-proposal-FileEvm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# RFP Proposal: `FileCoin Evm`

**Name of Project:** FileCoin Evm

**Proposal Category:** `category:core-dev`

**Proposer:** [@jiyilanzhou](https://github.com/jiyilanzhou/)

**Do you agree to open source all work you do on behalf of this RFP and dual-license under MIT and APACHE2 licenses?:** Yes

# Project Description

Filecoin is a great design, but browsing the Lotus code reveals that there are no virtual machines in the engineering implementation, and the verification of transactions is called through the system contract, not a Turing complete system.

Currently, the DeFi on Ethereum is hot, and users holding Filecoin are not allowed to participate in DeFi. I would like to introduce an EVM virtual machine on the basis of Lotus, because there would be something on the market that would involve the ecology of Filecoin, which would involve a large number of programmers of using solidity. So we can both store and use things like UNiswap and YFI

If EVM can be successfully implemented in Filecoin, filecoin ecology can be enriched. It is well known that Filecoin is a big ecology, and one project is still too few. If EVM is migrated, such as a number of stabilization coins, UNiswap, YFI, Sushiswap and USDT, DEX and DeFi will be migrated. More and more people will use and study Filecoin, which will greatly promote the promotion of Filecoin, This can act as a filecoin two-layer network.

The main implementation is to change the sector encapsulation verification and storage proof into EVM system contract, which can run solidy code or call the existing contract of filecoin. this is my update [vm update patch](https://github.com/truechain/truechain-engineering-code/commit/96ee22cfeb42f8afd29939276380d76fc29b8f8c).


## Deliverables

it needs to support sector encapsulation verification, space-time proof and normal call of corresponding system contract in spatial proof such as StoragePowerActor StorageMinerActor or PaymentChannelActor total 11 system contract, and support normal deployment of uniswap in local test network。So I need to do the following
* add eth rpc support transaction
* convert filecoin native transactions to ETH transactions
* fix evm state trie
* fix gas calculation
* add filecoin system contract
* support evm
* depoly uniswap
* support filecoin mine

we all have 2 or 3 years of public chain development experience and are able to implement this function on lotus.
## Development Roadmap

| No. | Milestone | Funding | Estimated Timeframe |
| --- | ------------------------------------------------------------------------------------------------------ | ------- | ------------------- |
| 1 | tidy 11 system contract. calculate gas used, according method convert abi method define, collate system contracts for EVM support | \$12,000 | 2 week |
| 2 | add evm opcode gas used evm rutime environment, fix account state triedb read write | \$6,000 | 1 week |
| 3 | fix StoragePowerActor,StorageMinerActor call to evm, can normal execute, add evm transaction test | \$5,000 | 1 week |
| 4 | modify file native transactions to eth transactions, add transaction test | \$4,000 | 1 weeks |
| 5 | add eth rpc support transaction, add rpc method, support metamask send transaction | \$5,000 | 1 week |
| 6 | depoly uniswap, add liquidity support token swap | \$5,000 | 1 weeks |
| 7 | test filecoin mine and add features test code | \$5,000 | 1 week |

The three public chain core developments will divide the work among the modules, There are mainly evm, system contract, filecoin Actor, transaction, rpc signer, miner.

## Total Budget Requested


Total: $42000

Although the logic is simple, the amount of code is large and requires a special knowledge of Ethereum to do the job.

## Maintenance and Upgrade Plans

If we can get support, my colleagues and I are willing to devote ourselves to the development and support the project all the time.

# Team
## Contact Info
Email: [[email protected]]([email protected])
Email: [[email protected]]([email protected])

## Team Members

- jiyilanzhou: [github](https://github.com/wbqlove)
- wbqlove: [github](https://github.com/wbqlove)
- iceming123 [github](https://github.com/iceming123)

## Team Website

[https://www.truechain.pro/](https://www.truechain.pro/) --we are truechain core developer.

## Relevant Experience

In 2018, we implemented the hybrid consensus with golang, and used the pow + pbft dual chain blockchain system. POW mining provides a decentralized verifier, and selects the members of the pbft Committee through the election algorithm, and the pbft is responsible for executing the transaction, which improves the TPS. When the main network is launched in 2019, the pbft consensus of tendermint is used. In March 2020, the consensus will be changed to POW + dpos, and EVM system contract will be used to realize the election of verifier and award. At the beginning of this year, we started to design cross chain, wrote a benchmark chain with rust, used rust libp2p, and used VRF and pure POS to implement verifier out of block, which has not been completed yet.

jiyilanzhou: Golang and Rust development engineer, has more than seven years development experience, Proficient in Ethereum devpp2p network, node discovery, encrypted connection rlpx, implement fast and snail chain synchronise network protocol and a signer cli tool with rpc and hdwallet, a impawn cli with system contract call. in Map protocol implement libp2p with rust, Use libp2p send gossip message and data synchronization of the underlying point-to-point protocol is realized manually. Understand the EVM execution logic, and have a deep understanding of EVM testing and debugging. Participate in the development of three blockchain projects.
This is [system contract](https://github.com/truechain/truechain-engineering-code/blob/master/core/vm/staking.go#L57) implement in evm.

iceming123 : Golang development engineer, has more than 10 years of C/C ++ development experience, responsible for large projects, strong learning ability, has a complete real-time database products and digital currency trading platform product project experience,Is the architect of The Truechain, responsible for the Consensus module, which achieved the TenderMint Consensus on Truechain, the original DPOS consensus election and awards in the first half of this year.

wbqlove: Golang and Java development engineer, has more 10 seven years development experience, Proficient in Web and wallet development, Once implemented a million - level dating chat app. Have a deep understanding of blockchain consensus, proficient in Android mobile phone wallet. Led a payment stabilization program

## Team code repositories
* Public chain [truechain](https://github.com/truechain/truechain-engineering-code)
* An alliance chain project participated in [taiyuechain](https://github.com/taiyuechain/taiyuechain)
* A rust pos blockchain [marcopolo](https://github.com/marcopoloprotocol/marcopolo)
* This is [depoly uniswap](https://github.com/D-CDC/go-uniswap)

## Additional Information
We expect any developer who is interested in filecoin evm project, can join us and build efficient DeFi ecosystem and migrate Ethereum Dapp to Filecoin.