Skip to content

Commit 6033798

Browse files
Merge pull request #339 from qalisander/convenient-logging-api
feat: convenient vm() logging api
2 parents 106eeb7 + 034f424 commit 6033798

File tree

11 files changed

+123
-165
lines changed

11 files changed

+123
-165
lines changed

examples/erc20/src/erc20.rs

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ impl<T: Erc20Params> Erc20<T> {
7474
to_balance.set(new_to_balance);
7575

7676
// Emitting the transfer event
77-
stylus_sdk::evm::log(self.vm(), Transfer { from, to, value });
77+
self.vm().log(Transfer { from, to, value });
7878
Ok(())
7979
}
8080

@@ -89,14 +89,11 @@ impl<T: Erc20Params> Erc20<T> {
8989
self.total_supply.set(self.total_supply.get() + value);
9090

9191
// Emitting the transfer event
92-
stylus_sdk::evm::log(
93-
self.vm(),
94-
Transfer {
95-
from: Address::ZERO,
96-
to: address,
97-
value,
98-
},
99-
);
92+
self.vm().log(Transfer {
93+
from: Address::ZERO,
94+
to: address,
95+
value,
96+
});
10097

10198
Ok(())
10299
}
@@ -119,14 +116,11 @@ impl<T: Erc20Params> Erc20<T> {
119116
self.total_supply.set(self.total_supply.get() - value);
120117

121118
// Emitting the transfer event
122-
stylus_sdk::evm::log(
123-
self.vm(),
124-
Transfer {
125-
from: address,
126-
to: Address::ZERO,
127-
value,
128-
},
129-
);
119+
self.vm().log(Transfer {
120+
from: address,
121+
to: Address::ZERO,
122+
value,
123+
});
130124

131125
Ok(())
132126
}
@@ -201,14 +195,11 @@ impl<T: Erc20Params> Erc20<T> {
201195
pub fn approve(&mut self, spender: Address, value: U256) -> bool {
202196
let msg_sender = self.vm().msg_sender();
203197
self.allowances.setter(msg_sender).insert(spender, value);
204-
stylus_sdk::evm::log(
205-
self.vm(),
206-
Approval {
207-
owner: msg_sender,
208-
spender,
209-
value,
210-
},
211-
);
198+
self.vm().log(Approval {
199+
owner: msg_sender,
200+
spender,
201+
value,
202+
});
212203
true
213204
}
214205

examples/erc721/src/erc721.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ impl<T: Erc721Params> Erc721<T> {
143143
// cleaning app the approved mapping for this token
144144
self.token_approvals.delete(token_id);
145145

146-
stylus_sdk::evm::log(self.vm(), Transfer { from, to, token_id });
146+
self.vm().log(Transfer { from, to, token_id });
147147
Ok(())
148148
}
149149

@@ -315,14 +315,11 @@ impl<T: Erc721Params> Erc721<T> {
315315
}
316316
self.token_approvals.insert(token_id, approved);
317317

318-
stylus_sdk::evm::log(
319-
self.vm(),
320-
Approval {
321-
approved,
322-
owner,
323-
token_id,
324-
},
325-
);
318+
self.vm().log(Approval {
319+
approved,
320+
owner,
321+
token_id,
322+
});
326323
Ok(())
327324
}
328325

@@ -337,14 +334,11 @@ impl<T: Erc721Params> Erc721<T> {
337334
.setter(owner)
338335
.insert(operator, approved);
339336

340-
stylus_sdk::evm::log(
341-
self.vm(),
342-
ApprovalForAll {
343-
owner,
344-
operator,
345-
approved,
346-
},
347-
);
337+
self.vm().log(ApprovalForAll {
338+
owner,
339+
operator,
340+
approved,
341+
});
348342
Ok(())
349343
}
350344

examples/events/src/lib.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use alloc::vec::Vec;
99
use alloc::{string::ToString, vec};
1010

1111
use stylus_sdk::alloy_primitives::U256;
12-
use stylus_sdk::{alloy_primitives::Address, alloy_sol_types::sol, evm, prelude::*, ArbResult};
12+
use stylus_sdk::{alloy_primitives::Address, alloy_sol_types::sol, prelude::*, ArbResult};
1313

1414
// sol! macro event declaration
1515
// Up to 3 parameters can be indexed.
@@ -27,16 +27,13 @@ pub struct Events {}
2727
impl Events {
2828
fn user_main(&self, _input: Vec<u8>) -> ArbResult {
2929
// emits a 'Log' event, defined above in the sol! macro
30-
evm::log(
31-
self.vm(),
32-
Log {
33-
sender: Address::from([0x11; 20]),
34-
message: "Hello world!".to_string(),
35-
},
36-
);
30+
self.vm().log(Log {
31+
sender: Address::from([0x11; 20]),
32+
message: "Hello world!".to_string(),
33+
});
3734

3835
// no data, but event will still log to the chain
39-
evm::log(self.vm(), AnotherLog {});
36+
self.vm().log(AnotherLog {});
4037

4138
// set up local variables
4239
let user = Address::from([0x22; 20]);

examples/fallback_receive/src/lib.rs

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use alloc::vec;
1111
use stylus_sdk::alloy_sol_types::sol;
1212
use stylus_sdk::{
1313
alloy_primitives::{Address, FixedBytes, U256},
14-
evm::log,
1514
prelude::*,
1615
ArbResult,
1716
};
@@ -68,14 +67,11 @@ impl PaymentTracker {
6867
self.balances.setter(sender).set(current_balance + amount);
6968

7069
// Log the event
71-
log(
72-
self.vm(),
73-
EtherReceived {
74-
sender,
75-
amount,
76-
method: "receive".to_string(),
77-
},
78-
);
70+
self.vm().log(EtherReceived {
71+
sender,
72+
amount,
73+
method: "receive".to_string(),
74+
});
7975

8076
Ok(())
8177
}
@@ -100,36 +96,27 @@ impl PaymentTracker {
10096
let current_balance = self.balances.get(sender);
10197
self.balances.setter(sender).set(current_balance + amount);
10298

103-
log(
104-
self.vm(),
105-
EtherReceived {
106-
sender,
107-
amount,
108-
method: "fallback".to_string(),
109-
},
110-
);
99+
self.vm().log(EtherReceived {
100+
sender,
101+
amount,
102+
method: "fallback".to_string(),
103+
});
111104
}
112105

113106
// Log the fallback trigger with calldata - convert to bytes properly
114-
log(
115-
self.vm(),
116-
FallbackTriggered {
117-
sender,
118-
amount,
119-
data: calldata.to_vec().into(),
120-
},
121-
);
107+
self.vm().log(FallbackTriggered {
108+
sender,
109+
amount,
110+
data: calldata.to_vec().into(),
111+
});
122112

123113
// If calldata has at least 4 bytes, extract the function selector
124114
if calldata.len() >= 4 {
125115
let selector = [calldata[0], calldata[1], calldata[2], calldata[3]];
126-
log(
127-
self.vm(),
128-
UnknownFunctionCalled {
129-
sender,
130-
selector: FixedBytes(selector),
131-
},
132-
);
116+
self.vm().log(UnknownFunctionCalled {
117+
sender,
118+
selector: FixedBytes(selector),
119+
});
133120
}
134121

135122
// Return empty bytes (successful execution)

examples/test/src/lib.rs

Lines changed: 31 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use stylus_sdk::alloy_sol_types::sol;
99
/// Import items from the SDK. The prelude contains common traits and macros.
1010
use stylus_sdk::{
1111
alloy_primitives::{Address, U256},
12-
console, evm,
12+
console,
1313
prelude::*,
1414
};
1515
// Define some persistent storage using the Solidity ABI.
@@ -51,14 +51,11 @@ impl Counter {
5151
self.last_updated
5252
.set(U256::from(self.vm().block_timestamp()));
5353
// Emit an event
54-
evm::log(
55-
self.vm(),
56-
CounterUpdated {
57-
user: self.vm().msg_sender(),
58-
prev_value: prev,
59-
new_value: self.number.get(),
60-
},
61-
);
54+
self.vm().log(CounterUpdated {
55+
user: self.vm().msg_sender(),
56+
prev_value: prev,
57+
new_value: self.number.get(),
58+
});
6259
}
6360
/// Sets a number in storage to a user-specified value.
6461
pub fn mul_number(&mut self, new_number: U256) {
@@ -68,14 +65,11 @@ impl Counter {
6865
self.last_updated
6966
.set(U256::from(self.vm().block_timestamp()));
7067
// Emit an event
71-
evm::log(
72-
self.vm(),
73-
CounterUpdated {
74-
user: self.vm().msg_sender(),
75-
prev_value: prev,
76-
new_value: self.number.get(),
77-
},
78-
);
68+
self.vm().log(CounterUpdated {
69+
user: self.vm().msg_sender(),
70+
prev_value: prev,
71+
new_value: self.number.get(),
72+
});
7973
}
8074
/// Sets a number in storage to a user-specified value.
8175
pub fn add_number(&mut self, new_number: U256) {
@@ -85,14 +79,11 @@ impl Counter {
8579
self.last_updated
8680
.set(U256::from(self.vm().block_timestamp()));
8781
// Emit an event
88-
evm::log(
89-
self.vm(),
90-
CounterUpdated {
91-
user: self.vm().msg_sender(),
92-
prev_value: prev,
93-
new_value: self.number.get(),
94-
},
95-
);
82+
self.vm().log(CounterUpdated {
83+
user: self.vm().msg_sender(),
84+
prev_value: prev,
85+
new_value: self.number.get(),
86+
});
9687
}
9788
/// Increments `number` and updates its value in storage.
9889
pub fn increment(&mut self) {
@@ -103,14 +94,11 @@ impl Counter {
10394
self.last_updated
10495
.set(U256::from(self.vm().block_timestamp()));
10596
// Emit an event
106-
evm::log(
107-
self.vm(),
108-
CounterUpdated {
109-
user: self.vm().msg_sender(),
110-
prev_value: prev,
111-
new_value: self.number.get(),
112-
},
113-
);
97+
self.vm().log(CounterUpdated {
98+
user: self.vm().msg_sender(),
99+
prev_value: prev,
100+
new_value: self.number.get(),
101+
});
114102
}
115103
/// Decrements `number` and updates its value in storage.
116104
/// Returns an error if the number is already zero.
@@ -125,14 +113,11 @@ impl Counter {
125113
self.last_updated
126114
.set(U256::from(self.vm().block_timestamp()));
127115
// Emit an event
128-
evm::log(
129-
self.vm(),
130-
CounterUpdated {
131-
user: self.vm().msg_sender(),
132-
prev_value: prev,
133-
new_value: self.number.get(),
134-
},
135-
);
116+
self.vm().log(CounterUpdated {
117+
user: self.vm().msg_sender(),
118+
prev_value: prev,
119+
new_value: self.number.get(),
120+
});
136121

137122
Ok(())
138123
}
@@ -145,14 +130,11 @@ impl Counter {
145130
self.last_updated
146131
.set(U256::from(self.vm().block_timestamp()));
147132
// Emit an event
148-
evm::log(
149-
self.vm(),
150-
CounterUpdated {
151-
user: self.vm().msg_sender(),
152-
prev_value: prev,
153-
new_value: self.number.get(),
154-
},
155-
);
133+
self.vm().log(CounterUpdated {
134+
user: self.vm().msg_sender(),
135+
prev_value: prev,
136+
new_value: self.number.get(),
137+
});
156138
}
157139
// External call example
158140
pub fn call_external_contract(

0 commit comments

Comments
 (0)