用python从零开始写一个区块链钱包(2)

in hive-180932 •  3 months ago  (edited)

搭建完毕环境,我们正式开始写代码。

首先我们新建一个PY文件,就随便命名为hello1.py吧。

我们首先来学习学习streamlit这个库。

我们首先输入两行:

import streamlit as st

st.title("一个钱包")

第一行是加载库,第二行就是显示一个标题的意思。

我们来尝试运行看看,我们打开一个命令行窗口,然后进去文件夹所在目录后输入:

streamlit run hello1.py

image.png

一般会自动打开一个网页,或者我们去浏览器手动输入:http://localhost:8501/

image.png

一个只有一个标题的web app就做好了,是不是很简单呢:)

接下来我们构想是写一个钱包的基础转账功能,
需要的栏目大概有这些:
1.账户
2.密码
3.转账给谁?
4.转账币种
5.金额
6.memo(备忘)

好,我们开始写

player=st.text_input("请输入账号")
password=st.text_input("请输入密码",type="password")

toplayer = st.text_input('转到to')

Token=st.text_input('转账币种Token')
Token=Token.upper()

number=st.text_input('数量Number')
memo = st.text_input('备忘memo')

button_trans=st.button('提交')

写好保存刷新一下就有了。

image.png

写了一堆代码,解释一下:
st.text_input("请输入账号"),这个是显示一个文本输入框的意思
st.text_input("请输入密码",type="password"),加上type="password",意思就是星号输入,输入密码的模式

Token=st.text_input('转账币种Token')
Token=Token.upper(),这里.upper()的意思就是输入的字母全部转为大写,统一格式以免出错。

st.button('提交'),这意思是新建一个按钮。

更多的用法,可以参考说明文档:http://blog.hubwiz.com/2019/11/07/streamlit-manual/

image.png

我们测试一下,发现无论输入啥都没反应,那当然,我们啥都没写嘛,下面我们来写一个函数。

我们先看看steem是怎么转账的,以beem库为例:

from beem.steem import Steem
from beem.account import Account
#节点地址,这是我的节点
nodes = 'https://cn.steems.top'
#加载密码和节点
s = Steem(keys=[password],node=nodes)
#加载账户
account = Account(player,steem_instance=s)
# 转账
tx=account.transfer(toplayer,money_number, token,memo)

知道怎么转账了,我们来写一个函数方便调用:

def trans(nodes,password,player,toplayer,money_number,token,memo):
    #加载密码和节点
    s = Steem(keys=[password],node=nodes)
    #加载账户
    account = Account(player,steem_instance=s)
    # 转账
    tx=account.transfer(toplayer,money_number, token,memo)
    return tx

这样一个函数就写好了,我们来试试调用看看。
我们就设定为当按下“提交”按钮,就调用这个函数进行转账。首先你要注册一个steem账号,然后要有一点儿钱进行测试转账。steem注册,在这里可以免费注册 :https://signup.steem.buzz/

钱的话,可以去交易所买点,火币的转出的手续费是0.001STEEM,非常便宜,可以买几个玩玩。

也可以喊我转一点儿给你测试玩玩。

言归正传,我们来调用函数看看。

if button_trans:
    tx = trans(nodes,password,player,toplayer,number,Token,memo)
    st.write(tx)

这代码很简单,if button_trans就是当按下去按钮的时候发生了啥事。
然后把上面几个文本输入框输入的内容传参到刚才写的函数里面,
最后把返回信息显示出来。streamlit 的显示方式就是st.write(tx)

我们来测试一下。

成功显示出信息的,有没成功我们查看区块浏览器看看。

https://steemd.com/tx/2af579023c318d22f6c41d3761f4d05c517f8d8b

很好的转出去了,完美。

至此,一个只有转账功能的简单区块链钱包就写好了,撒花。

才一节课就写完了?后面怎么开课收学费走向人生巅峰迎娶白富美?这是个问题而且我还没考虑好。

下节课,我们来把这个简单的钱包部署在网上,方便提供给用户使用。

本节全部源代码可以从我的github获得:https://github.com/maiyude2018/how-to-build-a-wallet/blob/master/%E7%AC%AC2%E8%8A%82/hello1.py

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  3 months ago 

streamlit这个库好方便

  ·  3 months ago 

好处是方便,坏处也是方便,缺乏自定义和太丑

  ·  3 months ago 

完美~~卖鱼的很厉害

拍拍拍