Transacting users before HF20 vs after.

in hf20 •  11 months ago 

To gain some insights on the impact of HF20 on access to the STEEM blockchain, I ran a little script that looked at one simple metric: The number of unique transacting accounts per hour of the day. To get a usefull insights I rewinded to a few days before the hard fork untill just before the moment I made this post. I'll share my script below, but first, here is the data.
Let us first look what two normal days look like:

DateFromTillTransacting users
2018-09-230:001:0013398
1:002:0014807
2:003:0012984
3:004:0012781
4:005:0011569
5:006:0014502
6:007:0014645
7:008:0014012
8:009:0013098
9:0010:0013349
10:0011:0015252
11:0012:0013588
12:0013:0017553
13:0014:0016040
14:0015:0015115
15:0016:0017483
16:0017:0015255
17:0018:0016414
18:0019:0017095
19:0020:0016090
20:0021:0015258
21:0022:0015101
22:0023:0012428
23:0024:0013247
2018-09-240:001:0013287
1:002:0013338
2:003:0013619
3:004:0014070
4:005:0014289
5:006:0013608
6:007:0013756
7:008:0016027
8:009:0012244
9:0010:0017003
10:0011:0015512
11:0012:0015231
12:0013:0017231
13:0014:0015986
14:0015:0015101
15:0016:0017626
16:0017:0016788
17:0018:0017124
18:0019:0017918
19:0020:0015851
20:0021:0018640
21:0022:0016303
22:0023:0012480
23:0024:0014577

And now two days with HF20 in it. Remember, HF20 was supposed to activate at 15:00 on the 25th.

DateFromTillTransacting users
2018-09-250:001:0014633
1:002:0013038
2:003:0012497
3:004:0012908
4:005:0013970
5:006:0014156
6:007:0013635
7:008:0014027
8:009:0013483
9:0010:0015537
10:0011:0014755
11:0012:0015216
12:0013:0015931
13:0014:0018746
14:0015:0018782
15:0016:00635
16:0017:0092
17:0018:0074
18:0019:0079
19:0020:0056
20:0021:0051
21:0022:0059
22:0023:0083
23:0024:0045
2018-09-260:001:0065
1:002:0044
2:003:0048
3:004:0091
4:005:0041
5:006:0043
6:007:00118
7:008:00157
8:009:00130
9:0010:00136
10:0011:0099
11:0012:0072
12:0013:00107
13:0014:0087
14:0015:00118
15:0016:005061
16:0017:006670
17:0018:004207
18:0019:004020
19:0020:002819
20:0021:002372
21:0022:00
22:0023:00
23:0024:00

Most if obvious from the tables, but let us look at it in a little graph:

The above data was gathered using the below asyncsteem script.

#!/usr/bin/python
from twisted.internet import reactor, endpoints
from twisted.logger import Logger, textFileLogObserver
from asyncsteem import ActiveBlockChain

class CommentStream:
    def __init__(self):
        self.accounts = set()
    def _account(self,account):
        self.accounts.add(account)
    def hour(self,tm,event,client):
        print tm,len(self.accounts)
        self.accounts = set()
    def account_create(self,tm,event,client):
        self._account(event["creator"])
    def account_create_with_delegation(self,tm,event,client):
        self._account(event["creator"])
    def account_update(self,tm,event,client):
        self._account(event["account"])
    def account_witness_proxy(self,tm,event,client):
        self._account(event["account"])
    def account_witness_vote(self,tm,event,client):
        self._account(event["account"])
    def cancel_transfer_from_savings(self,tm,event,client):
        self._account(event["from"])
    def change_recovery_account(self,tm,event,client):
        self._account(event["account_to_recover"])
    def claim_reward_balance(self,tm,event,client):
        self._account(event["account"])
    def comment_options(self,tm,event,client):
        self._account(event["author"])
    def comment(self,tm,event,client):
        self._account(event["author"])
    def decline_voting_rights(self,tm,event,client):
        self._account(event["account"])
    def delegate_vesting_shares(self,tm,event,client):
        self._account(event["delegator"])
    def delete_comment(self,tm,event,client):
        self._account(event["author"])
    def feed_publish(self,tm,event,client):
        self._account(event["publisher"])
    def limit_order_cancel(self,tm,event,client):
        self._account(event["owner"])
    def limit_order_create(self,tm,event,client):
        self._account(event["owner"])
    def recover_account(self,tm,event,client):
        self._account(event["account_to_recover"])
    def request_account_recovery(self,tm,event,client):
        self._account(event["account_to_recover"])
    def transfer_from_savings(self,tm,event,client):
        self._account(event["from"])
    def transfer(self,tm,event,client):
        self._account(event["from"])
    def transfer_to_savings(self,tm,event,client):
        self._account(event["from"])
    def transfer_to_vesting(self,tm,event,client):
        self._account(event["from"])
    def vote(self,tm,event,client):
        self._account(event["voter"])
    def withdraw_vesting(self,tm,event,client):
        self._account(event["account"])
    def witness_update(self,tm,event,client):
        self._account(event["owner"])

mypath = dirname(realpath(__file__))
observer = textFileLogObserver(io.open(join(mypath,"hf20.log"), "a"))
logger = Logger(observer=observer,namespace="asyncsteem")
blockchain = ActiveBlockChain(reactor,log=logger,nodelist="default",rewind_days=3)
steembot = CommentStream()
blockchain.register_bot(steembot,"comment_stream")
reactor.run()
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:  

I will continue to promote steem in Aceh, #Hf20 has gone well.

Gone well?

HF20 so far did NOT go all that well and is not doing well as we speak at one-seventh of the normal transacting user count. I really hope this HF will be used as a learning experience by both devs and witnesses.

I agree, let them make repairs. Greetings from me

Wow! Good job! Great info!
I knew there was a big drop but that's even bigger than I thought. I think most of the users who could post were posting. lol

Interesting finding. I suppose HF20 fights spam quite well. ;-)

That's a truly massive drop. I wonder if it will start to pick up in the next few days or whether Steemit has lost some users permanently.