Git Product home page Git Product logo

human-protocol's People

Contributors

alidzm avatar ansaqib avatar azizbardi avatar bartoszsolkabd avatar basit511 avatar dependabot[bot] avatar dzeranov avatar eugenvoronov avatar flopez7 avatar foufrix avatar github-actions[bot] avatar hrik2001 avatar ivhus avatar jalal-1 avatar leetdev avatar leric7 avatar m00n620 avatar micdebblocky avatar mrhouzlane avatar pared-imi avatar payvint avatar portuu3 avatar posix4e avatar rafalbielickiim avatar sarthakvijayvergiya avatar simulacrum6 avatar snyk-bot avatar spiritbroski avatar vladned avatar zhiltsov-max avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

human-protocol's Issues

Merge eth-kvstore repo and add basic privacy

  • work with design to add a separate page/tab in the dashboard code just for encrypting and decrypting messages feature.
  • work with design to incorporate the kvstore metadata to be browsable in some ways on the dashboard. So we can easily look up information on each address
  • Being able to click on a escrow job on the dashboard, and actually look at encrypted results using the kvstore and your private keys
  • kvstore name aliases in dashboard
  • Closes humanprotocol/fortune#9

Please add a python test like


diff --git a/test/hmt_escrow/test_eth_bridge.py b/test/hmt_escrow/test_eth_bridge.py
index 5fa0df0..f908c3a 100644
--- a/test/hmt_escrow/test_eth_bridge.py
+++ b/test/hmt_escrow/test_eth_bridge.py
@@ -45,16 +45,6 @@ class EthBridgeTestCase(unittest.TestCase):
     def test_get_factory(self):
         self.assertIsNotNone(get_factory(self.job.factory_contract.address))
 
-    def test_get_pub_key_from_address(self):
-        with self.assertRaises(ValueError):
-            get_pub_key_from_addr("badaddress")
-        os.environ["GAS_PAYER"] = self.credentials["gas_payer"]
-        os.environ["GAS_PAYER_PRIV"] = self.credentials["gas_payer_priv"]
-        set_pub_key_at_addr(self.rep_oracle_pub_key)
-        self.assertEqual(
-            get_pub_key_from_addr(os.environ["GAS_PAYER"]), self.rep_oracle_pub_key
-        )
-
     def test_set_pub_key_at_address(self):
         os.environ["GAS_PAYER"] = self.credentials["gas_payer"]
         os.environ["GAS_PAYER_PRIV"] = self.credentials["gas_payer_priv"]

Fortune: Improve Reputation and Recording Oracles acceptance criteria

Reputation and Recording oracles should have acceptance criteria to participate in the job process

  1. Oracle should not work with Escrows, where his stake is less than REP_ORACLE_STAKE_BOUNDARY(should be configurable via env. variables)
  2. Oracle should not work with Escrows where Escrow is not implementing the Escrow.sol interface. Also, Escrow should not be in a finished state(Canceled, Completed, or Paid)
  3. Oracle should work with Escrows which are in Pending status

Recording oracle also should validate the incoming manifest(JSON file)

Add Celo and become the official maintainer for this network integration feature

Human Protocol supports arbitrary EVM networks but there's a bit of work to do to make a network first class and make sure that it works. All of our EVM network launches are payable in ETH and you can gain a yearly bonus by being our network sponsor. If you need support please join tech-discussions on the human protocol discord linked on hmt.ai.

Steps to receive a bounty

  • Suggest and have us authorize your bridging strategy. After all we need to bridge HMT over to the new network. Usually, we need to use an erc20-compatible approach.
  • Deploy the contracts on testnet
  • Verify the contracts on the testnet block scanner
  • Make sure that everything is working on testnet
  • Add the new deployed contracts addresses to this list
  • Transfer ownership of testnet contracts
  • Launch a working app on the network. The easiest one to get going is our example fortune. Make a video of the functionality of the app working on the new network and link to relevant scanner transactions.
  • Deploy the contracts on mainnet
  • Verify the contracts on the mainnet block scanner
  • Make sure that everything is working on mainnet
  • Add the new deployed contracts addresses to this list
  • Transfer ownership of mainnet contracts
  • Create a subgraph with this sdk
  • Add to human dashboard
  • Request to become the maintainer for your EVM network. We will list you on our repo, give you an extra reward (generally around 1 ETH per year) and invite you to conferences. We will celebrate your name forever!
  • Bridge HMT from Ethereum
  • Verify bridging of tokens works and link to relevant scanner transactions.

High level rules to make sure that you are doing this correctly

  • We never want to create a mintable token. Your change should not change the total token supply from 1 billion
  • When deploying production contracts use a dedicated wallet with a seed phrase you don't use anywhere else. You might be required to share it with us.

Eth kv store webapp

  • Allow for arbitary get/set tab
  • Decrypt should allow you to specify a private key to decrypt with and take in a cipher text message
  • Encrypt should take in an address, and a plain text message and produce cipher text
  • Your public key, should just display your public key from what's stored in eth kv store

Create a cloudflare pages/worker implementation of fortune

Deploy the fortune server to cloudflare (cf) pages/workers

  • Port storage from s3 to cf
  • deploy all the components of the workers to cf instead of containers
  • have a development version that deploys to an arbitrary (ci driven site) when you push to branches or do pull requests
  • have a production version that deploys when you push to the master/main branch

Add OKX Chain and become the official maintainer for this network integration feature

Human Protocol supports arbitrary EVM networks but there's a bit of work to do to make a network first class and make sure that it works. All of our EVM network launches are payable in ETH and you can gain a yearly bonus by being our network sponsor. If you need support please join tech-discussions on the human protocol discord linked on hmt.ai.

Steps to receive a bounty

  • Suggest and have us authorize your bridging strategy. After all we need to bridge HMT over to the new network. Usually, we need to use an erc20-compatible approach.
  • Deploy the contracts on testnet
  • Verify the contracts on the testnet block scanner
  • Make sure that everything is working on testnet
  • Add the new deployed contracts addresses to this list
  • Transfer ownership of testnet contracts
  • Launch a working app on the network. The easiest one to get going is our example fortune. Make a video of the functionality of the app working on the new network and link to relevant scanner transactions.
  • Deploy the contracts on mainnet
  • Verify the contracts on the mainnet block scanner
  • Make sure that everything is working on mainnet
  • Add the new deployed contracts addresses to this list
  • Transfer ownership of mainnet contracts
  • Create a subgraph with this sdk
  • Add to human dashboard
  • Request to become the maintainer for your EVM network. We will list you on our repo, give you an extra reward (generally around 1 ETH per year) and invite you to conferences. We will celebrate your name forever!
  • Bridge HMT from Ethereum
  • Verify bridging of tokens works and link to relevant scanner transactions.
  • Add the chain to typescript SDK
  • Add the chain to python SDK

High level rules to make sure that you are doing this correctly

  • We never want to create a mintable token. Your change should not change the total token supply from 1 billion
  • When deploying production contracts use a dedicated wallet with a seed phrase you don't use anywhere else. You might be required to share it with us.

Create a Rust implementation of Fortune on Elrond

  • Launch an example app on the Elrond network. The easiest one to get going is our example fortune:
    With Fortune, an example HUMAN application that demonstrates how to create and fulfill job requests using the HUMAN protocol.

  • Create a Rust implementation of Fortune https://github.com/humanprotocol/fortune and make a video of the functionality of the app working on the new network and link to relevant scanner transactions.

Bring Staking/Slashing contracts into monorepo on feature branch

Staking/Slashing feature requires not only Staking/RewardPool contract implementation, but also Escrow/EscrowFactory contract changes.
Therefore, all the other components of Human Protocol needs to be updated accordingly. It's not limited to SDK, but also the fortune, escrow-dashboard, and other example apps.
This requires a lot of changes, so it's better to have feature branch for this functionality, so that we can make sure everything is working properly on that feature branch.

Fix: Fortune doesn't call storeResults

Fortune recording oracle is not calling to storeResults function for emitting the event "IntermediateStorage" once the required number of fortunes are submited.
It should pass the url of the file uploaded to the s3 bucket containing the solution.

Add Cardano and become the official maintainer for this network

Human Protocol supports arbitrary EVM networks but there's a bit of work to do to make a network first class and make sure that it works. All of our EVM network launches are payable in ETH and you can gain a yearly bonus by being our network sponsor. If you need support please join tech-discussions on the human protocol discord linked on hmt.ai.

Steps to receive a bounty

  • Suggest and have us authorize your bridging strategy. After all we need to bridge HMT over to the new network. Usually, we need to use an erc20-compatible approach.
  • Deploy the contracts on testnet
  • Verify the contracts on the testnet block scanner
  • Make sure that everything is working on testnet
  • Add the new deployed contracts addresses to this list
  • Transfer ownership of testnet contracts
  • Launch a working app on the network. The easiest one to get going is our example fortune. Make a video of the functionality of the app working on the new network and link to relevant scanner transactions.
  • Deploy the contracts on mainnet
  • Verify the contracts on the mainnet block scanner
  • Make sure that everything is working on mainnet
  • Add the new deployed contracts addresses to this list
  • Transfer ownership of mainnet contracts
  • Create a subgraph with this sdk
  • Add to human dashboard
  • Request to become the maintainer for your EVM network. We will list you on our repo, give you an extra reward (generally around 1 ETH per year) and invite you to conferences. We will celebrate your name forever!
  • Bridge HMT from Ethereum
  • Verify bridging of tokens works and link to relevant scanner transactions.

High level rules to make sure that you are doing this correctly

  • We never want to create a mintable token. Your change should not change the total token supply from 1 billion
  • When deploying production contracts use a dedicated wallet with a seed phrase you don't use anywhere else. You might be required to share it with us.

Fortune: Reputation Network

Example of the reputation network. Store addresses and their reputations in the Blockchain or inside the reputation oracle's process.

Worker payouts should be adjusted based on the reputation score.
https://github.com/humanprotocol/fortune/blob/master/examples/reputation-oracle/index.js#L44

Each worker has his own reputation score - a number from 0 to 1 which has correlation on the reward that is given to this particular address

In case of “correct” work(from the rep oracle perspective), each worker should be rewarded with the appropriate amount of tokens and his priority should be increased

For the payout, it could be the formula: total reward = SUM(reputation_score * n * x), where n - is an amount of task being made by one worker, x - is some reward variable that needs to be found

Reputation Scores should be adjustable values. For the correct work reputation score goes higher, for not correct it goes down

Dashboard cleanup

Currently we are missing a lot of escrow factories that we previously ran. Let's track down All of the Escrow Factories that Intuition Machines has ever run (ethereum ropsten/polygon dev net) and make sure they are on the dashboard

Fortune: Math.floor causes payments to fail

Problem:
Unexpected behavior of Math.floor(10**19/3). The result is 3333333333333333500 which is wrong because this number multiplied by 3 is greater that 10*19. That causes payments to fail.

Location:
reputation-oracle/index.js

Steps to reproduce:

  1. Create an escrow with 3 fortunes
  2. Fund it with 10 HMT
  3. Setup escrow and send fortunes.

Get a skale maintainer and verify all the steps have been done

The skale implementation has already had a good deal of work done for it

humanprotocol/hmt-escrow#261
humanprotocol/hmt-escrow@5357df3

So please build on top of this.

HMT-Escrow supports arbitrary EVM networks but there's a bit of work to do to make a network first class and make sure that it works. All of our EVM network launches are supported by gitcoin but you can gain a yearly bonus by being our network sponsor.

Steps to receive gitcoin bounty

  • Launch the contracts on the devnet and make sure that everything is working
  • Launch contracts on production network and file a commit with all the contract information to this repo's documentation. Here's an example humanprotocol/hmt-escrow#296
  • Launch KVstore contracts https://github.com/humanprotocol/eth-kvstore
  • Add the contracts to the relevant network scanner (etherscan equivalent)
  • Launch a working app on the network. The easiest one to get going is our example fortune. https://github.com/humanprotocol/fortune Make a video of the functionality of the app working on the new network and link to relevant scanner transactions.
  • Add to human dashboard [ https://dashboard.humanprotocol.org/ ]
  • Request to become the maintainer for your EVM network. We will list you on our repo, give you an extra reward (generally around 1 ETH per year) and invite you to conferences. We will celebrate your name forever!
  • Verify bridging of tokens works

High level rules to make sure that you are doing this correctly

  • We never want to create a mintable token. Your change should not change the total token supply from 1 billion

Implement staging environment

We need staging environment for dashboard, and subgraph.

This requirement is still WIP. There will be much more added to staging environment.

Fortune moonbeam mainnet

TODO

  • Deploy fortune on moonbeam
  • Launch some fortunes and make sure they end up on dashboard.humanprotocol.org

Become the official HMT Elrond maintainer

HMT-Escrow supports arbitrary networks but there's a bit of work to do to make a network first class and make sure that it works. You can gain a yearly bonus by being our network sponsor. If you need support please join tech-discussions on the HUMAN Protocol discord linked on hmt.ai.

Steps to receive gitcoin bounty

  • Suggest and have us authorize your bridging strategy. After all we need to bridge HMT over to the new network. Usually we need to use a erc20 compatible approach.
  • The contracts on the Elrond devnet have already been launched, please make sure that everything is working
  • Launch contracts on production network and file a commit with all the contract information to this repo's documentation. Here's an example humanprotocol/hmt-escrow#296
  • Add the contracts to the relevant network scanner (etherscan equivalent)
  • Add to human dashboard [ https://dashboard.humanprotocol.org/ ]. This will require that you configure a human subgraph
  • Request to become the maintainer for Elrond. We will list you on our repo, give you an extra reward (generally around 1 ETH per year) and invite you to conferences. We will celebrate your name forever!
  • Verify bridging of tokens works

High level rules to make sure that you are doing this correctly

  • We never want to create a mintable token. Your change should not change the total token supply from 1 billion
  • When deploying production contracts use a dedicated wallet with a seed phrase you don't use anywhere else. You might be required to share it with us.

Fortune: Replace Number with BigInt in reputation-oracle/index.js

Problem:
If you use a big funding amount, on a bulkPayout step there will be an error due to the incorrect number representation (5e+21 for example)

Location:
reputation-oracle/index.js

Steps to reproduce:

  1. Create an escrow
  2. Fund it with 10000 HMT
  3. Setup escrow and send fortunes.
  4. Once final fortune is received there will be an error.

How to fix:
Replace Number with BigInt
const balance = Number(await Escrow.methods.getBalance().call({ from: account.address }));

Proxy smart contract

Write a proxy smart contract for Escrow Factory, so the address used as factory address will always be the same, no matter if we deploy a new factory contract.
The proxy contract should store the history of factories and the current active factory.
Add a function to make a factory inactive.

Get an avalanche maintainer and verify all the steps have been done

HMT-Escrow supports arbitrary EVM networks but there's a bit of work to do to make a network first class and make sure that it works. All of our EVM network launches are supported by gitcoin but you can gain a yearly bonus by being our network sponsor. If you need support please join tech-discussions on the human protocol discord linked on hmt.ai.

Steps to receive gitcoin bounty

  • Launch the contracts on the devnet and make sure that everything is working
  • Launch contracts on production network and file a commit with all the contract information to this repo's documentation. Here's an example humanprotocol/hmt-escrow#296
  • Launch KVstore contracts https://github.com/humanprotocol/eth-kvstore
  • Add the contracts to the relevant network scanner (etherscan equivalent)
  • Launch a working app on the network. The easiest one to get going is our example fortune. https://github.com/humanprotocol/fortune Make a video of the functionality of the app working on the new network and link to relevant scanner transactions.
  • Add to human dashboard [ https://dashboard.humanprotocol.org/ ]
  • Request to become the maintainer for your EVM network. We will list you on our repo, give you an extra reward (generally around 1 ETH per year) and invite you to conferences. We will celebrate your name forever!
  • Verify bridging of tokens works

High level rules to make sure that you are doing this correctly

  • We never want to create a mintable token. Your change should not change the total token supply from 1 billion

┆Issue is synchronized with this Asana task by Unito

Dashboard supports escrow factory upgrade

@portuu3 , we should support escrow factory upgrades in the dashboard.

Please work on smart contract & subgraph for this task as we discussed yesterday and let me know once it's ready to be integrated on frontend.

Also currently we are missing a lot of escrow factories that we previously ran. Let's track down all of the Escrow factories that Intuition Machines has ever run (ethereum ropsten/polygon dev net) and make sure they are on the dashboard

Fix pypi and npm builds

Pypi build is currently broken

From

.1.dist-info/zip-safe'
adding 'human_protocol_sdk-0.0.1.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Uploading distributions to https://upload.pypi.org/legacy/
Uploading human_protocol_sdk-0.0.1-py3-none-any.whl
25l
  0% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/42.5 kB • --:-- • ?
  0% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/42.5 kB • --:-- • ?
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.5/42.5 kB • 00:00 • 106.7 MB/s
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.5/42.5 kB • 00:00 • 106.7 MB/s
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.5/42.5 kB • 00:00 • 106.7 MB/s
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.5/42.5 kB • 00:00 • 106.7 MB/s
25hWARNING  Error during upload. Retry with the --verbose option for more details. 
ERROR    HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/        
         File already exists. See https://pypi.org/help/#file-name-reuse for    
         more information.                                                      
Error: Process completed with exit code 1.
0s

Also let's only run these actions when we release a version/tag. We can upload the version that we release

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.