Skip to content

Commit bf5edd5

Browse files
authored
Merge pull request #411 from filecoin-project/traceapi-new-fields
feat: add new fields to message trace for supporting new trace api
2 parents 8c2147f + abd0595 commit bf5edd5

File tree

4 files changed

+29
-5
lines changed

4 files changed

+29
-5
lines changed

rust/Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ anyhow = "1.0.23"
3333
serde_json = "1.0.46"
3434
rust-gpu-tools = { version = "0.7", optional = true, default-features = false }
3535
fr32 = { version = "~7.0", default-features = false }
36-
fvm3 = { package = "fvm", version = "~3.6.0", default-features = false, features = ["nv21-dev"] }
36+
fvm3 = { package = "fvm", version = "~3.7.0", default-features = false, features = ["nv21-dev"] }
3737
fvm3_shared = { package = "fvm_shared", version = "~3.5.0" }
3838
fvm2 = { package = "fvm", version = "~2.6", default-features = false }
3939
fvm2_shared = { package = "fvm_shared", version = "~2.5" }

rust/src/fvm/engine.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,8 @@ mod v2 {
429429
method,
430430
params: bytes_to_block(params),
431431
value: TokenAmount::from_atto(value.atto().clone()),
432+
gas_limit: msg.gas_limit,
433+
read_only: false,
432434
}),
433435
ExecutionEvent2::CallReturn(ret) => Some(ExecutionEvent::CallReturn(
434436
ExitCode::OK,

rust/src/fvm/machine.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,17 @@ fn fvm_machine_execute_message(
216216
method,
217217
params,
218218
value,
219+
gas_limit,
220+
read_only,
219221
}) => {
220222
break build_lotus_trace(
221223
from,
222224
to,
223225
method,
224226
params,
225227
value,
228+
gas_limit,
229+
read_only,
226230
&mut initial_gas_charges.into_iter().chain(&mut trace_iter),
227231
)
228232
.ok()
@@ -378,6 +382,9 @@ pub struct TraceMessage {
378382
#[serde(with = "strict_bytes")]
379383
pub params: Vec<u8>,
380384
pub codec: u64,
385+
pub gas_limit: u64,
386+
pub read_only: bool,
387+
pub code_cid: Cid,
381388
}
382389

383390
#[derive(Serialize_tuple, Deserialize_tuple, Debug, PartialEq, Eq, Clone)]
@@ -388,12 +395,15 @@ pub struct TraceReturn {
388395
pub codec: u64,
389396
}
390397

398+
#[allow(clippy::too_many_arguments)]
391399
fn build_lotus_trace(
392400
from: u64,
393401
to: Address,
394402
method: u64,
395403
params: Option<IpldBlock>,
396404
value: TokenAmount,
405+
gas_limit: u64,
406+
read_only: bool,
397407
trace_iter: &mut impl Iterator<Item = ExecutionEvent>,
398408
) -> anyhow::Result<Trace> {
399409
let params = params.unwrap_or_default();
@@ -405,6 +415,9 @@ fn build_lotus_trace(
405415
method_num: method,
406416
params: params.data,
407417
codec: params.codec,
418+
gas_limit,
419+
read_only,
420+
code_cid: Cid::default(),
408421
},
409422
msg_ret: TraceReturn {
410423
exit_code: ExitCode::OK,
@@ -423,11 +436,16 @@ fn build_lotus_trace(
423436
method,
424437
params,
425438
value,
439+
gas_limit,
440+
read_only,
426441
} => {
427442
new_trace.subcalls.push(build_lotus_trace(
428-
from, to, method, params, value, trace_iter,
443+
from, to, method, params, value, gas_limit, read_only, trace_iter,
429444
)?);
430445
}
446+
ExecutionEvent::InvokeActor(cid) => {
447+
new_trace.msg.code_cid = cid;
448+
}
431449
ExecutionEvent::CallReturn(exit_code, return_data) => {
432450
let return_data = return_data.unwrap_or_default();
433451
new_trace.msg_ret = TraceReturn {
@@ -501,6 +519,8 @@ mod test {
501519
params: None,
502520
to: Address::new_id(0),
503521
value: TokenAmount::default(),
522+
gas_limit: u64::MAX,
523+
read_only: false,
504524
};
505525
let return_result =
506526
ExecutionEvent::CallError(SyscallError::new(IllegalArgument, "illegal"));
@@ -524,6 +544,8 @@ mod test {
524544
0,
525545
None,
526546
TokenAmount::default(),
547+
u64::MAX,
548+
false,
527549
&mut trace_iter,
528550
)
529551
.unwrap();

0 commit comments

Comments
 (0)