Skip to content
This repository has been archived by the owner on May 11, 2024. It is now read-only.

Commit

Permalink
feat(proposer): changes based on protocol AssignmentHook updates (#502
Browse files Browse the repository at this point in the history
)
  • Loading branch information
davidtaikocha committed Jan 14, 2024
1 parent b4a102d commit 3908adb
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 12 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
with:
repository: taikoxyz/taiko-mono
path: ${{ env.TAIKO_MONO_DIR }}
ref: based_contestable_zkrollup
ref: alpha-6

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
Expand Down
2 changes: 1 addition & 1 deletion bindings/.githead
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fe9d8bea12c6d4e789a65e7d141af90f03981578
08cab909e4cab27526b29226a22ea34675c2cc7e
8 changes: 8 additions & 0 deletions bindings/encoding/input.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,10 @@ var (
)
proverAssignmentPayloadArgs = abi.Arguments{
{Name: "PROVER_ASSIGNMENT", Type: stringType},
{Name: "chainID", Type: uint64Type},
{Name: "taikoAddress", Type: addressType},
{Name: "assignmentHookAddress", Type: addressType},
{Name: "metaHash", Type: bytes32Type},
{Name: "blobHash", Type: bytes32Type},
{Name: "assignment.feeToken", Type: addressType},
{Name: "assignment.expiry", Type: uint64Type},
Expand Down Expand Up @@ -315,7 +318,9 @@ func EncodeAssignmentHookInput(input *AssignmentHookInput) ([]byte, error) {

// EncodeProverAssignmentPayload performs the solidity `abi.encode` for the given proverAssignment payload.
func EncodeProverAssignmentPayload(
chainID uint64,
taikoAddress common.Address,
assignmentHookAddress common.Address,
txListHash common.Hash,
feeToken common.Address,
expiry uint64,
Expand All @@ -325,7 +330,10 @@ func EncodeProverAssignmentPayload(
) ([]byte, error) {
b, err := proverAssignmentPayloadArgs.Pack(
"PROVER_ASSIGNMENT",
chainID,
taikoAddress,
assignmentHookAddress,
common.Hash{},
txListHash,
feeToken,
expiry,
Expand Down
2 changes: 2 additions & 0 deletions bindings/encoding/input_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (

func TestEncodeProverAssignmentPayload(t *testing.T) {
encoded, err := EncodeProverAssignmentPayload(
randomHash().Big().Uint64(),
common.BytesToAddress(randomBytes(20)),
common.BytesToAddress(randomBytes(20)),
common.BytesToHash(randomBytes(32)),
common.BytesToAddress(randomBytes(20)),
Expand Down
20 changes: 10 additions & 10 deletions bindings/gen_assignment_hook.go

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions proposer/prover_selector/eth_fee_eoa_selector.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,12 @@ func (s *ETHFeeEOASelector) AssignProver(
for _, endpoint := range s.shuffleProverEndpoints() {
encodedAssignment, proverAddress, err := assignProver(
ctx,
s.protocolConfigs.ChainId,
endpoint,
expiry,
tierFees,
s.taikoL1Address,
s.assignmentHookAddress,
txListHash,
s.requestTimeout,
guardianProverAddress,
Expand Down Expand Up @@ -174,10 +176,12 @@ func (s *ETHFeeEOASelector) shuffleProverEndpoints() []*url.URL {
// assignProver tries to assign a proof generation task to the given prover by HTTP API.
func assignProver(
ctx context.Context,
chainID uint64,
endpoint *url.URL,
expiry uint64,
tierFees []encoding.TierFee,
taikoL1Address common.Address,
assignmentHookAddress common.Address,
txListHash common.Hash,
timeout time.Duration,
guardianProverAddress common.Address,
Expand Down Expand Up @@ -225,7 +229,9 @@ func assignProver(
// Ensure prover in response is the same as the one recovered
// from the signature
payload, err := encoding.EncodeProverAssignmentPayload(
chainID,
taikoL1Address,
assignmentHookAddress,
txListHash,
common.Address{},
expiry,
Expand Down
1 change: 1 addition & 0 deletions prover/prover.go
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ func InitFromConfig(ctx context.Context, p *Prover, cfg *Config) (err error) {
AssignmentHookAddress: p.cfg.AssignmentHookAddress,
ProposeConcurrencyGuard: p.proposeConcurrencyGuard,
Rpc: p.rpc,
ProtocolConfigs: &protocolConfigs,
LivenessBond: protocolConfigs.LivenessBond,
IsGuardian: p.IsGuardianProver(),
DB: db,
Expand Down
2 changes: 2 additions & 0 deletions prover/server/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,9 @@ func (srv *ProverServer) CreateAssignment(c echo.Context) error {
}

encoded, err := encoding.EncodeProverAssignmentPayload(
srv.protocolConfigs.ChainId,
srv.taikoL1Address,
srv.assignmentHookAddress,
req.TxListHash,
req.FeeToken,
req.Expiry,
Expand Down
4 changes: 4 additions & 0 deletions prover/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
echo "github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/taikoxyz/taiko-client/bindings"
"github.com/taikoxyz/taiko-client/pkg/rpc"
)

Expand Down Expand Up @@ -44,6 +45,7 @@ type ProverServer struct {
taikoL1Address common.Address
assignmentHookAddress common.Address
rpc *rpc.Client
protocolConfigs *bindings.TaikoDataConfig
livenessBond *big.Int
isGuardian bool
db ethdb.KeyValueStore
Expand All @@ -63,6 +65,7 @@ type NewProverServerOpts struct {
TaikoL1Address common.Address
AssignmentHookAddress common.Address
Rpc *rpc.Client
ProtocolConfigs *bindings.TaikoDataConfig
LivenessBond *big.Int
IsGuardian bool
DB ethdb.KeyValueStore
Expand All @@ -85,6 +88,7 @@ func New(opts *NewProverServerOpts) (*ProverServer, error) {
taikoL1Address: opts.TaikoL1Address,
assignmentHookAddress: opts.AssignmentHookAddress,
rpc: opts.Rpc,
protocolConfigs: opts.ProtocolConfigs,
livenessBond: opts.LivenessBond,
isGuardian: opts.IsGuardian,
db: opts.DB,
Expand Down
4 changes: 4 additions & 0 deletions prover/server/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ func (s *ProverServerTestSuite) SetupTest() {
})
s.Nil(err)

configs, err := rpcClient.TaikoL1.GetConfig(nil)
s.Nil(err)

p, err := New(&NewProverServerOpts{
ProverPrivateKey: l1ProverPrivKey,
MinOptimisticTierFee: common.Big1,
Expand All @@ -56,6 +59,7 @@ func (s *ProverServerTestSuite) SetupTest() {
TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")),
AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")),
Rpc: rpcClient,
ProtocolConfigs: &configs,
LivenessBond: common.Big0,
IsGuardian: false,
DB: memorydb.New(),
Expand Down
2 changes: 2 additions & 0 deletions testutils/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,10 @@ func NewTestProverServer(
MinSgxAndPseZkevmTierFee: common.Big1,
MaxExpiry: 24 * time.Hour,
TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")),
AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")),
ProposeConcurrencyGuard: make(chan struct{}, 1024),
Rpc: s.RpcClient,
ProtocolConfigs: &protocolConfig,
LivenessBond: protocolConfig.LivenessBond,
IsGuardian: true,
})
Expand Down

0 comments on commit 3908adb

Please sign in to comment.