39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from wallet import Wallet
|
||
from transaction import Transaction
|
||
from blockchain import Blockchain
|
||
from bls import aggregate_signatures, aggregate_verify
|
||
|
||
alice = Wallet()
|
||
bob = Wallet()
|
||
blockchain = Blockchain( # 给Alice初始10个代币
|
||
genesis_recipient=alice.get_address(),
|
||
genesis_amount=10
|
||
)
|
||
|
||
alice_balance = sum(
|
||
amt for (addr, amt) in blockchain.utxo.values()
|
||
if addr == alice.get_address()
|
||
)
|
||
print("Alice 的初始余额:", alice_balance)
|
||
|
||
tx1 = Transaction(alice.get_address(), bob.get_address(), 10)
|
||
tx1.sign(alice)
|
||
print("交易1验证结果:", tx1.is_valid())
|
||
|
||
if blockchain.add_transaction(tx1):
|
||
print("交易1成功上链")
|
||
|
||
# Bob向Alice转账15个代币(失败,余额不足)
|
||
tx2 = Transaction(bob.get_address(), alice.get_address(), 15)
|
||
tx2.sign(bob)
|
||
print("交易2验证结果:", tx2.is_valid()) # True,但余额不足
|
||
print("交易2上链结果:", blockchain.add_transaction(tx2)) # False
|
||
|
||
# 聚合签名
|
||
carol = Wallet()
|
||
tx3_data = b"Multisig_Transaction"
|
||
signature_alice = alice.sign_transaction(tx3_data)
|
||
signature_carol = carol.sign_transaction(tx3_data)
|
||
agg_sig = aggregate_signatures([signature_alice, signature_carol])
|
||
valid = aggregate_verify([alice.pk, carol.pk], [tx3_data, tx3_data], agg_sig)
|
||
print("聚合签名验证结果:", valid) # True |