SharedCourses/docs/courses/软件工程学院/区块链基础/作业/第二次作业/main.py

39 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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