Sitelet https://github.com/alloy-rs/alloy/issues/406
Skip to content

[Bug] Ordering problem in interaction between NonceManagerLayer and SignerLayer #406

Description

@zerosnacks

Component

contract, signers

What version of Alloy are you on?

Details alloy-repro v0.1.0 (/home/zerosnacks/projects/alloy-repro) ├── alloy v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ ├── alloy-contract v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ ├── alloy-dyn-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ ├── alloy-json-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ ├── alloy-rlp v0.3.4 │ │ │ │ │ │ ├── alloy-rlp-derive v0.3.4 (proc-macro) │ │ │ │ │ │ ├── alloy-rlp v0.3.4 (*) │ │ │ │ ├── alloy-sol-type-parser v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ ├── alloy-sol-type-parser v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ ├── alloy-sol-types v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ ├── alloy-json-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ ├── alloy-sol-macro v0.6.4 (proc-macro) (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ ├── alloy-json-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ │ ├── alloy-sol-type-parser v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ ├── alloy-sol-macro-input v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ │ ├── alloy-json-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ │ │ └── syn-solidity v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ │ │ │ ├── syn-solidity v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-json-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-network v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ ├── alloy-consensus v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ ├── alloy-eips v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ │ ├── alloy-rlp v0.3.4 (*) │ │ │ │ │ ├── alloy-serde v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ ├── alloy-rlp v0.3.4 (*) │ │ │ │ ├── alloy-serde v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-eips v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-json-rpc v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ ├── alloy-rpc-types v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ ├── alloy-consensus v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ │ ├── alloy-eips v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ ├── alloy-rlp v0.3.4 (*) │ │ │ │ ├── alloy-serde v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-signer v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-provider v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ ├── alloy-json-rpc v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-network v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ ├── alloy-rpc-client v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ ├── alloy-json-rpc v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ │ ├── alloy-transport v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ │ ├── alloy-json-rpc v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ │ ├── alloy-transport-http v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ │ ├── alloy-json-rpc v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ │ │ ├── alloy-transport v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-rpc-trace-types v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ │ ├── alloy-rpc-types v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ │ ├── alloy-serde v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-rpc-types v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-transport v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ │ ├── alloy-transport-http v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ ├── alloy-rpc-types v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ ├── alloy-sol-types v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-transport v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ ├── alloy-core v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) │ │ ├── alloy-dyn-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-json-abi v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ └── alloy-sol-types v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ ├── alloy-network v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ ├── alloy-node-bindings v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ ├── alloy-genesis v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ │ ├── alloy-serde v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ ├── alloy-provider v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ ├── alloy-rpc-client v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ ├── alloy-signer v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ ├── alloy-signer-wallet v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) │ │ ├── alloy-consensus v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ ├── alloy-network v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*) │ │ ├── alloy-primitives v0.6.4 (https://github.com/alloy-rs/core?rev=ff33969#ff339696) (*) │ │ ├── alloy-signer v0.1.0 (https://github.com/alloy-rs/alloy?rev=27a1e36#27a1e36b) (*)

Operating System

macOS (Intel)

Describe the bug

In a script environment, where a user wants to both deploy a contract and interact with it; even with .with_nonce_management or .with_recommended_layers set on the provider, an error is thrown that a nonce is still required. If a nonce is provided it complains that a nonce is either too high or too low.

I've created a minimal reproduction repo here: https://github.com/zerosnacks/alloy-repro-406

There is also some expected behaviour missing from the CallBuilder API: https://github.com/zerosnacks/alloy-repro-406/blob/0e87b5974e5c62a339a9ad90c30650698f7a154e/bin/with_recommended_layers.rs#L68-L71

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions