Author Topic: 分红功能简介  (Read 3771 times)

0 Members and 1 Guest are viewing this topic.

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
好吧,我提点意见。
个人感觉vector不行,可能根本没必要加从数据库取数据存到vector那一步。速度慢,吃内存。用BTS资产做个分红测试,截个CPU图看看?
我注意到了,
但我先预先申请足够的内存。所以vector和数组效率相当。
性能还可以,我在本地测试的
给1000个账号分红,用时少于1s
给11000个账号分红,用时间大于3s
这个感觉优化空间还很大。处理时间大于500ms时witness就不会出块了,如果每个witness都处理不过来,等于网络挂掉。只要有一个 witness够强,能处理过来,就还好,会丢块,但至少不会挂掉。

可以预先计算下,有多少个账户分红,如果超过一定数量,直接拒绝处理,需要使用优化过版本。这个数量由一个性能测试给出来,写死在代码里。但这个预先计算也要先做好性能测试和优化,别直接跑挂了。

另外可以加个规则:每个块最多跑一个分红交易,多的不受理。甚至,发现有分红交易,其他交易都不处理。或者只在“维护块”时才处理分红交易,这样处理时间就相对充裕一点。

Quote
考虑 A股股东一般在几万左右,
初期的BTS的资产 股东一般在 几百左右,性能够用了

将来如果一个资产真在几万甚至几十万个股东,有两个方便可以改进
1.witness当让需要更好的电脑,
2.执行操作时候采取异步, 先adjust 发分红者的余额,就可以打包交易广播了,然后在慢慢调整股东余额。这样不会影响打包速度。
异步操作的思路可以,但是需要在处理下个块,或者本块下一个操作前完成,否则,如果下个操作需要引用分红操作的结果数据,就傻了,会导致卡死或者数据不一致(分叉)。这个可能涉及整个架构的调整,方向没问题,但预计工程量不小。

以上供参考。
BitShares committee member: abit
BitShares witness: in.abit

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1
分红功能是不是可以用于批量转账省手续费? 那交易所爽死了
是给股东分红啊,和批量转账没关系
github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091

Offline sudo

  • Hero Member
  • *****
  • Posts: 2255
    • View Profile
  • BitShares: ags
分红功能是不是可以用于批量转账省手续费? 那交易所爽死了

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1
好吧,我提点意见。
个人感觉vector不行,可能根本没必要加从数据库取数据存到vector那一步。速度慢,吃内存。用BTS资产做个分红测试,截个CPU图看看?
我注意到了,
但我先预先申请足够的内存。所以vector和数组效率相当。
性能还可以,我在本地测试的
给1000个账号分红,用时少于1s
给11000个账号分红,用时间大于3s
考虑 A股股东一般在几万左右,
初期的BTS的资产 股东一般在 几百左右,性能够用了

将来如果一个资产真在几万甚至几十万个股东,有两个方便可以改进
1.witness当让需要更好的电脑,
2.执行操作时候采取异步, 先adjust 发分红者的余额,就可以打包交易广播了,然后在慢慢调整股东余额。这样不会影响打包速度。
« Last Edit: February 17, 2016, 07:09:37 am by BTSdac »
github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
好吧,我提点意见。
个人感觉vector不行,可能根本没必要加从数据库取数据存到vector那一步。速度慢,吃内存。用BTS资产做个分红测试,截个CPU图看看?
BitShares committee member: abit
BitShares witness: in.abit

Offline sudo

  • Hero Member
  • *****
  • Posts: 2255
    • View Profile
  • BitShares: ags
爽啊 可以搞众筹分红了
众筹买车库吧 利润高 无线份额分割转让方便

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
MUSE witness:mygoodfriend     vote for me

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1
分红功能

Features:
BTS众多功能中股权交易功能是一大特色,但没发给股票持有者分红,所以我琢磨着做了个分红的功能,可以给任意资产持有者 分红(当然也是任意资产)欢迎大家测试,找找BUG
下面是cli 钱包 输出
Code: [Select]
dividend k1 DVD BTS 10000  188 0 testing 1
{
  "ref_block_num": 924,
  "ref_block_prefix": 480314239,
  "expiration": "2016-02-15T15:18:20",
  "operations": [[
      45,{
        "fee": {
          "amount": 20007812,
          "asset_id": "1.3.0"
        },
        "isser": "1.2.11",
        "shares_asset": "1.3.1",
        "dividend_asset": "1.3.0",
        "min_shares": 10000,
        "value_per_shares": 188,
        "block_no": 0,
        "describtion": "testing",
        "extensions": []
      }
    ]
  ],
  "extensions": [],
  "signatures": [
    "1f1782d8f8b74eb711764731855a457aefcdee04d31048915445575871a4e2782a66f6da6e10d68c15245fc6a84b976fc4bf21a36d8177e4ae2c2d90ba6eef0664"
  ]
}

代码在:
https://github.com/pureland/bitshares-2/commits/bitshares
性能测试
给1000个账号分红,用时少于1s
给11000个账号分红,用时间大于3s
考虑 A股股东一般在几万左右,
初期的BTS的资产 股东一般在 几百左右,性能够用了

将来如果一个资产真在几万甚至几十万个股东,有两个方便可以改进
1.witness当让需要更好的电脑,
2.执行操作时候采取异步, 先adjust 发分红者的余额,就可以打包交易广播了,然后在慢慢调整股东余额。这样不会影响打包速度。
« Last Edit: February 17, 2016, 07:14:41 am by BTSdac »
github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091