root / trunk / sandbox / jhb / oc2 / messages.py

Revision 338, 2.6 kB (checked in by ocjhb, 1 year ago)

Cleaning up files and documentation; Changes to documentation.py to allow full dump of messages; Updated wallet to handle double spend better

  • Property svn:mime-type set to text/plain
  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1from containerbase import *
2import container
3import occrypto
4
5class Message(Container):
6    fields = [
7        Field('header'),
8    ]
9
10    def __init__(self,data={}):
11        Container.fromData(self,data)
12        self.header = self.__class__.__name__
13
14class MessageException(Message,Exception):
15
16    def __str__(self):
17                return str(self.reason)
18
19class AskLatestCDD(Message):
20    pass
21
22class GiveLatestCDD(Message):
23    fields = Message.fields + [
24        OneItemField('cdd',klass=container.CDD)
25    ]
26
27class FetchMintKeys(Message):
28    fields = Message.fields + [
29        Field('denominations'),
30        Field('keyids')
31    ]
32
33class GiveMintKeys(Message):
34    fields = Message.fields + [
35        SubitemsField('keys',klass=container.MKC)
36    ]
37
38class TransferRequest(Message):
39     fields = Message.fields + [
40        Field('transactionId'),
41        Field('target'),
42        Field('blinds'),
43        SubitemsField('coins',klass=container.Coin),
44        Field('options'),
45    ]
46
47class TransferAccept(Message):
48    fields = Message.fields + [
49        Field('signatures'),
50    ]
51
52class AuthorizedMessage(Message):
53    fields = Message.fields + [
54        OneItemField('message',klass=Message),
55        Field('keyId'),
56        Field('signature',signing=False)
57    ]
58class Error(Message, Exception):
59    fields = Message.fields + [
60        Field('text'),
61        Field('data'),
62        Field('keyId'),
63        Field('signature',signing=False)
64    ]
65
66class TransferReject(Message):
67    fields = Message.fields + [
68        Field('transactionId'),
69        Field('reason'),
70        Field('blinds'),
71        Field('coins'),
72    ]
73
74class TransferDelay(Message):
75     fields = Message.fields + [
76        Field('transactionId'),
77        Field('reason'),
78    ]
79
80class TransferResume(Message):
81     fields = Message.fields + [
82        Field('transactionId'),
83    ]
84
85class SumAnnounce(Message):
86     fields = Message.fields + [
87        Field('transactionId'),
88        Field('amount'),
89        Field('target'),
90    ]
91
92class SumAccept(Message):
93     fields = Message.fields + [
94        Field('transactionId'),
95    ]
96
97   
98class SumReject(Message,Exception):
99     fields = Message.fields + [
100        Field('transactionId'),
101        Field('reason'),
102    ]
103
104class SpendRequest(Message):
105     fields = Message.fields + [
106        Field('transactionId'),
107        SubitemsField('coins',klass=container.Coin),
108    ]
109
110class SpendAccept(Message):
111     fields = Message.fields + [
112        Field('transactionId'),
113    ]
114
115
116class SpendReject(MessageException):
117     fields = Message.fields + [
118        Field('transactionId'),
119        Field('problems'),
120        Field('reason'),
121    ]
122
123
Note: See TracBrowser for help on using the browser.