No funded issue found.
Check out the Issue Explorer
Be the OSS Funding you wish to see in the world.
Looking to fund some work? You can submit a new Funded Issue here .
Time left
Opened
Issue Type
Workers Auto Approve
Project Type
Time Commitment
Experience Level
Permissions
Accepted
Reserved For
Create an RLP encoding library
omisego
Python, Makefile
## Issue Type
```
[ ] bug report
[x] feature request
```
## Current Behavior
We currently differ from the Plasma MVP spec by creating a simplified `deposit` function at the cost of a more complicated `withdrawDeposit` addition. This should be removed, but requires that we be able to encode transactions on-chain.
## Suggested Fix
### Solidity RLP Encoding Library
#### Description
RLP (Recursive Length Prefix) is a method for encoding arbitrarily nested arrays of binary data. You can learn more about RLP encoding [here](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP).
We’re using RLP to decode transactions for our [Plasma MVP](https://github.com/omisego/plasma-mvp) implementation. However, we’re also maintaining a simplified Plasma contract (as a learning resource) that could be made even simpler with an *RLP encoding library* written in Solidity.
#### Requirements
We’re looking for a relatively simple RLP encoding library. It doesn’t need to be hyper-optimized, but optimizations are always appreciated! You should look to the Ethereum [RLP wiki page](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP) for a detailed spec of how RLP works.
RLP operates on arbitrary binary data. However, we’d like to be able to RLP encode typed objects in Solidity. Therefore, the contract should expose a few key functions:
- `encodeBytes(bytes memory self) internal pure returns (bytes)`
- `encodeAddress(address self) internal pure returns (bytes)`
- `encodeUint(uint self) internal pure returns (bytes)`
- `encodeInt(int self) internal pure returns (bytes)`
- `encodeBool(bool self) internal pure returns (bytes)`
- `encodeList(bytes[] memory self) internal pure returns (bytes)`
Note that `encodeList` does not need to recursively encode the contents of the list (you can assume they’re already encoded).
## Motivation for Change
We want to match the original Plasma MVP specification, and therefore need to remove `withdrawDeposit`.
Setup your profile
Tell us a little about you:
Skills
No results found for [[search]] .
Type to search skills..
Bio Required
[[totalcharacter]] / 240
Are you currently looking for work?
[[ option.string ]]
Next
Setup your profile
Our tools are based on the principles of earn (💰), learn (📖), and meet (💬).
Select the ones you are interested in. You can change it later in your settings.
I'm also an organization manager looking for a great community.
Back
Next
Save
Enable your organization profile
Gitcoin products can help grow community around your brand. Create your tribe, events, and incentivize your community with bounties. Announce new and upcoming events using townsquare. Find top-quality hackers and fund them to work with you on a grant.
These are the organizations you own. If you don't see your organization here please be sure that information is public on your GitHub profile. Gitcoin will sync this information for you.
Select the products you are interested in:
Out of the box you will receive Tribes Lite for your organization. Please provide us with a contact email:
Email
Back
Save