package com.ruoyi.blockchain.service;

import com.ruoyi.blockchain.domain.BlockchainRecord;
import com.ruoyi.blockchain.domain.BlockchainTransaction;
import java.util.List;

/**
 * 区块链服务接口
 * 
 * @author ruoyi
 */
public interface IBlockchainService {
    
    /**
     * 上链存储数据
     * 
     * @param dataHash 数据哈希值
     * @param dataType 数据类型
     * @param sourceId 源数据ID
     * @return 区块链交易记录
     */
    BlockchainTransaction uploadToChain(String dataHash, String dataType, Long sourceId);
    
    /**
     * 验证链上数据
     * 
     * @param dataHash 数据哈希值
     * @return 验证结果
     */
    boolean verifyOnChain(String dataHash);
    
    /**
     * 查询链上记录
     * 
     * @param transactionHash 交易哈希
     * @return 区块链记录
     */
    BlockchainRecord queryChainRecord(String transactionHash);
    
    /**
     * 批量上链
     * 
     * @param records 待上链记录列表
     * @return 交易记录列表
     */
    List<BlockchainTransaction> batchUploadToChain(List<BlockchainRecord> records);
    
    /**
     * 获取区块链网络状态
     * 
     * @return 网络状态信息
     */
    String getNetworkStatus();
    
    /**
     * 计算数据哈希
     * 
     * @param data 原始数据
     * @return SHA-256哈希值
     */
    String calculateDataHash(String data);
}