mirror of https://github.com/status-im/nim-abc.git
Calculate transaction and output values
This commit is contained in:
parent
7db55248fa
commit
94b4cfb825
|
@ -88,3 +88,12 @@ func hasValidSignature*(transaction: Transaction): bool =
|
|||
let signature = transaction.signature
|
||||
let signee = aggregate(signees)
|
||||
signee.verify(message, signature)
|
||||
|
||||
func value*(transaction: Transaction): UInt256 =
|
||||
for (_, value) in transaction.outputs:
|
||||
result += value
|
||||
|
||||
func outputValue*(transaction: Transaction, owner: PublicKey): UInt256 =
|
||||
for (outputOwner, value) in transaction.outputs:
|
||||
if outputOwner == owner:
|
||||
result += value
|
||||
|
|
|
@ -27,6 +27,16 @@ suite "Transactions":
|
|||
check transaction.inputs.len == 1
|
||||
check transaction.outputs.len == 2
|
||||
|
||||
test "transaction value is the sum of its output values":
|
||||
let genesis = !Transaction.init({alice: 32.u256, bob: 10.u256}, victor)
|
||||
check genesis.value == 42.u256
|
||||
|
||||
test "output value is the value of the output for given owner":
|
||||
let genesis = !Transaction.init({alice: 32.u256, bob: 10.u256}, victor)
|
||||
check genesis.outputValue(alice) == 32.u256
|
||||
check genesis.outputValue(bob) == 10.u256
|
||||
check genesis.outputValue(victor) == 0.u256
|
||||
|
||||
test "a transaction can be converted to bytes":
|
||||
let genesis = !Transaction.init({alice: 32.u256, bob: 10.u256}, victor)
|
||||
let transaction = !Transaction.init(
|
||||
|
|
Loading…
Reference in New Issue