Coder Social home page Coder Social logo

repchain_python's Introduction

#基于的flask的Repchain后端 ##目录结构:

│  main.py  #主运行文件
│  readme.md 
│  requirements.txt
│  
│              
├─certs
│      121000005l35120456.node1.jks #测试用jks文件
│      121000005l35120456.node1.pem
└─src
    │  back.py #与main.py功能相同 测试用
    │  chaininfo.py #封装的请求接口以及返回值数据的处理
    │  peer_pb.py
    │  peer_pb2.py
    │  postTranByString.py #处理交易相关的代码

##使用库:

cryptography==37.0.4
Flask==2.0.2
Flask_Cors==3.0.10
protobuf==3.18.1
pyjks==20.0.0
requests==2.28.1
gunicorn
gevent


##用法: 在ide中运行: 打开main.py,填写url、client_url。在app.run中指定后端运行ip和端口。不填写默认为127.0.0.1:5000。 稳定运行: 使用gunicorn和gevent,配置根目录下的gunicorn.conf.py文件。 使用gunicorn main:app -c ./gunicorn.conf.py 命令运行

##chaininfo

save_json(save_path, data):

保存接口返回的json文件,测试用函数

load_json(file_path)

加载接口返回的json文件,测试用函数

get_chain_info(url)

请求/chaininfo,获取区块链总体信息

get_block_info_by_height(url, blockheight)

请求/block/height,指定高度的块,返回详细的块信息。

block_info_process(block_info)

对返回的blockinfo进行处理。 把blockinfo返回的多层嵌套json处理为单层的dict。
dict的key为参数名,value为参数值。

args_info_process(data)

处理前端传来的交易的参数信息

convert_jks2pem(jks_path,password)

读取前端传入的jks文件,处理为pem格式

##postTranByString 创建交易,提交交易

class Client:
    
    __init__(self, host,pem_path, password, credit_code, cert_name):
     

    # 指定唯一合约:名称+版本号
   __get_cid(self, chaincode_name, chaincode_ver):
  

    # 指定用于签名的证书:证书名+用户名
    __get_certid(self):
       

    # 从pem文件中得到私钥
    __get_pvkey(self):
 

    # 得到对交易的签名signature
    __get_sig(self, transaction):
       

    ##从文件路径得到内容
    __get_code(self, package_path):
       

    # 创建设置状态交易:交易标识string,合约名称string,合约版本int,更改状态bool
    create_trans_set_state(self, trans_id, chaincode_name, chaincode_ver, state):
 

    # 创建部署/升级合约交易:交易标识string,合约名称string,合约版本int,合约代码类型string,
    # 超时时间int,合约路径string,法律描述string
    create_trans_deploy(self, trans_id, chaincode_name, chaincode_ver, chaincode_type, \
                            timeout=1000, package_path=os.path.dirname(__file__) + '\\contracts\\ConEvidence.scala',
                            legalprose=""):


    # 创建调用合约交易:交易标识string,合约名称string,合约版本int,合约方法string,方法参数string
    create_trans_invoke(self, trans_id, chaincode_name, chaincode_ver, func, params):
        
    ## 进行http请求
    doPost(self, url, data):
        headers = {'Content-Type': 'application/json'}
        
    # 提交带签名的交易
    postTranByString(self, data):
       
    # 从交易id得到交易内容
    getTransById(self, tx_id):
        

##main url=''#指定http请求的地址 Client_url=''指定区块链的ip

get_chain_info():

获取区块链的基础信息


get_height():

通过高度获取区块链的信息

get_block_info():
 

测试代码,通过高度获取区块链的信息



upload_jks():

        return "上传失败"

        return "上传成功"

#必须先执行upload_jks,才能执行submit_transinfo

接收前端上传的jks秘钥文件,并返回前端上传结果

submit_transinfo():
   

把jks文件转换为pem文件,使用前端参数创建交易,并提交交易。

repchain_python's People

Contributors

icarusaegis avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.