@@ -204,5 +204,53 @@ module SpringToken {
204
204
return;
205
205
}
206
206
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;
208
256
}
0 commit comments