Code Monkey home page Code Monkey logo

pow-demo's Introduction

pow-demo

Demo of sChain PoW script

Run simple page demo

  1. Run command from project directory:

    python -m SimpleHTTPServer 8000
  2. Run page in browser using http://localhost:8000/demo.html

  3. Deploy contract and receive 1 ETH on your metamask account

Install and run pow-test script

  1. Install dependencies:

    npm i
  2. Create .env file in project directory:

    OWNER_KEY=... #Key to deploy contract
    PRIVATE_KEY=... #Key from test account
    SKALE_ENDPOINT=... #Test sChain endpoint 
    
  3. Run node pow-test.js

Benchmark

The CPU time used for this PoW can be measured as:

time node benchmark.js    # 10 runs
time node benchmark.js 15 # 15 runs

Project structure

  • skale-miner.js - script for mining with PoW
  • pow-test.js - example of usage skale-miner.js

pow-demo's People

Contributors

dmytronazarenko avatar vporton avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pow-demo's Issues

Refactor POW-demo from web3js to ethers.js

Considering the need to keep dependencies up-to-date in the POW-demo, it is better to refactor this tool using ethers.js rather than the declining-in-popularity web3.js.
Ethers.js is faster, more versatile, and widely adopted by developers.

Documentation and general code style improvement

I've implemented the PoW minting feature that SKALE offers for interacting with contracts without balance (faucet in our case), but some things were not clear straight away from the repository/code and lots of research was done until the solution was implemented.

I would suggest the following thing, and I am willing to open a PR when I have more time:

  1. Better high level documentation on what this feature is and how it works.
  2. Better code styling, potentially migrating the code to typescript.
  3. Adding instructions for building the pow scripts using webpack.
  4. Creating a proof of concept in react (create-react-app).

Also, it seems that the demo is web3 dependent. I've tried porting the pow implementation to use ethers.js using keccak256 for hashing instead of the web3's sha3 function. The PoW candidate is successfully found, but the transactions are failing with that candidate because of not enough gas issue (unsuccessful PoW verification). I think adding an ethers implementation would also be helpful. This is because lots of projects use ethers and web3 is just a bloat when used for hashing only.

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.