Skip to content

Commit 143c25c

Browse files
authored
fix: revert breaking change that changed data to input (#959)
* fix: revert breaking change that changed data to input * chore: add encoding test case
1 parent 8306456 commit 143c25c

File tree

1 file changed

+61
-3
lines changed

1 file changed

+61
-3
lines changed

src/handlers/wallet/prepare_calls.rs

+61-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use yttrium::erc7579::smart_sessions::{
2727
use yttrium::smart_accounts::account_address::AccountAddress;
2828
use yttrium::{
2929
bundler::{config::BundlerConfig, pimlico::client::BundlerClient},
30-
call::Call,
3130
chain::ChainId,
3231
entry_point::{EntryPointConfig, EntryPointVersion},
3332
smart_accounts::{nonce::get_nonce_with_key, safe::get_call_data},
@@ -41,10 +40,28 @@ pub type PrepareCallsRequest = Vec<PrepareCallsRequestItem>;
4140
pub struct PrepareCallsRequestItem {
4241
from: AccountAddress,
4342
chain_id: U64,
44-
calls: Vec<Call>,
43+
calls: Vec<CallShim>,
4544
capabilities: Capabilities,
4645
}
4746

47+
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
48+
#[serde(rename_all = "camelCase")]
49+
pub struct CallShim {
50+
pub to: Address,
51+
pub value: U256,
52+
pub data: Bytes,
53+
}
54+
55+
impl From<CallShim> for yttrium::call::Call {
56+
fn from(call: CallShim) -> Self {
57+
Self {
58+
to: call.to,
59+
value: call.value,
60+
input: call.data,
61+
}
62+
}
63+
}
64+
4865
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
4966
#[serde(rename_all = "camelCase")]
5067
pub struct Capabilities {
@@ -264,7 +281,7 @@ async fn handler_internal(
264281
nonce,
265282
factory: None,
266283
factory_data: None,
267-
call_data: get_call_data(request.calls),
284+
call_data: get_call_data(request.calls.into_iter().map(|c| c.into()).collect()),
268285
call_gas_limit: U256::ZERO,
269286
verification_gas_limit: U256::ZERO,
270287
pre_verification_gas: U256::ZERO,
@@ -731,4 +748,45 @@ mod tests {
731748
bytes!("010000e015000040e0151e0104e0e0151fe018000080e01621e0165f010420e0163f0001e0141f1f014a3464b2d184c4b8517d7f2f59bab7e6269b6aa524e268fcd1eec34a9c8e2702d7389fe0033f12207b90941d9cff79a750c1e5c05ddaa17ea01be0041fe00a0001e031e00a14e021000001e1167f010160e0154b0001e1163fe018001f2b02001b60aa8eb31e11c41279f6a102026edeeb848ec600bae0435ac2bccb870bc2ef2db5e215fac4dec876f4e0184ce02a00e016ff0000e016ffe03800e2153f221203efef39a12007e01c00132e65bafa07238666c3b239e94f32dad3cdd6498de01638e017dfe0189fe0035f139a6c4974dce237e01ff35c602ca9555a3c0fa5efe0031fe00a00e1177fe0045f0366f864d5e00a43e013001f559388056f9cecfa536e70649154db93485a1f3448f0c9cba469e26f15ae4c091f8ff1b474b48673bb75d32e7e360391cb6e6db11c931dcc81986a86b380fcd48015464b5f504fd5fa527fd9437e46ea75098adce216c81fe01371e004000001e4177fe004dfe00a000002e00a13e00300e1173f00c0e0032ce00a001f41e8b94748580ca0b4993c9a1b86b5be851bfc076ff5ce3a1ff65bf16392acfc1fb800f9b4f1aef1555c7fce5599fffb17e7c635502154a0333ba21f3ae491839a01f51ce00a54e02200e0587f"),
732749
);
733750
}
751+
752+
#[test]
753+
fn request_body_encoding_decoding() {
754+
let request = vec![PrepareCallsRequestItem {
755+
chain_id: U64::from(1),
756+
from: address!("207b90941d9cff79A750C1E5c05dDaA17eA01B9F").into(),
757+
calls: vec![CallShim {
758+
to: address!("207b90941d9cff79a750c1e5c05ddaa17ea01b9f"),
759+
data: Bytes::new(),
760+
value: U256::from(13),
761+
}],
762+
capabilities: Capabilities {
763+
permissions: Permissions {
764+
context: Uuid::nil(),
765+
},
766+
paymaster_service: None,
767+
},
768+
}];
769+
let value = serde_json::json!([{
770+
"chainId": "0x1",
771+
"from": "0x207b90941d9cff79a750c1e5c05ddaa17ea01b9f",
772+
"calls": [
773+
{
774+
"to": "0x207b90941d9cff79a750c1e5c05ddaa17ea01b9f",
775+
"data": "0x",
776+
"value": "0xd"
777+
}
778+
],
779+
"capabilities": {
780+
"permissions": {
781+
"context": "00000000-0000-0000-0000-000000000000",
782+
},
783+
"paymasterService": null,
784+
},
785+
}]);
786+
assert_eq!(serde_json::to_value(&request).unwrap(), value);
787+
assert_eq!(
788+
serde_json::from_value::<Vec<PrepareCallsRequestItem>>(value).unwrap(),
789+
request
790+
);
791+
}
734792
}

0 commit comments

Comments
 (0)