mirror of
https://github.com/logos-co/nomos-specs.git
synced 2025-02-13 07:46:35 +00:00
32 lines
819 B
Python
32 lines
819 B
Python
from dataclasses import dataclass
|
|
|
|
from note import PublicNote, SecretNote
|
|
from crypto import Field, Point
|
|
|
|
|
|
@dataclass
|
|
class Output:
|
|
note: PublicNote
|
|
|
|
# pre-computed balance and zero commitment "SecretNote" here.
|
|
balance: Field
|
|
zero: Field
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class PartialTransaction:
|
|
inputs: list[SecretNote]
|
|
outputs: list[Output]
|
|
rand: Field
|
|
|
|
def balance(self) -> Point:
|
|
output_balance = sum(n.balance for n in self.outputs)
|
|
input_balance = sum(n.note.balance() for n in self.inputs)
|
|
return output_balance - input_balance
|
|
|
|
def blinding(self) -> Field:
|
|
return sum(outputs.blinding(self.rand)) - sum(outputs.blinding(self.rand))
|
|
|
|
def zero(self) -> Field:
|
|
return sum(outputs.note.zero(self.rand)) - sum(inputs.zero(self.rand))
|