Giter Site home page Giter Site logo

taiko-client's Introduction

taiko-client

CI Codecov

Taiko protocol's client software implementation in Go. Learn more about Taiko nodes with the docs.

Project structure

Path Description
bindings/ Go contract bindings for Taiko smart contracts, and few related utility functions
cmd/ Main executable for this project
docs/ Documentation
driver/ Driver sub-command
integration_test/ Scripts to do the integration testing of all client software
metrics/ Metrics related
pkg/ Library code which used by all sub-commands
proposer/ Proposer sub-command
prover/ Prover sub-command
scripts/ Helpful scripts
testutils/ Test utils
version/ Version information

Build the source

Building the taiko-client binary requires a Go compiler. Once installed, run:

make build

Usage

Review all available sub-commands:

bin/taiko-client --help

Review each sub-command's command line flags:

bin/taiko-client <sub-command> --help

Testing

Ensure you have Docker running, and pnpm installed.

Then, run the integration tests:

  1. Start Docker locally
  2. Perform a pnpm install in taiko-mono/packages/protocol
  3. Replace <PATH_TO_TAIKO_MONO_REPO> and execute:
TAIKO_MONO_DIR=<PATH_TO_TAIKO_MONO_REPO> make test

taiko-client's People

Contributors

airdrop-monster avatar alexshliu avatar bnovil avatar bodhi-crypo avatar cyberhorsey avatar d1onys1us avatar dantaik avatar davidcardenasus avatar davidtaikocha avatar ddl-hust avatar devtomnl avatar estensen avatar eveneast avatar fanqiaojun avatar github-actions[bot] avatar goofylfg avatar haoyuathz avatar johntaiko avatar joohhnnn avatar martinkong1990 avatar mask-pp avatar miles-six avatar nakochi-crypto avatar omahs avatar rogerlamtd avatar seay404 avatar smtmfft avatar stanlagermin avatar the-laziest avatar yoghurt111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taiko-client's Issues

fix: L2 execution engine is syncing SyncProgress

summary

I am seeing the SyncProgress outputted by the simple-taiko-node-taiko_client_prover_relayer is showing nil.

example log: progress="&{SyncProgress:<nil> CurrentBlockID:+14309 HighestBlockID:+130426}

.env context

DISABLE_P2P_SYNC is set to true. proposer is disabled, only prover is enabled.

Update:

          Update:

in both transactions prover set to:
prover : 0x0000000000000000000000000000000000000001

Is that legitimate?

Originally posted by @davaymne in #302 (comment)

Yes, 0x00 and 0x000...1 are two special proof addresses that provide oracle and system proofs for the blocks that are not configured to accept real proofs (ie: modulo 10, the current config realProofSkipSize). They are controlled by Taiko.

gaxle pover and proposer quest

Can we create a website for pover and proposer node users to submit their Galxe task addresses? Since most node users are running on newly generated addresses on servers, would you use your main address to run on a centralized server? Obviously, we need a website that allows for custom submissions, and uses wallet signatures to determine the address ownership, so that node users can customize their own Galxe task addresses

Review driver's reorg handling logic

When we running alpha-2, we observed that sometimes the driver didn't handle the reorg correctly (the L2 chain still had the block which was based on the reorged BlockProposed event), so the reorg handling logic should have some issues.

feat: auto version the version.go file in taiko-client release please

I will take this eventually, but it is also a good first issue for any community member.

There are two approaches to auto-updating the version.go file as part of the release-please-action for automatic changelogs (second is preferred).

  1. Use the context of the release-please-action, and extend the action and do a manual sed replace in the version.go file
  2. Get official release-please support, follow my conversation here: googleapis/release-please#1112 (comment)
  3. Check the comment below which specifies an extra-files param

Implement client side hardfork

For the next protocol upgrade (with tokenmocis), we need to implement a client hardfork to learn necessary lessons about how we handle upgradability as a L2.

feat: get type of node (node/proposer/prover)

Any possibility to fetch from the taiko node which type it is (node/proposer/prover)? I don't think we can right now but maybe this could be useful? Feel free to close this issue if you think otherwise :)

Bug: Failed to start Taiko client

Taiko-client failed to start, the error message is belowing.

CRIT [05-06|20:10:17.557] Failed to start Taiko client             error="abi: improperly encoded uint64 value"

After I searched for a while, I found that this error is caused by autogenerated code, which interacts with l1 contract.

“Block prove” tx fails while following tx for the same block prove was successfull

There are 2 x “Block prove” txs regarding block 515570:

Could you pls clarify the reason the 2nd TX got success while it was submitted after the 1st one which failed.

Client makes taiko-geth lag to last verified block

I updated to the latest taiko-client on git, commit 949f376 on branch grimsvotn

My node was then stuck on the "Last Verified Block" and didn't sync to the latest block on L2

Constant state of 30 minute lag. I reset the node and re-synced 4 times and it was consistent.

The logs from the execution engine (taiko-geth)

INFO [06-16|19:50:32.473] Imported new potential chain segment     number=195,809 hash=632700..400460 blocks=1    txs=1     mgas=0.128    elapsed="530.507µs" mgasps=240.986  age=30m8s     dirty=56.22MiB
INFO [06-16|19:50:32.473] Recovered head state                     number=195,809 hash=632700..400460
INFO [06-16|19:50:32.473] Extend chain                             add=10 number=195,809 hash=632700..400460
INFO [06-16|19:50:32.474] Chain head was updated                   number=195,809 hash=632700..400460
WARN [06-16|19:50:44.597] Ignoring already known beacon payload    number=195,809 hash=632700..400460 age=30m20s
WARN [06-16|19:50:56.718] Ignoring already known beacon payload    number=195,809 hash=632700..400460 age=30m32s

Meanwhile, the taiko-client had a lot of this in the logs

unexpected ForkchoiceUpdate response status: VALID

I rolled back to commit cb4dada and then it synced right and everything worked.

Prover still running for already proven block

I'm running the prover, and it attempted to prove block 35917.

I see the following log:

simple-taiko-node-taiko_client_driver-1          | INFO [03-26|20:39:14.544] ✅ Valid block proven                     blockID=35917 hash=1fb0ee..b04435 prover=0x6798639591530FbBAfd12c2826422B58bD2c5219

Then I still constantly see the following log:

simple-taiko-node-taiko_client_prover_relayer-1  | INFO [03-26|20:47:44.022] Request proof                            height=35917 output=<nil>

Shouldn't the proving process be stopped when someone else has already generated a proof?

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.