Пример #1
0
def vote_delegated_node():
    transactions = transaction.get_transactions()
    current_mk_root = merkle_tree(transactions)

    delegated_node = (long(current_mk_root, 16) % 5) + 1

    return delegated_node
Пример #2
0
def show_transaction_list():
    from app import transaction, log
    import logging
    tx_list = transaction.get_transactions()
    if len(tx_list) == 0:
        print("No Transaction\n")
        main_menu()
    else:
        for t in tx_list:
            log.write(t.message, logging.DEBUG)
        main_menu()
Пример #3
0
def list_all_transaction():
	for t in transaction.get_transactions():
		time_stamp = datetime.datetime.__str__(t.time_stamp)
		log.write(
			"\n++++++++++ Transaction ID: "+ t.tx_id +" ++++++++++"
			"\nData: "+ t.message +
			"\n거래시각: "+ time_stamp +
			"\n공개키: "+ t.pub_key +
			"\n서명: "+ t.signature +
			"\n유형: "+ t.type +
			"\n+++++++++++++++++++++++++++++++++++++++++++++++++++++",
			logging.DEBUG)
Пример #4
0
def create_block():

    diff_bits = 5
    transactions = transaction.get_transactions()

    # transaction이 없을 경우 block을 생성하지 않음
    if (len(transactions) == 0):
        print("No transactions...")
        return

    # 내 node가 가지고 있는 마지막 블럭
    last_block = block.get_last_block()

    #transaction JSON 문자열로 변환
    transactions_str = []
    for tx in transactions:
        transactions_str.append(tx.to_json())

    # transaction 으로부터 merkle root 생성
    merkle_root = merkle_tree(transactions_str)

    # block 새로 생성
    _block = Block()

    # 마지막 블록이 있는 경우
    if last_block:

        # last bock 에 대한 정보 저장
        _block.prev_block_id = last_block.block_id
        _block.prev_block_hash = last_block.block_hash

        # 작업 증명을 위해 nonce값과 결과 생성
        _block.block_id = last_block.block_id + 1
        _block.merkle_root = merkle_root
        _block.difficulty = diff_bits

        block_header = _block.getheader_json()
        hash_result, nonce = proof_of_work(block_header, diff_bits)

        # block 정보
        _block.block_hash = hash_result
        _block.nonce = nonce
        _block.tx_list = transactions_str

        # 내 node에 block 저장
        block.append_block(_block)

        # 내 node가 가지고 있는 transaction 삭제
        transaction.remove_all()

        # 나머지 node에게 block 전송
        sender.send_to_all_node((_block.to_json()), except_my_node=True)
Пример #5
0
def create_block():
	transactions = transaction.get_transactions()

	# transaction이 없을 경우 block을 생성하지 않음
	if len(transactions) == 0:
		return

	# 내 node 가 가지고 있는 마지막 블럭
	last_block = block.get_last_block()

	# transaction JSON 문자열로 변환
	transactions_str = list(map(lambda x: x.to_json(), transactions))

	# transaction으로부터 merkle root 생성
	merkle_root = merkle_tree(transactions_str)

	# block 정보에 merkle root 할당
	block_info = merkle_root

	# block 새로 생성
	_block = Block()

	# 마지막 block이 있는 경우
	if last_block:
		# block 정보에 마지막 블럭의 해쉬를 더함
		block_info += last_block.block_hash

		# 새로 생성한 block에 이전 block 정보 저장
		_block.prev_block_hash = last_block.block_hash
		_block.prev_block_id = last_block.block_id

	# 작업 증명을 통해 nonce값과 hash 결과 생성
	hash_result, nonce = proof_of_work(block_info, diff_bits=5)

	# block 정보
	_block.block_hash = hash_result
	_block.nonce = nonce
	_block.block_info = block_info
	_block.time_stamp = datetime.datetime.now()

	# 내 node 에 block 저장
	block.create_block(_block)

	# 내 node가 가지고 있는 transaction 삭제
	transaction.remove_all()

	# 나머지 node에게 block 전송
	sender.send_to_all_node((_block.to_json()), except_my_node=True)
Пример #6
0
def create_block():
    transactions = transaction.get_transactions()

    # transaction이 없을 경우 block을 생성하지 않음
    if len(transactions) == 0:
        return

    _block = block.create_block(transactions)

    block.store_block(_block)

    # 내 node가 가지고 있는 transaction 삭제
    transaction.remove_all()

    # 나머지 node에게 block 전송
    sender.send_to_all_node((_block.to_json()), except_my_node=True)
Пример #7
0
def list_all_transaction():
    print("=== list all transactions ===")
    for t in transaction.get_transactions():
        print(t)
Пример #8
0
def list_all_transaction():
    import logging
    for t in transaction.get_transactions():
        log.write(t, logging.DEBUG)