Seven Day Black and White Challenge: 🔳 Day 3 /七天黑白照片挑战 🔳 第三天

Thanks @susanlo (link) for nominating me to participate in this challenge.
感谢美女 @susanlo (link) 提名我参与这个挑战赛。


Here is my entry:

IMG_20171212_111732.jpg

The rules :

  • Take 7 black & white photos that represent an aspect of your life
  • Present one image every day for seven days
  • No people
  • No explanation
  • Nominate someone every day. Although anyone can join in
  • Use the tag: #sevendaybnwchallenge as one of your five tags

規則如下:

  • 7張代表你生命一部分的黑白照片
  • 一天發出一張照片
  • 没有人的照片
  • 没有解釋
  • 每天提名一個人但任何人都可参加
  • 其中一個標籤必須用: #sevendaybnwchallenge

Today I nominate @null.
(是不是全网最牛的提名了?)


This page is synchronized from the post: Seven Day Black and White Challenge: 🔳 Day 3 /七天黑白照片挑战 🔳 第三天

微信公众号开通赞赏和留言功能

今天登陆微信公众号后台,看到一个什么邀请开通原创功能保护的提示消息。开通后可以留言和打赏。

其实微信公众号的上的文章只有《社区周边事》系列,都是刘美女 @deanliu 和 帅哥 @wilkinshui 原创的,我只负责搬砖。引用农夫山泉的一句广告词: 我们不生产水,我们只是大自然的搬运工。

改编一下就是,我不在微信公众号上发水贴,我只搬刘美女他们的水贴。呵呵,开个玩笑了,刘美女他们的帖子一点也不水。

话说,既然不是自己原创,当然不好意思拿赞赏了,不过话说我好意思拿,有人舍得打赏吗?😀尽管不好意思拿赞赏,但是留言功能还是很重要的嘛。这样就可以和大家互动了。虽说直接发消息也能互动,但是在浩如烟海的信息中找到有用的信息太难了。

于是按提示申请了一下,结果很快就审核通过了

欢迎大家多多留言互动啊。

公众号数据

分享点公众号数据

关注人数


截至我撰文时,已经有463人关注啦。

虽然关注人数不多,但是实在是因为玩STEEMIT的华语用户太少,估摸中文区华语用户,未必能有400人吧,活跃的用户应该更少,所以这个数据已经很让人满足啦。

图文阅读量

从数据可以看出,最近30天的图文阅读量不是很高,不过这也没办法,实在是因为我只转发了几篇《社区周边事》,如果多发一些文章,估计会好一些吧。

消息发送次数


消息发送次数倒是挺高,每天上百或者几百条。看来公众号steem和bts相关查询功能还是有用户的:)

接口调用失败率


从上图可以看出,公众号调用我后台API有一定的失败率。
不过这个也没啥好办法解决,因为失败多数情况都是由于steem或者bts的RPC 节点不稳定导致的。

总之,虽然公众号上线好久,但是我没太怎么上心弄,这些数据差强人意吧。

公众号添加方法

还没加公众号的,快点上车啊


This page is synchronized from the post: 微信公众号开通赞赏和留言功能

Seven Day Black and White Challenge: 🔳 Day 2 /七天黑白照片挑战 🔳 第二天

Thanks @susanlo (link) for nominating me to participate in this challenge.
感谢美女 @susanlo (link) 提名我参与这个挑战赛。


Here is my entry:
IMG_20171211_075532.jpg

The rules :

  • Take 7 black & white photos that represent an aspect of your life
  • Present one image every day for seven days
  • No people
  • No explanation
  • Nominate someone every day. Although anyone can join in
  • Use the tag: #sevendaybnwchallenge as one of your five tags

規則如下:

  • 7張代表你生命一部分的黑白照片
  • 一天發出一張照片
  • 没有人的照片
  • 没有解釋
  • 每天提名一個人但任何人都可参加
  • 其中一個標籤必須用: #sevendaybnwchallenge

Today I nominate @null.
(是不是全网最牛的提名了?)


This page is synchronized from the post: Seven Day Black and White Challenge: 🔳 Day 2 /七天黑白照片挑战 🔳 第二天

python-bitshares 边学边记 (三) / BitShares类

在之前的两篇文章中,我们简单介绍了如何安装python-bitshares 以及python-bitshares的钱包相关操作。


(图源 :pixabay)

这节我们来继续学习python-bitshares 。

BitShares类

BitShares类是python-bitshares中最常被使用到的类。

我们可以用下列代码创建一个BitShares类实例
from bitshares import BitShares
bitshares = BitShares()

之后就可以用它来访问和操作bitshares区块链了,比如我们在第一篇文章中介绍的bitshares.info())

下面我们来介绍BitShares类几项常用功能。

投票功能

之前在我们uptick系列学习文章中,我们介绍过使用uptick进行投票,比如投见证人票给 @abit
uptick approvewitness in.abit

那么直接使用python-bitshares又该如何处理呢?
只需以下代码就可以投票了,(记得将xxxx换成你的ID)
from bitshares import BitShares
bitshares = BitShares()
bitshares.approvewitness(["in.abit"], "xxxx")

如果要取消见证人票,则使用: disapprovewitness

除此之外,还有以下投票/取消投票功能

  • approvecommittee / disapprovecommittee
  • approveworker / disapproveworker
  • approveproposal / disapproveproposal

需要注意一点是,尽管几个投票操作看起来很相似,但是approveproposal / disapproveproposal使用的是Proposal_update operation,而另外几项投票功能则使用的是Account_updateoperation。

比如我们上边的投见证人票,在区块链浏览器中的信息如下:

转账功能

转账是我们的常用功能之一。
使用代码转账也很简单,方法定义如下:
def transfer(self, to, amount, asset, memo="", account=None):

转账示例代码如下:
from bitshares import BitShares
bitshares = BitShares()
bitshares.transfer("xxx1", 1, "CNY", "Test transfer!", "xxx2")

BitShares类参数

以上示例,我们都是用默认设置创建类实例。
除此之外,我们也可以指定一些参数,来对类实例进行一些定制。

比如指定以下参数:

  • 指定nobroadcast=True,不广播交易信息
  • 指定unsigned=True,不签名交易信息
  • 指定expiration=600,指定交易超时时间
  • 指定node=wss://ws.gdex.top,指定API节点
    更多参数请参考BitShares类代码。

参数blocking

在测试过程中,遇到一个很奇怪的问题,我通过参数node="wss://openledger.hk/ws"指定使用 wss://openledger.hk/ws这个节点,然后上述示例代码都执行成功(没有任何出错信息的完成),但是我使用区块链浏览器查看账户,发现没有产生任何新操作(更新账户/转账)。

后来我使用默认节点,或者使用节点wss://ws.gdex.top,则一切正常。
我猜测,可能是交易超时,或者其它原因,但是出错都给个提示会更好一些。

后来我发现一个blocking参数,介绍如下:

param str blocking: Wait for broadcasted transactions to be included in a block and return full transaction (can be “head” or “irrversible”)

from bitshares import BitShares
bitshares = BitShares(node="wss://openledger.hk/ws", blocking=True)
bitshares.approvewitness(["in.abit"], "xxxx")
于是我写了如上投票代码,并执行


等了好久等来了出错信息。

Exception: The operation has not been added after 10 blocks!

看了一下代码,原来就是在广播交易之后,再遍历新块,看看对应交易是否在新块中。如果10个块还没找到对应交易,则返回出错信息。

总结

BitShares类是python-bitshares中最常用的类之一。本文介绍了以下内容:

  • BitShares类的创建
  • 投票功能
  • 转账功能
  • BitShares类参数
  • 参数blocking

更多信息请参考BitShares类代码。

参考信息


This page is synchronized from the post: python-bitshares 边学边记 (三) / BitShares类

Seven Day Black and White Challenge: 🔳 Day 1 /七天黑白照片挑战 🔳 第一天

Thanks @susanlo (link) for nominating me to participate in this challenge.
感谢美女 @susanlo (link) 提名我参与这个挑战赛。


Here is my entry:

IMG_20171210_091438.jpg

The rules :

  • Take 7 black & white photos that represent an aspect of your life
  • Present one image every day for seven days
  • No people
  • No explanation
  • Nominate someone every day. Although anyone can join in
  • Use the tag: #sevendaybnwchallenge as one of your five tags

規則如下:

  • 7張代表你生命一部分的黑白照片
  • 一天發出一張照片
  • 没有人的照片
  • 没有解釋
  • 每天提名一個人但任何人都可参加
  • 其中一個標籤必須用: #sevendaybnwchallenge

Today I nominate @null.
(是不是全网最牛的提名了?)


This page is synchronized from the post: Seven Day Black and White Challenge: 🔳 Day 1 /七天黑白照片挑战 🔳 第一天

python-bitshares 边学边记 (二) / 钱包操作

在之前的帖子中,介绍了python-bitshares 这个用于操作bitshares区块链的强大的python库。并介绍了python-bitshares的安装以及运行了一个简单的示例,并简单分析了python-bitshares与bitshares RPC的关系。


(图源 :pixabay)

这节我们来继续学习python-bitshares 。

导入私钥

在Uptick的介绍文章中,为了更好的使用uptick,我们将bitshares账户的私钥添加到了uptick钱包中。其实,钱包功能是在python-bitshares这个层次实现和访问的。uptick只是对相关功能进行了封装。

为了方便我们后续的学习,我们也要将私钥添加到python-bitshares的本地钱包中。如何获取账户私钥,可以参考这篇文章中的对应步骤:

使用uptick 导入私钥

如果我们安装了uptick,那么可以直接使用uptick导入私钥的,非常方便。如何导入,在这篇文章已经做了详尽的介绍,就不再赘述了。

但是我直接安装的python-bitshares,是不包含uptick的,所以无法使用uptick导入私钥。

使用代码导入私钥

导入私钥之前我们需要先创建个钱包
from bitshares import BitShares
bitshares = BitShares(node="wss://openledger.hk/ws")
bitshares.wallet.create("passwd")

上述代码创建一个本地钱包,并设置密码为passwd
(密码仅供示例,出于安全考虑,实际使用时,建议设置复杂一点的密码)

再对钱包进行创造之前,我们首先需要解锁钱包
bitshares.wallet.unlock("passwd")

解锁钱包之后,我们就可以导入私钥
bitshares.wallet.addPrivateKey("5XXXXXXXX")
执行成功后,私钥就被导入到钱包中去了。

使用UNLOCK环境变量解锁

在以上例子中,我们使用了
bitshares.wallet.unlock("passwd")
来解锁钱包。

在代码中硬编码密码可不是一个好习惯,假设我们有多份代码,然后需要修改密码,这一定是一个很头疼的事。

那么还有什么方法指定密码呢?

那就是设置环境变量,比如在我的系统中,
export UNLOCK="passwd"
为了每次都生效,可以加入到对应用户的.bashrc文件中

这样我们就可以无需在程序中硬编码密码以及每次调用unlock()了。

钱包其它功能

一般情况,都是python-bitshares 和钱包打交道,我们当它透明的就好。但是偶尔可能也需要我们直接对钱包进行操作,比如说看看钱包中有哪些用户,或者从钱包中读出某个对应用户的私钥。

一些可能会被使用到的函数如下:

  • changePassphrase,修改密码
  • getAccounts, 列出钱包中所有用户
  • getPublicKeys,列出钱包中所有公钥
  • getPrivateKeyForPublicKey,列出公钥的对应私钥。

更多函数及功能,请参考:
https://github.com/xeroc/python-bitshares/blob/master/bitshares/wallet.py

钱包存储位置

有时候我们可能需要将钱包迁移到其它的账户下,这时候一个一个私钥重新添加是很苦恼的事情,如果能直接迁移钱包文件就好了。

不同的系统下,钱包存储位置是不同的
在Linux系统下,钱包文件路径为:~/.local/share/bitshares/bitshares.sqlite

从命名可以看出是一个sqlite数据库,库中还包含一些默认参数之类的设置,这节就不详聊了。

总结

python-bitshares 提供了一个加密的本地钱包,这样我们使用起来就更加便利了。本文介绍了python-bitshares的钱包相关操作,包括以下内容:

  • 创建钱包
  • 解锁钱包
  • 导入私钥
  • 使用UNLOCK环境变量
  • 钱包的其它函数
  • 钱包的存储位置

参考信息


This page is synchronized from the post: python-bitshares 边学边记 (二) / 钱包操作

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×