From 193a91a4dca5e00e79623bb5d5a13245c377bd20 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 10:17:43 +0800 Subject: [PATCH 01/12] feat(proposer): update oracle proof assignment --- .github/workflows/docker.yml | 2 +- .../prover_selector/eth_fee_eoa_selector.go | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1b1491c56..25b554b50 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push docker image to GCR" on: push: - branches: [main] + branches: [main,update-oracle-assignment] tags: - "v*" diff --git a/proposer/prover_selector/eth_fee_eoa_selector.go b/proposer/prover_selector/eth_fee_eoa_selector.go index 279a5333a..2aca0d94f 100644 --- a/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/proposer/prover_selector/eth_fee_eoa_selector.go @@ -83,6 +83,14 @@ func (s *ETHFeeEOASelector) AssignProver( ctx context.Context, meta *encoding.TaikoL1BlockMetadataInput, ) ([]byte, *big.Int, error) { + oracleProverAddress, err := s.rpc.TaikoL1.Resolve0( + &bind.CallOpts{Context: ctx}, + rpc.StringToBytes32("oracle_prover"), + true, + ) + if err != nil { + return nil, nil, err + } // Iterate over each configured endpoint, and see if someone wants to accept this block. // If it is denied, we continue on to the next endpoint. // If we do not find a prover, we can increase the fee up to a point, or give up. @@ -100,7 +108,15 @@ func (s *ETHFeeEOASelector) AssignProver( fee.Add(fee, increase) } for _, endpoint := range s.shuffleProverEndpoints() { - encodedAssignment, proverAddress, err := assignProver(ctx, meta, endpoint, fee, expiry, s.requestTimeout) + encodedAssignment, proverAddress, err := assignProver( + ctx, + meta, + endpoint, + fee, + expiry, + s.requestTimeout, + oracleProverAddress, + ) if err != nil { log.Warn("Failed to assign prover", "endpoint", endpoint, "error", err) continue @@ -169,6 +185,7 @@ func assignProver( fee *big.Int, expiry uint64, timeout time.Duration, + orcaleProverAddress common.Address, ) ([]byte, common.Address, error) { log.Info( "Attempting to assign prover", @@ -228,6 +245,11 @@ func assignProver( // Convert signature to one solidity can recover by adding 27 to 65th byte result.SignedPayload[64] = uint8(uint(result.SignedPayload[64])) + 27 + // If this assignment is to oracle prover, change prover address in assignment to `LibUtils.ORACLE_PROVER` + if result.Prover == orcaleProverAddress { + result.Prover = encoding.OracleProverAddress + } + encoded, err := encoding.EncodeProverAssignment(&encoding.ProverAssignment{ Prover: result.Prover, Expiry: reqBody.Expiry, From a71c79379f0296b7debca48bb9db9c1845e31680 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 10:19:08 +0800 Subject: [PATCH 02/12] chore: update ci --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 25b554b50..1b1491c56 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push docker image to GCR" on: push: - branches: [main,update-oracle-assignment] + branches: [main] tags: - "v*" From 5ea7e3ba983ae8b73319a8b314feb42a055d89df Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 10:22:30 +0800 Subject: [PATCH 03/12] feat: update selector --- proposer/prover_selector/eth_fee_eoa_selector.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposer/prover_selector/eth_fee_eoa_selector.go b/proposer/prover_selector/eth_fee_eoa_selector.go index 2aca0d94f..687fbab5d 100644 --- a/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/proposer/prover_selector/eth_fee_eoa_selector.go @@ -246,7 +246,7 @@ func assignProver( result.SignedPayload[64] = uint8(uint(result.SignedPayload[64])) + 27 // If this assignment is to oracle prover, change prover address in assignment to `LibUtils.ORACLE_PROVER` - if result.Prover == orcaleProverAddress { + if orcaleProverAddress != (common.Address{}) && result.Prover == orcaleProverAddress { result.Prover = encoding.OracleProverAddress } From a7e16836a8f03e7e3dec44f9f57202c1d9d3db49 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 10:56:44 +0800 Subject: [PATCH 04/12] feat: update selector --- .github/workflows/docker.yml | 2 +- proposer/prover_selector/eth_fee_eoa_selector.go | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1b1491c56..25b554b50 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push docker image to GCR" on: push: - branches: [main] + branches: [main,update-oracle-assignment] tags: - "v*" diff --git a/proposer/prover_selector/eth_fee_eoa_selector.go b/proposer/prover_selector/eth_fee_eoa_selector.go index 687fbab5d..963adbdc2 100644 --- a/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/proposer/prover_selector/eth_fee_eoa_selector.go @@ -122,13 +122,15 @@ func (s *ETHFeeEOASelector) AssignProver( continue } - ok, err := s.checkProverBalance(ctx, proverAddress) - if err != nil { - log.Warn("Failed to check prover balance", "endpoint", endpoint, "error", err) - continue - } - if !ok { - continue + if proverAddress != encoding.OracleProverAddress { + ok, err := s.checkProverBalance(ctx, proverAddress) + if err != nil { + log.Warn("Failed to check prover balance", "endpoint", endpoint, "error", err) + continue + } + if !ok { + continue + } } return encodedAssignment, fee, nil From 34b4bb786f0f931f7c312e12cc8ca56f1f61ae85 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 10:56:55 +0800 Subject: [PATCH 05/12] chore: update ci --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 25b554b50..1b1491c56 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push docker image to GCR" on: push: - branches: [main,update-oracle-assignment] + branches: [main] tags: - "v*" From 7c543605306ebae6deba9403ef7fce22b441efb4 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 15:14:58 +0800 Subject: [PATCH 06/12] feat: update prover --- prover/prover.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/prover/prover.go b/prover/prover.go index d81309c08..22c1cecf6 100644 --- a/prover/prover.go +++ b/prover/prover.go @@ -537,7 +537,9 @@ func (p *Prover) onBlockProposed( proofWindowExpiresAt := block.ProposedAt + uint64(p.protocolConfigs.ProofWindow) proofWindowExpired := uint64(time.Now().Unix()) > proofWindowExpiresAt // zero address means anyone can prove, proofWindowExpired means anyone can prove even if not zero address - if block.Prover != p.proverAddress && !proofWindowExpired { + if block.Prover != p.proverAddress && + !proofWindowExpired && + !(block.Prover == encoding.OracleProverAddress && p.oracleProverAddress == p.proverAddress) { log.Info( "Proposed block not provable", "blockID", From 1e7db0c7e2ea0d839b373096464aa95aa26f6847 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 19:56:07 +0800 Subject: [PATCH 07/12] feat: update logs --- .github/workflows/docker.yml | 2 +- proposer/prover_selector/eth_fee_eoa_selector.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1b1491c56..25b554b50 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push docker image to GCR" on: push: - branches: [main] + branches: [main,update-oracle-assignment] tags: - "v*" diff --git a/proposer/prover_selector/eth_fee_eoa_selector.go b/proposer/prover_selector/eth_fee_eoa_selector.go index 963adbdc2..92f7807e8 100644 --- a/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/proposer/prover_selector/eth_fee_eoa_selector.go @@ -261,5 +261,13 @@ func assignProver( return nil, common.Address{}, err } + log.Info( + "Prover assigned", + "address", result.Prover, + "endpoint", endpoint, + "fee", fee.String(), + "expiry", expiry, + ) + return encoded, result.Prover, nil } From d7298bf1dfd7ba33de2c53e60afd49d75b246fd4 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 18 Sep 2023 19:56:22 +0800 Subject: [PATCH 08/12] feat: update ci --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 25b554b50..1b1491c56 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push docker image to GCR" on: push: - branches: [main,update-oracle-assignment] + branches: [main] tags: - "v*" From cd5c60fd015f651c886283f177da20eaff6bfe3c Mon Sep 17 00:00:00 2001 From: David Date: Tue, 19 Sep 2023 10:55:39 +0800 Subject: [PATCH 09/12] Update proposer/prover_selector/eth_fee_eoa_selector.go Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- proposer/prover_selector/eth_fee_eoa_selector.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposer/prover_selector/eth_fee_eoa_selector.go b/proposer/prover_selector/eth_fee_eoa_selector.go index 92f7807e8..15fba2037 100644 --- a/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/proposer/prover_selector/eth_fee_eoa_selector.go @@ -187,7 +187,7 @@ func assignProver( fee *big.Int, expiry uint64, timeout time.Duration, - orcaleProverAddress common.Address, + oracleProverAddress common.Address, ) ([]byte, common.Address, error) { log.Info( "Attempting to assign prover", From 04f7f6b163291cf38df0663e6a461cbff2a89116 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 19 Sep 2023 10:55:46 +0800 Subject: [PATCH 10/12] Update proposer/prover_selector/eth_fee_eoa_selector.go Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- proposer/prover_selector/eth_fee_eoa_selector.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposer/prover_selector/eth_fee_eoa_selector.go b/proposer/prover_selector/eth_fee_eoa_selector.go index 15fba2037..e5454e56e 100644 --- a/proposer/prover_selector/eth_fee_eoa_selector.go +++ b/proposer/prover_selector/eth_fee_eoa_selector.go @@ -248,7 +248,7 @@ func assignProver( result.SignedPayload[64] = uint8(uint(result.SignedPayload[64])) + 27 // If this assignment is to oracle prover, change prover address in assignment to `LibUtils.ORACLE_PROVER` - if orcaleProverAddress != (common.Address{}) && result.Prover == orcaleProverAddress { + if oracleProverAddress != (common.Address{}) && result.Prover == oracleProverAddress { result.Prover = encoding.OracleProverAddress } From 68ec744dd6d5ac8ce32011b92d21d2bc294b00bf Mon Sep 17 00:00:00 2001 From: David Date: Tue, 19 Sep 2023 11:18:14 +0800 Subject: [PATCH 11/12] chore: update ci --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6619e76a1..edc0e88d2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -65,7 +65,6 @@ jobs: name: Install pnpm id: pnpm-install with: - version: 8.4.0 run_install: false - name: Get pnpm store directory @@ -84,7 +83,7 @@ jobs: - name: Install protocol dependencies working-directory: ${{ env.TAIKO_MONO_DIR }} - run: cd ./packages/protocol && pnpm install --no-frozen-lockfile && ./script/download_solc.sh && forge install + run: cd ./packages/protocol && pnpm install && ./script/download_solc.sh && forge install - name: Build working-directory: ${{ env.CLIENT_DIR }} From 84d3586f104f44af47b1e96426d96abc3fa37595 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 19 Sep 2023 11:20:26 +0800 Subject: [PATCH 12/12] chore: update ci --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index edc0e88d2..0342ed769 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -65,6 +65,7 @@ jobs: name: Install pnpm id: pnpm-install with: + version: 8.4.0 run_install: false - name: Get pnpm store directory