Skip to content

Commit 54a61f8

Browse files
committed
add buy and sell function
1 parent 1845220 commit 54a61f8

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

spring_token.mvir

+49-1
Original file line numberDiff line numberDiff line change
@@ -204,5 +204,53 @@ module SpringToken {
204204
return;
205205
}
206206

207-
207+
public sell_token(token_amount: u64, price: u64) {
208+
let token: R#Self.T;
209+
let role: &R#SpringTokenRoles.T;
210+
role = SpringTokenRoles.borrow_role();
211+
token = Self.withdraw(move(token_amount), move(role));
212+
move_to_sender<Order>(Order { token: move(token), price: move(price)});
213+
return;
214+
}
215+
216+
public buy_token(order_address: address) {
217+
let sender: address;
218+
let order: R#Self.Order;
219+
let token: R#Self.T;
220+
let price: u64;
221+
let role: &R#SpringTokenRoles.T;
222+
223+
sender = get_txn_sender();
224+
role = SpringTokenRoles.borrow_role();
225+
226+
order = move_from<Order>(copy(order_address));
227+
Order { token:token, price:price } = move(order);
228+
229+
LibraAccount.pay_from_sender(move(order_address), move(price));
230+
231+
Self.deposit(move(sender), move(token), move(role));
232+
return;
233+
}
234+
}
235+
236+
script:
237+
238+
import Transaction.SpringTokenRoles;
239+
import Transaction.SpringToken;
240+
241+
main() {
242+
let sender: address;
243+
let owner_role: &R#SpringTokenRoles.Owner;
244+
let role: &R#SpringTokenRoles.T;
245+
246+
sender = get_txn_sender();
247+
248+
SpringTokenRoles.publish();
249+
250+
owner_role = SpringTokenRoles.borrow_owner_role();
251+
252+
SpringTokenRoles.grant_minter_role(copy(sender), move(owner_role));
253+
254+
SpringToken.publish();
255+
return;
208256
}

0 commit comments

Comments
 (0)