Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathintercontractexample.py
More file actions
Latest commit
60 lines (42 loc) · 1.85 KB
/
Copy pathintercontractexample.py
File metadata and controls
60 lines (42 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
importsmartpyassp
classToken(sp.Contract):
def__init__(self, admin):
self.init(balances=sp.big_map(), administrator=admin, totalSupply=0,contract=sp.big_map())
@sp.entry_point
defmint(self, params):
tezValue=sp.tez(sp.as_nat(params.amount))
sp.verify(sp.amount==tezValue)
self.addAddressIfNecessary(sp.sender)
self.data.balances[sp.sender].balance+=params.amount*10000
self.data.totalSupply+=params.amount*10000
@sp.entry_point
defLockToken(self,params):
sp.verify(self.data.contract.contains(sp.sender))
self.data.balances[params.address].balance-=params.amount
defaddAddressIfNecessary(self, address):
sp.if~self.data.balances.contains(address):
self.data.balances[address] =sp.record(balance=0, approvals= {})
@sp.entry_point
defAddContract(self,params):
sp.verify(sp.sender==self.data.administrator)
self.data.contract[params] =1
classApi(sp.Contract):
def__init__(self, admin,token):
self.init(tokenContract=token, administrator=admin, totalSupply=0)
@sp.entry_point
defTokenPayment(self):
c=sp.contract(sp.TRecord(address=sp.TAddress, amount=sp.TInt), self.data.tokenContract, entry_point="LockToken").open_some()
mydata=sp.record(address=sp.sender,amount=10)
sp.transfer(mydata, sp.amount, c)
@sp.add_test(name="Token Testing")
deftest():
scenario=sp.test_scenario()
admin=sp.address("tz123")
alice=sp.address("tz1456")
c1=Token(admin)
c2=Api(admin,c1.address)
scenario+=c1
scenario+=c2
scenario+=c1.mint(amount=10).run(sender=alice,amount=sp.tez(10))
scenario+=c1.AddContract(c2.address).run(sender=admin)
scenario+=c2.TokenPayment().run(sender=alice)