-
Notifications
You must be signed in to change notification settings - Fork 1
Dependabot/cargo/cargo 38744a1864 #303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Bumps the cargo group with 1 update in the / directory: [alloy-dyn-abi](https://github.com/alloy-rs/core). Updates `alloy-dyn-abi` from 0.8.25 to 0.8.26 - [Release notes](https://github.com/alloy-rs/core/releases) - [Changelog](https://github.com/alloy-rs/core/blob/v0.8.26/CHANGELOG.md) - [Commits](alloy-rs/core@v0.8.25...v0.8.26) --- updated-dependencies: - dependency-name: alloy-dyn-abi dependency-version: 0.8.26 dependency-type: direct:production dependency-group: cargo ... Signed-off-by: dependabot[bot] <[email protected]>
Update CircleCI configuration to use a different Rust toolchain image and rename the workflow file. Build: Rename the CircleCI configuration file from ci.yml to cargo.yml. Change the CircleCI Docker image to use Rust 1.78.0 instead of 1.88.0. Signed-off-by: Dargon789 <[email protected]>
Review or Edit in CodeSandboxOpen the branch in Web Editor • VS Code • Insiders |
Reviewer's GuideImplements full support for Tempo transactions across Foundry (building, signing, and sending), refines Optimism base-fee handling using network-specific parameters, adjusts artifact lookup and documentation output behavior, introduces CLI options and workflows, and updates dependency and CI configurations. Sequence diagram for sending a Tempo transaction via cast sendsequenceDiagram
actor User
participant CastSend as Cast_send
participant CastTxBuilder
participant WalletSigner
participant FoundryTxReq as FoundryTransactionRequest
participant FoundryTypedTx
participant NetworkWallet as NetworkWallet_FoundryNetwork
participant CastTxSender
participant ProviderNode as Ethereum_Node
User->>CastSend: cast send --tempo.fee-token ...
CastSend->>CastTxBuilder: new(provider, tx_opts)
CastTxBuilder->>CastTxBuilder: is_tempo() // checks other[feeToken]
CastSend->>CastTxBuilder: build(&WalletSigner)
CastTxBuilder->>CastTxBuilder: _build(sender, fill_defaults=true, for_signing=false)
CastTxBuilder-->>CastSend: (WithOtherFields<TransactionRequest>, fn)
CastSend->>FoundryTxReq: FoundryTransactionRequest::new(tx)
Note over CastSend,WalletSigner: Tempo path selected (is_tempo == true)
CastSend->>WalletSigner: sign_request(FoundryTransactionRequest)
WalletSigner->>WalletSigner: default_signer_address()
WalletSigner->>FoundryTxReq: build_typed_tx()
FoundryTxReq->>FoundryTxReq: is_tempo(), complete_tempo()
FoundryTxReq-->>WalletSigner: FoundryTypedTx::Tempo
WalletSigner->>NetworkWallet: sign_transaction_from(sender, FoundryTypedTx::Tempo)
NetworkWallet->>WalletSigner: validate sender == default_signer_address
NetworkWallet->>FoundryTypedTx: sign_transaction(self, &mut TempoTx)
FoundryTypedTx-->>NetworkWallet: Signature
NetworkWallet->>FoundryTypedTx: into_signed(TempoSignature)
NetworkWallet-->>WalletSigner: FoundryTxEnvelope::Tempo
WalletSigner-->>CastSend: FoundryTxEnvelope::Tempo
CastSend->>CastSend: encode_2718_len(), encode_2718(raw_tx)
CastSend->>CastTxSender: new(provider)
CastSend->>CastTxSender: send_raw(raw_tx)
CastTxSender->>ProviderNode: eth_sendRawTransaction(raw_tx)
ProviderNode-->>CastTxSender: PendingTransaction
CastTxSender-->>CastSend: PendingTransactionBuilder
CastSend-->>User: tx_hash / receipt
Updated class diagram for Tempo transaction support and signingclassDiagram
class FoundryTransactionRequest {
- inner : WithOtherFields_TransactionRequest
+ new(inner : WithOtherFields_TransactionRequest) FoundryTransactionRequest
+ into_inner() WithOtherFields_TransactionRequest
+ is_deposit() bool
+ is_tempo() bool
+ get_tempo_fee_token() Option_Address
+ complete_tempo() Result_void_vec_str
+ preferred_type() FoundryTxType
+ try_build() Option_FoundryTypedTx
+ build_typed_tx() Result_FoundryTypedTx_vec_str
+ build_unsigned() Result_FoundryTypedTx_vec_str
}
class FoundryTxType {
<<enum>>
Legacy
Eip2930
Eip1559
Eip4844
Eip7702
Deposit
Tempo
}
class FoundryTypedTx {
<<enum>>
Legacy
Eip2930
Eip1559
Eip4844
Eip7702
Deposit
Tempo
}
class TempoTransaction {
+ chain_id : u64
+ fee_token : Option_Address
+ max_fee_per_gas : u128
+ max_priority_fee_per_gas : u128
+ gas_limit : u128
+ nonce_key : U256
+ nonce : u64
+ calls : Vec_Call
+ access_list : AccessList
+ encoded_for_signing() Vec_u8
+ into_signed(sig : TempoSignature) Self
}
class Call {
+ to : Address
+ value : U256
+ input : Bytes
}
class FoundryTxEnvelope {
<<enum>>
Legacy
Eip2930
Eip1559
Eip4844
Eip7702
Deposit
Tempo
+ encode_2718_len() usize
+ encode_2718(buf : Vec_u8) void
}
class TempoSignature {
}
class WalletSigner {
+ default_signer_address() Address
+ has_signer_for(address : Address) bool
+ signer_addresses() Iterator_Address
+ sign_transaction_from(sender : Address, tx : FoundryTypedTx) Result_FoundryTxEnvelope
+ sign_request(request : FoundryTransactionRequest) Result_FoundryTxEnvelope
}
class TxSigner_Signature {
<<trait>>
+ sign_transaction(self, tx : T) Future_Result_Signature
}
class NetworkWallet_FoundryNetwork {
<<trait>>
+ default_signer_address() Address
+ has_signer_for(address : Address) bool
+ signer_addresses() Iterator_Address
+ sign_transaction_from(sender : Address, tx : FoundryTypedTx) Result_FoundryTxEnvelope
+ sign_request(request : FoundryTransactionRequest) Result_FoundryTxEnvelope
}
class DevSigner {
+ sign_transaction(tx : FoundryTypedTx) Result_Signature
}
class CastTxBuilder_P_InputState {
+ tx : WithOtherFields_TransactionRequest
+ build(sender : SenderKind) Result_FoundryTransactionRequest_Option_Function
+ build_unsigned_raw(from : Address) Result_String
+ is_tempo() bool
+ _build(sender : SenderKind, fill_defaults : bool, for_signing : bool) Result_WithOtherFields_TransactionRequest_Option_Function
}
class CastTxBuilder_P_InitState {
}
class CastTxBuilder_P_ToState {
}
class CastTxSender_P {
+ provider : Provider_AnyNetwork
+ new(provider : Provider_AnyNetwork) Self
+ send(tx_request : WithOtherFields_TransactionRequest) Result_PendingTransactionBuilder_AnyNetwork
+ send_raw(raw_tx : Vec_u8) Result_PendingTransactionBuilder_AnyNetwork
+ receipt(hash : String, block : Option_u64, confirmations : Option_u64, timeout : Option_Duration, cast_async : bool) Result_TransactionReceipt
}
FoundryTransactionRequest --> FoundryTypedTx : builds
FoundryTypedTx o-- TempoTransaction : contains
TempoTransaction o-- Call : contains
FoundryTypedTx --> FoundryTxEnvelope : wrapped as
FoundryTxEnvelope --> TempoSignature : uses
WalletSigner ..|> TxSigner_Signature
WalletSigner ..|> NetworkWallet_FoundryNetwork
DevSigner ..> FoundryTypedTx : signs
DevSigner ..> TempoSignature : converts Signature to TempoSignature
CastTxBuilder_P_InputState --> FoundryTransactionRequest : build()
CastTxBuilder_P_InputState --> WithOtherFields_TransactionRequest : internal tx
CastTxSender_P --> Provider_AnyNetwork : uses
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
Summary of ChangesHello @Dargon789, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request primarily focuses on updating Rust dependencies across the project, ensuring compatibility and leveraging the latest features and fixes from upstream crates. A significant new feature is the introduction of initial support for Tempo transactions, enabling their handling within the Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry @Dargon789, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces substantial enhancements, most notably full support for Tempo transactions across the toolchain and network-specific fee handling for Optimism, including Canyon hardfork rules. It also includes numerous bug fixes, such as improved artifact resolution and configuration error messages, and a variety of enhancements to documentation, CI workflows, and testing. The changes are well-structured and significantly improve the capabilities and robustness of the project. My review includes one suggestion to improve the robustness of the transaction receipt formatting logic.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Dargon789 <[email protected]>
Motivation
Solution
PR Checklist
Summary by Sourcery
Add full support for Tempo transactions across transaction building, signing, and sending, and update network fee handling to respect Optimism-specific base fee parameters while improving docs, tooling, and dependency workflows.
New Features:
counter/with CI workflow to demonstrate Foundry usage.Bug Fixes:
Enhancements:
NetworkWallet<FoundryNetwork>and sign all supported typed transactions, including Tempo.Build:
CI:
cargo updatePR.Documentation:
Tests:
Chores: