10
10
11
11
class Contract :
12
12
def __init__ (self , convex ):
13
+ """
14
+
15
+ Contract class to provide access and name resolution to deployed convex contracts.
16
+
17
+ """
13
18
self ._convex = convex
14
19
self ._name = None
15
20
self ._address = None
16
21
self ._owner_address = None
17
22
18
23
def load (self , name = None , address = None , owner_address = None ):
24
+ """
25
+
26
+ Load a contract details using it's registered name or directly using it's known address.
27
+
28
+ :param str name: Name of the contract that has been registered.
29
+ If provided the address and owner_address of the registration is stored within this object
30
+
31
+ :param str, int, Account address: Address of the contract, if the name is not known,
32
+ then you can provide the actual address of the contract.
19
33
34
+ :param str, int, Account owner_address: If the contract is registered the owner address of the resgistration.
35
+
36
+ :returns int The address of the resolved contract
37
+
38
+ """
20
39
if name :
21
40
address = self .resolve_address (name )
22
41
owner_address = self .resolve_owner_address (name )
@@ -28,11 +47,29 @@ def load(self, name=None, address=None, owner_address=None):
28
47
if owner_address is None :
29
48
owner_address = address
30
49
31
- self ._address = address
32
- self ._owner_address = owner_address
50
+ self ._address = to_address ( address )
51
+ self ._owner_address = to_address ( owner_address )
33
52
return self ._address
34
53
35
54
def deploy (self , account , text = None , filename = None , name = None , owner_account = None ):
55
+ """
56
+
57
+ Deploy a new/updated contract on the convex network.
58
+
59
+ :param Account account: Account to use to deploy the contract
60
+
61
+ :param str text: Contract text to deploy
62
+
63
+ :param str filename: Filename of the contract to deploy
64
+
65
+ :param str name: Name of the contract to register
66
+
67
+ :param Account onwer_account: Optional owner account of the registration.
68
+ If not provided then the Account will be used.
69
+
70
+ :returns Address of the new contract
71
+
72
+ """
36
73
if filename :
37
74
with open (filename , 'r' ) as fp :
38
75
text = fp .read ()
@@ -57,14 +94,50 @@ def deploy(self, account, text=None, filename=None, name=None, owner_account=Non
57
94
return address
58
95
59
96
def register (self , name , address , account ):
97
+ """
98
+
99
+ Register a contract address with a resolvable name. This name can be used on the Convex network to resolve
100
+ to the address.
101
+
102
+ :param str name: Name to register.
103
+
104
+ :param str, int, Account address: Address to use to assign with the name.
105
+
106
+ :param Account account: Account who owns the registration.
107
+
108
+ :returns Result from the register transaction
109
+
110
+ """
60
111
return self ._convex .registry .register (name , address , account )
61
112
62
113
def send (self , transaction , account ):
114
+ """
115
+
116
+ Sends a contract transaction to the contract. You need to run `load` before calling this method.
117
+
118
+ :param str transaction: Transaction to send to the contract.
119
+
120
+ :param Account account: Account to pay for the transaction.
121
+
122
+ :returns The transaction result.
123
+
124
+ """
63
125
if not self ._address :
64
126
raise ValueError (f'No contract address found for { self ._name } ' )
65
127
return self ._convex .send (f'(call #{ self ._address } { transaction } )' , account )
66
128
67
129
def query (self , transaction , account_address = None ):
130
+ """
131
+
132
+ Sends a query to the contract.
133
+
134
+ :param str transaction: The transaction query to send to the contract
135
+
136
+ :param str, int, Account account_address: The address to provide as the sender for this query.
137
+
138
+ :returns The query result
139
+
140
+ """
68
141
if not self ._address :
69
142
raise ValueError (f'No contract address found for { self ._name } ' )
70
143
if account_address is None :
@@ -74,9 +147,19 @@ def query(self, transaction, account_address=None):
74
147
return self ._convex .query (f'(call #{ self ._address } { transaction } )' , account_address )
75
148
76
149
def resolve_address (self , name ):
150
+ """
151
+
152
+ Return an address from a registered name.
153
+
154
+ """
77
155
return self ._convex .registry .resolve_address (name )
78
156
79
157
def resolve_owner_address (self , name ):
158
+ """
159
+
160
+ Returns the register owner of a registered name.
161
+
162
+ """
80
163
return self ._convex .registry .resolve_owner (name )
81
164
82
165
@property
0 commit comments