Skip to content

Commit e283068

Browse files
authored
consent: set synced to false if None (#51)
* consent: set synced to false if None * save signature and address in Userkey table * flake8 happy * yapf has issues
1 parent 5951a1f commit e283068

5 files changed

Lines changed: 138 additions & 2 deletions

File tree

cfxdb/gen/xbrmm.bfbs

336 Bytes
Binary file not shown.

cfxdb/gen/xbrmm/UserKey.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,70 @@ def OwnerIsNone(self):
8484
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
8585
return o == 0
8686

87-
def UserKeyStart(builder): builder.StartObject(3)
87+
# Wallet address of XBR network member this user key is owned by (foreign key to xbr.Member)
88+
# UserKey
89+
def WalletAddress(self, j):
90+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
91+
if o != 0:
92+
a = self._tab.Vector(o)
93+
return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
94+
return 0
95+
96+
# UserKey
97+
def WalletAddressAsNumpy(self):
98+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
99+
if o != 0:
100+
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
101+
return 0
102+
103+
# UserKey
104+
def WalletAddressLength(self):
105+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
106+
if o != 0:
107+
return self._tab.VectorLen(o)
108+
return 0
109+
110+
# UserKey
111+
def WalletAddressIsNone(self):
112+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
113+
return o == 0
114+
115+
# User key delegate signature
116+
# UserKey
117+
def Signature(self, j):
118+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
119+
if o != 0:
120+
a = self._tab.Vector(o)
121+
return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
122+
return 0
123+
124+
# UserKey
125+
def SignatureAsNumpy(self):
126+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
127+
if o != 0:
128+
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
129+
return 0
130+
131+
# UserKey
132+
def SignatureLength(self):
133+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
134+
if o != 0:
135+
return self._tab.VectorLen(o)
136+
return 0
137+
138+
# UserKey
139+
def SignatureIsNone(self):
140+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
141+
return o == 0
142+
143+
def UserKeyStart(builder): builder.StartObject(5)
88144
def UserKeyAddPubkey(builder, pubkey): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pubkey), 0)
89145
def UserKeyStartPubkeyVector(builder, numElems): return builder.StartVector(1, numElems, 1)
90146
def UserKeyAddCreated(builder, created): builder.PrependUint64Slot(1, created, 0)
91147
def UserKeyAddOwner(builder, owner): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(owner), 0)
92148
def UserKeyStartOwnerVector(builder, numElems): return builder.StartVector(1, numElems, 1)
149+
def UserKeyAddWalletAddress(builder, walletAddress): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(walletAddress), 0)
150+
def UserKeyStartWalletAddressVector(builder, numElems): return builder.StartVector(1, numElems, 1)
151+
def UserKeyAddSignature(builder, signature): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(signature), 0)
152+
def UserKeyStartSignatureVector(builder, numElems): return builder.StartVector(1, numElems, 1)
93153
def UserKeyEnd(builder): return builder.EndObject()

cfxdb/xbr/consent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ def build(self, builder):
358358
ConsentGen.ConsentAddUpdated(builder, updated)
359359

360360
ConsentGen.ConsentAddConsent(builder, self.consent)
361-
ConsentGen.ConsentAddSynced(builder, self.synced)
361+
ConsentGen.ConsentAddSynced(builder, self.synced or False)
362362

363363
if service_prefix:
364364
ConsentGen.ConsentAddServicePrefix(builder, service_prefix)

cfxdb/xbrmm.fbs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,4 +269,10 @@ table UserKey {
269269

270270
/// ID of XBR network member this user key is owned by (foreign key to xbr.Member)
271271
owner: [uint8] (uuid);
272+
273+
/// Wallet address of XBR network member this user key is owned by (foreign key to xbr.Member)
274+
wallet_address: [uint8] (address);
275+
276+
/// User key delegate signature
277+
signature: [uint8] (ethsig);
272278
}

cfxdb/xbrmm/userkey.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,22 @@ def OwnerAsBytes(self):
4343
return memoryview(self._tab.Bytes)[_off:_off + _len]
4444
return None
4545

46+
def WalletAddressAsBytes(self):
47+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
48+
if o != 0:
49+
_off = self._tab.Vector(o)
50+
_len = self._tab.VectorLen(o)
51+
return memoryview(self._tab.Bytes)[_off:_off + _len]
52+
return None
53+
54+
def SignatureAsBytes(self):
55+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
56+
if o != 0:
57+
_off = self._tab.Vector(o)
58+
_len = self._tab.VectorLen(o)
59+
return memoryview(self._tab.Bytes)[_off:_off + _len]
60+
return None
61+
4662

4763
class UserKey:
4864
"""
@@ -63,11 +79,21 @@ def __init__(self, from_fbs=None):
6379
# [uint8] (uuid)
6480
self._owner = None
6581

82+
# Wallet address of user account this key is owned by.
83+
# [uint8] (address)
84+
self._wallet_address = None
85+
86+
# Signature which resulted in this key being saved.
87+
# [uint8] (ethsig)
88+
self._signature = None
89+
6690
def marshal(self):
6791
obj = {
6892
'pubkey': bytes(self.pubkey),
6993
'created': int(self.created),
7094
'owner': self.owner.bytes,
95+
'wallet_address': self.wallet_address if self.wallet_address else None,
96+
'signature': bytes(self.signature) if self.signature else None
7197
}
7298
return obj
7399

@@ -121,6 +147,36 @@ def owner(self, value: uuid.UUID):
121147
assert value is None or isinstance(value, uuid.UUID)
122148
self._owner = value
123149

150+
@property
151+
def wallet_address(self) -> bytes:
152+
"""
153+
Wallet address of the member this key belong to.
154+
"""
155+
if self._wallet_address is None and self._from_fbs:
156+
if self._from_fbs.WalletAddressLength():
157+
self._wallet_address = self._from_fbs.WalletAddressAsBytes()
158+
return self._wallet_address
159+
160+
@wallet_address.setter
161+
def wallet_address(self, value: bytes):
162+
assert value is None or (type(value) == bytes and len(value) == 20)
163+
self._wallet_address = value
164+
165+
@property
166+
def signature(self) -> bytes:
167+
"""
168+
market maker transaction signature.
169+
"""
170+
if self._signature is None and self._from_fbs:
171+
if self._from_fbs.SignatureLength():
172+
self._signature = self._from_fbs.SignatureAsBytes()
173+
return self._signature
174+
175+
@signature.setter
176+
def signature(self, value: bytes):
177+
assert value is None or (type(value) == bytes and len(value) == 65)
178+
self._signature = value
179+
124180
@staticmethod
125181
def cast(buf):
126182
return UserKey(_UserKeyGen.GetRootAsUserKey(buf, 0))
@@ -135,6 +191,14 @@ def build(self, builder):
135191
if pubkey:
136192
pubkey = builder.CreateString(pubkey)
137193

194+
wallet_address = self.wallet_address
195+
if wallet_address:
196+
wallet_address = builder.CreateString(wallet_address)
197+
198+
signature = self.signature
199+
if signature:
200+
signature = builder.CreateString(signature)
201+
138202
UserKeyGen.UserKeyStart(builder)
139203

140204
if pubkey:
@@ -146,6 +210,12 @@ def build(self, builder):
146210
if owner:
147211
UserKeyGen.UserKeyAddOwner(builder, owner)
148212

213+
if wallet_address:
214+
UserKeyGen.UserKeyAddWalletAddress(builder, wallet_address)
215+
216+
if signature:
217+
UserKeyGen.UserKeyAddSignature(builder, signature)
218+
149219
final = UserKeyGen.UserKeyEnd(builder)
150220

151221
return final

0 commit comments

Comments
 (0)