Completed

Payout
4 ETH

$772.48

Remaining Balance
0 ETH

$0.00

Create a Stand Alone Meta Txn Relayer for STDB2

relayer

metatransactions

solidity

web3.js

javascript

node.js

nodejs

Description

The new version of the smart contracts which power this platform are almost ready to go live. One of the new features they enable is Meta Transactions: the ability for a relayer to submit signed messages on a user's behalf, and then submit them as new transactions for on-chain processing. For more information, see this blog post.

The new version of our smart contracts allow for the use of meta-transactions, which would mean that users aren't required to pay gas for every single action they'd like to take. For this bounty, I would like for you to create a stand-alone node js application which will receive these signed messages and submit the transactions to the main chain.

Requirements

  • It should have an API endpoint which our front-end can send POST requests to, submitting the signature and parameters of the function. For instance, for the metaFulfillBounty function, the app would receive a request which includes the signature, bounty ID, array of fulfillers, data string, and nonce, along with the address which triggered it.
  • It's only necessary to create the endpoint for the metaFulfillBounty function, the other functions may be added at a later time.
  • The app should verify the integrity of the signature, ie that the message that includes those inputs indeed was signed by the address which is sent in the request
  • The app should verify that the user hasn't sent more than one of these transactions in the last hour. If they have, the API should return an error response with a message that states that the user has submitted too many meta txns. (You will need a persistent storage solution which tracks the last time they submitted).
  • The app should function using a wallet whose keys live within the project. It is sufficient to test this functionality using the Rinkeby network.
  • The app should submit txns to the infura node endpoints, and does not need to run a node as well.

Definition of Done

When you have completed this project, please create a private repo which hosts the project, and invite me (@mbeylin) to it so I may review the code and make suggestions.

Things to Note

This is a big bounty, which may require some iteration as we scope out the solution and test it. Please be prepared to be communicative with me, and I am very happy to help you along the way.

Please do not apply for this bounty unless you truly think you're capable of building it.

Privatebounty

Private bounties require that users apply to fulfill the bounty. Once you are approved by the issuer, you may submit a fulfillment for this bounty.

10 daysremaining
Expertdifficulty
5 revisionsexpected

Applicants

6

Submissions

1

Comments

0

Submissions are private

The submissions for this bounty have been set to private.