Author Topic: JDS Dry Run #2  (Read 16331 times)

0 Members and 1 Guest are viewing this topic.

Offline islandking

  • Sr. Member
  • ****
  • Posts: 378
  • The king of the island
    • View Profile
Is there any update on this project?
I've been working on a new electronic cash system that's fully peer-to-peer, with no trusted third party. - Satoshi

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
There's a bug in the code and it should be:

Code: [Select]
      void chain_database_impl::update_active_delegate_list( const full_block& block_data,
                                                             const pending_chain_state_ptr& pending_state )
      {
          std::vector<account_id_type> active_del;
          if( block_data.block_num % BTS_BLOCKCHAIN_NUM_DELEGATES == 0 )
          {
             // perform a random shuffle of the sorted delegate list.

             active_del = self->next_round_active_delegates();
          } else {
              active_del = self->get_active_delegates();
          }
             auto rand_seed = fc::sha256::hash(self->get_current_random_seed());
             uint32_t block_index = block_data.block_num % BTS_BLOCKCHAIN_NUM_DELEGATES;
             size_t num_del = active_del.size();
uint32_t signee_delegate_index = -1;
if (block_index!=0) {
    //from 0 to where the block signee, we need to swap them to tail to ensure they can only particapant once in a round.
    public_key_type block_signee;
    block_signee = block_data.signee();
    //get delegate's active key
    for (uint32_t i=0;i<num_del;++i) {
        auto delegate_record = pending_state->get_account_record( active_del[i] );
        FC_ASSERT( delegate_record.valid() && delegate_record->is_delegate() );
       
        if (delegate_record->active_key()==block_signee) {
            signee_delegate_index = i;
            break;
        }
    }
}
             for( uint32_t i = signee_delegate_index+1; i < num_del; ++i )
             {
                for( uint32_t x = 0; x < 4 && i < num_del; ++x, ++i )
                   std::swap( active_del[i], active_del[[b]i+(rand_seed._hash[x]%(num_del-i))[/b]] );
                rand_seed = fc::sha256::hash(rand_seed);
             }

             pending_state->set_property( chain_property_enum::active_delegate_list_id, fc::variant(active_del) );
      }
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
You are making sure that a delegate can only participate in a round once on average. 

This means that a delegate does not know in advance when he will go...but when he does get to go he can mine his secrets to make sure he gets to go next....

So you have to wait until at least N delegates have gone before you can be secure.   You gain nothing by shuffling every time. 

If you want to gain something then you need delegates to commit in advance to 101 secrets to be revealed in time and then shuffle every turn.  A delegate would not be able to mine their secret on their turn because they have pre-committed to the next 101 secrets.
It's not 1 delegate in one round but still 50 delegates a round and shuffle the rest delegates after each block.
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
You are making sure that a delegate can only participate in a round once on average. 

This means that a delegate does not know in advance when he will go...but when he does get to go he can mine his secrets to make sure he gets to go next....

So you have to wait until at least N delegates have gone before you can be secure.   You gain nothing by shuffling every time. 

If you want to gain something then you need delegates to commit in advance to 101 secrets to be revealed in time and then shuffle every turn.  A delegate would not be able to mine their secret on their turn because they have pre-committed to the next 101 secrets.
Correct me if I'm wrong as I'm not so familiar with the code.
For mining, you can see from the code that I'm shuffling the rest delegates after the signing delegate. The signing delegate will be excluded in this round and he can't mine before hand because his secret will only be used in next round and he needs to know all the other delegates' secrets to mine. This works like below:
1st delegate of shuffled top 100 signs the block, shuffle the rest 99 delegates.
2nd delegate of shuffled top 100 signs the block, shuffle the rest 98 delegates.
3nd delegate of shuffled top 100 signs the block, shuffle the rest 97 delegates.
...
50th delegate of shuffled top 100 signs the block, shuffle the rest 50 delegates.
1st delegate of shuffled top 100 signs the block, shuffle the rest 99 delegates.

From my understanding, every delegates commits their secrets by showing hash of secrets. Then reveal their secrets in the their round. I checked the code of chain_database_impl::update_delegate_production_info and wallet::sign_block to understand the way secret works.
Weibo:http://weibo.com/zhangweis

Offline bytemaster

You are making sure that a delegate can only participate in a round once on average. 

This means that a delegate does not know in advance when he will go...but when he does get to go he can mine his secrets to make sure he gets to go next....

So you have to wait until at least N delegates have gone before you can be secure.   You gain nothing by shuffling every time. 

If you want to gain something then you need delegates to commit in advance to 101 secrets to be revealed in time and then shuffle every turn.  A delegate would not be able to mine their secret on their turn because they have pre-committed to the next 101 secrets. 
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
We have already established that you cannot shuffle after each block.

Can you give more details on this as this is really important for this DAC? Or can you review the changes I made to chain_database_impl::update_active_delegate_list:
Code: [Select]
      void chain_database_impl::update_active_delegate_list( const full_block& block_data,
                                                             const pending_chain_state_ptr& pending_state )
      {
          std::vector<account_id_type> active_del;
          if( block_data.block_num % BTS_BLOCKCHAIN_NUM_DELEGATES == 0 )
          {
             // perform a random shuffle of the sorted delegate list.

             active_del = self->next_round_active_delegates();
          } else {
              active_del = self->get_active_delegates();
          }
             auto rand_seed = fc::sha256::hash(self->get_current_random_seed());
             uint32_t block_index = block_data.block_num % BTS_BLOCKCHAIN_NUM_DELEGATES;
             size_t num_del = active_del.size();
uint32_t signee_delegate_index = -1;
if (block_index!=0) {
    //from 0 to where the block signee, we need to swap them to tail to ensure they can only particapant once in a round.
    public_key_type block_signee;
    block_signee = block_data.signee();
    //get delegate's active key
    for (uint32_t i=0;i<num_del;++i) {
        auto delegate_record = pending_state->get_account_record( active_del[i] );
        FC_ASSERT( delegate_record.valid() && delegate_record->is_delegate() );
       
        if (delegate_record->active_key()==block_signee) {
            signee_delegate_index = i;
            break;
        }
    }
}
             for( uint32_t i = signee_delegate_index+1; i < num_del; ++i )
             {
                for( uint32_t x = 0; x < 4 && i < num_del; ++x, ++i )
                   std::swap( active_del[i], active_del[rand_seed._hash[x]%num_del] );
                rand_seed = fc::sha256::hash(rand_seed);
             }

             pending_state->set_property( chain_property_enum::active_delegate_list_id, fc::variant(active_del) );
      }

Edit: get_active_delegates() will return top 2*BTS_BLOCKCHAIN_NUM_DELEGATES delegates.
« Last Edit: October 13, 2014, 03:34:11 am by zhangweis »
Weibo:http://weibo.com/zhangweis

Offline bytemaster

Changes:

Improved UI:
It shows progress and how many blocks to get result for each dice in progress.

Improved security against delegates collusion:
The more amount you dice, the more blocks you have to wait for the jackpot. The block count calculation is roughly like below:
jackpot blocks = min(MAX_WAIT_BLOCKS,payout / delegate income)
MAX_WAIT_BLOCKS is currently set to 50.
Say, if you dice 100JDS with payout 20, and the delegate's income of the current block is 200, you'll need to wait for 10 blocks for the result.   
All the dices in the same block are sorted by payout and accumulated for the calculation of packout blocks.
Say we have 3 dices:[50@10, 100@2, 500@2].
We get payouts [500, 200, 1000] and they're sorted as [200,500,1000].
For 100@2, the accumulated amount is 200 and jackpot is 2 blocks.
For 50@10, the accumulated amount is 200+500=700 and jackpot is 4 blocks.
For 500@2, the accumulated amount is 200+500+1000=1700 and jackpot is 9 blocks.

The plan is to shuffle delegates after each block to improve security.

Original dry run info.:

We have already established that you cannot shuffle after each block. 
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline Shentist

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 1601
    • View Profile
    • metaexchange
  • BitShares: shentist
Dice competition draft plan:

To encourage the participation of dry run testing, I'd like to host a dice competition for each dry run from dry run 03.


Very cool!!



One hole is that you can apply for many accounts, and dice all money with each of them. Any idea how to avoid this? Should we limit the participant number to something like 50? Or should we limit 1 account every forum account? Neither can prevent this.

1. you could limit it to forum user with accounts older then 2 month
- if you "operate" multiply accounts on this forum - you deserve the chance :D to do it in more then one try

what about to apply a little bit of change?

1. 1.000.000 JDS are the starting pricepool of the dry runs
2. after the first 50 participating people the winningpool will increase for each 5 people with 100.000 JDS and the first 10 will still recieve the shares

but with how many people could you count? how many people were in the dry run of DNS? do anyone now the numbers?

Offline Gentso1

  • Hero Member
  • *****
  • Posts: 931
    • View Profile
  • BitShares: gentso
AGS funds come a donation address and thus can't be moved. We are trying to come up with a way to claim AGS stakes without importing the private key, into a DAC.
https://bitsharestalk.org/index.php?topic=9318.0

Thanks for this, the thread on mirror chains showed a promising solution. Hopefully it will be able to be put into the toolkit directly.

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
AGS funds come a donation address and thus can't be moved. We are trying to come up with a way to claim AGS stakes without importing the private key, into a DAC.
https://bitsharestalk.org/index.php?topic=9318.0

Offline Gentso1

  • Hero Member
  • *****
  • Posts: 931
    • View Profile
  • BitShares: gentso
Can you also comment on this thread? https://bitsharestalk.org/index.php?topic=8916.new#new

A lot of concern about putting private keys into new DACs to claim distribution. Since this thread is about the previous lotto DAC you may already be following.

Sorry I don't follow much about this DAC. The last time I checked it, it seemed not based on BTS code but some POW code.
I can understand the concern about putting private keys to claim distribution. I think the cold storage solution can solve this elegantly but as it's not fully ready I have the idea that we can have the private keys to sign something like "claim JDS to JDSxxxxx" to move the fund to another (newly created) account.
AGS funds come a donation address and thus can't be moved. We are trying to come up with a way to claim AGS stakes without importing the private key, into a DAC.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Dice competition draft plan:

To encourage the participation of dry run testing, I'd like to host a dice competition for each dry run from dry run 03.


Very cool!!

One hole is that you can apply for many accounts, and dice all money with each of them. Any idea how to avoid this? Should we limit the participant number to something like 50? Or should we limit 1 account every forum account? Neither can prevent this.
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
i just wanted to make the same/similar proposal.

could you say something to the amount of shares of the initial genesis distribution? You wrote you wanted a similar allocation then DNS is this still in effect?

so 5 Bn with starting and 5 Bn through delegate dilution?


i will try to help on the dry run, but never did before something to build the sources from github.

That's great you have the same head as mine. The distribution plan hasn't changed and 5Bn as start with rest 5Bn through delegate dilution. Actually I copied the delegate pay code from DNS.  8).
Building is something tricky but believe me I was also not experienced in this but with 3I's instructions, I made it in the 3rd try. It's better to use ubuntu with same version stated in BUILD_UBUNTU.md as I had been stuck at some 3rd party library version issue.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

Dice competition draft plan:

To encourage the participation of dry run testing, I'd like to host a dice competition for each dry run from dry run 03.


Very cool!!

Offline Shentist

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 1601
    • View Profile
    • metaexchange
  • BitShares: shentist
i just wanted to make the same/similar proposal.

could you say something to the amount of shares of the initial genesis distribution? You wrote you wanted a similar allocation then DNS is this still in effect?

so 5 Bn with starting and 5 Bn through delegate dilution?


i will try to help on the dry run, but never did before something to build the sources from github.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Dice competition draft plan:

To encourage the participation of dry run testing, I'd like to host a dice competition for each dry run from dry run 03.

How to participant:

Of course you'll need to build or get JDS bin. Paste your public key in thread and I'll send you 100,000 JDST to play with. All your dices on this key in this dry run will be sum to make your final dice balance. This can be got from blockchain_get_jackpot_transactions for each block.

When a dry run ends, I'll sort all the participants by their dice balances. Each one in the top 10 will be awarded with 100,000 JDS when JDS releases for their testing work. A valid winner must have dice count >= 10. If the number of valid winners is less than 10, every winner gets (1,000,000/valid winners).

You can participant multiple dry runs and win multiple dry runs.

Please keep your private key secure as I'll send JDS using your public key. You can use dry run 2 to get familar with building and playing.
« Last Edit: October 11, 2014, 05:21:19 am by zhangweis »
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Eh, won't compile. It's late, I'll mess with it tomorrow.

Take your time. I'm preparing a dice competition which will be published later.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

Eh, won't compile. It's late, I'll mess with it tomorrow.

Offline Riverhead

I'm running Ubuntu 14.04. I used the url from github itself if that helps anyone.

Thanks for the JDST :) .

I'm not seeing the GUI in your screen shots. Just the stock Bitshares X wallet with JDST currency. I'll re-read the .ad's to see if I missed a step. To be honest I didn't read them and built it like Bitshares X.

Thanks for pointing out. It's my fault as I didn't know git submodule thing. Seems the submodule is still on a branch. I tried fixing that with "git submodule add -b master [URL to Git repo]" and hope it will work. Please do submodule init and update and let me know if it works or not.

Ok, rebuilding now.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
I'm running Ubuntu 14.04. I used the url from github itself if that helps anyone.

Thanks for the JDST :).

I'm not seeing the GUI in your screen shots. Just the stock Bitshares X wallet with JDST currency. I'll re-read the .ad's to see if I missed a step. To be honest I didn't read them and built it like Bitshares X.

Thanks for pointing out. It's my fault as I didn't know git submodule thing. Seems the submodule is still on a branch. I tried fixing that with "git submodule add -b master [URL to Git repo]" and hope it will work. Please do submodule init and update and let me know if it works or not.
« Last Edit: October 10, 2014, 02:01:40 pm by zhangweis »
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
My config.json for your reference if you want to do the same as me:

  "rpc": {
    "enable": true,
    "rpc_user": "xxxx",
    "rpc_password": "xxxxx",
    "rpc_endpoint": "127.0.0.1:0",
    "httpd_endpoint": "127.0.0.1:8088",
    "htdocs": "/home/xxxx/jds/dice_web_wallet/generated"
}
.....

With this config you can access it using http://localhost:8088/#/dice
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
I'm running Ubuntu 14.04. I used the url from github itself if that helps anyone.

Thanks for the JDST :).

I'm not seeing the GUI in your screen shots. Just the stock Bitshares X wallet with JDST currency. I'll re-read the .ad's to see if I missed a step. To be honest I didn't read them and built it like Bitshares X.

It should be the same. I cloned the UI in https://github.com/zhangweis/dice_web_wallet.git and put it in .gitmodules. The bitshares xts build instructions should be apply well on the web part.

For me for development reason, I cloned https://github.com/zhangweis/dice_web_wallet.git in ~/dice_web_wallet and I changed the config.json to enable rpc and assign user,pass and port, point htdocs to "htdocs": "~/dice_web_wallet/generated". In this way, I can "lineman build" for each change to take effect and I can also debug it in browser.
Weibo:http://weibo.com/zhangweis

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
Hm .. I am on Archlinux and not ubuntu/debian ... maybe I can build on a other machine ..

Offline Riverhead

I'm running Ubuntu 14.04. I used the url from github itself if that helps anyone.

Thanks for the JDST :).

I'm not seeing the GUI in your screen shots. Just the stock Bitshares X wallet with JDST currency. I'll re-read the .ad's to see if I missed a step. To be honest I didn't read them and built it like Bitshares X.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
it has been a fresh checkout ..
I am running on boost 1.56.0
Are you on master?
*confirmed*

I'm using Debian 3.2.57-3 with boost 1.55.0.2

Can you try to follow https://github.com/zhangweis/jds/blob/master/BUILD_UBUNTU.md? I've fixed the url in it.
« Last Edit: October 10, 2014, 10:18:23 am by zhangweis »
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Built here without issue.

riverdice - JDST6t2MrADeGpACfRm5Nm3unEkH82dvdvxwKCECNV8coVoywuWuJ9

Also, is this the right blockchain?

Code: [Select]
  "blockchain_id": "9329bb6fbb5d6fbc0e0872dd306536f66ea53250ee1e00602cb36bff05eff842",
  "symbol": "JDST",
  "name": "BitShares JDST",
  "version": 109,
  "db_version": 133,
  "genesis_timestamp": "2014-06-20T14:40:27",
Yes, it's the right one.

sent 1,000,000.00000 JDST to you.
Weibo:http://weibo.com/zhangweis

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
it has been a fresh checkout ..
I am running on boost 1.56.0
Are you on master?
*confirmed*

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
it has been a fresh checkout ..
I am running on boost 1.56.0
Are you on master?
Weibo:http://weibo.com/zhangweis

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
Can you try from a fresh start? like removing the jds folder and git clone, git submodule init, git submodule  update, cmake ., make.
it has been a fresh checkout ..
I am running on boost 1.56.0

Offline Riverhead

Built here without issue.

riverdice - JDST6t2MrADeGpACfRm5Nm3unEkH82dvdvxwKCECNV8coVoywuWuJ9

Also, is this the right blockchain?

Code: [Select]
  "blockchain_id": "9329bb6fbb5d6fbc0e0872dd306536f66ea53250ee1e00602cb36bff05eff842",
  "symbol": "JDST",
  "name": "BitShares JDST",
  "version": 109,
  "db_version": 133,
  "genesis_timestamp": "2014-06-20T14:40:27",
« Last Edit: October 10, 2014, 04:02:43 am by Riverhead »

Offline liondani

  • Hero Member
  • *****
  • Posts: 3737
  • Inch by inch, play by play
    • View Profile
    • My detailed info
  • BitShares: liondani
  • GitHub: liondani
I am still getting a compile error:
Code: [Select]
[ 30%] Building CXX object libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
In file included from /tmp/jds/libraries/fc/src/thread/thread_d.hpp:4:
In file included from /usr/include/boost/thread.hpp:17:
In file included from /usr/include/boost/thread/once.hpp:20:
In file included from /usr/include/boost/thread/pthread/once_atomic.hpp:20:
In file included from /usr/include/boost/atomic.hpp:12:
/usr/include/boost/atomic/atomic.hpp:31:16: error: target of using declaration conflicts with declaration already in scope
using atomics::atomic;
               ^
/usr/include/boost/atomic/detail/atomic_template.hpp:668:7: note: target of using declaration
class atomic :
      ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: conflicting declaration
  template<typename T> class atomic;
                             ^
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
In file included from /tmp/jds/libraries/fc/src/thread/thread_d.hpp:5:
/tmp/jds/libraries/fc/src/thread/context.hpp:58:49: error: no member named 'default_stacksize' in 'boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits>'
     size_t stack_size =  bco::stack_allocator::default_stacksize() * 4;
                          ~~~~~~~~~~~~~~~~~~~~~~^
/tmp/jds/libraries/fc/src/thread/context.hpp:60:17: error: assigning to 'bc::fcontext_t *' (aka 'void **') from incompatible type 'fcontext_t' (aka 'void *')
     my_context = bc::make_fcontext( stack_ctx.sp, stack_ctx.size, sf);
                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
/tmp/jds/libraries/fc/src/thread/thread_d.hpp:74:44: error: implicit instantiation of undefined template 'boost::atomic<fc::task_base *>'
           boost::atomic<task_base*>       task_in_queue;
                                           ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: template is declared here
  template<typename T> class atomic;
                             ^
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
/tmp/jds/libraries/fc/src/thread/thread_d.hpp:34:41: error: implicit instantiation of undefined template 'boost::atomic<int>'
              static boost::atomic<int> cnt(0);
                                        ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: template is declared here
  template<typename T> class atomic;
                             ^
5 errors generated.
libraries/fc/CMakeFiles/fc.dir/build.make:146: recipe for target 'libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o' failed
make[2]: *** [libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o] Error 1
CMakeFiles/Makefile2:196: recipe for target 'libraries/fc/CMakeFiles/fc.dir/all' failed
make[1]: *** [libraries/fc/CMakeFiles/fc.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2


Can you try from a fresh start? like removing the jds folder and git clone, git submodule init, git submodule  update, cmake ., make.


I have the same problems as xeroc...
I deleted the bitshares_toolkit (jds) directory and have begin from the start but with no succes!


Code: [Select]
[ 75%] Building CXX object libraries/blockchain/CMakeFiles/bts_blockchain.dir/time.cpp.o
[ 75%] Building CXX object libraries/blockchain/CMakeFiles/bts_blockchain.dir/extended_address.cpp.o
[ 76%] Building CXX object libraries/blockchain/CMakeFiles/bts_blockchain.dir/address.cpp.o
[ 76%] Building CXX object libraries/blockchain/CMakeFiles/bts_blockchain.dir/pts_address.cpp.o
[ 77%] Building CXX object libraries/blockchain/CMakeFiles/bts_blockchain.dir/asset.cpp.o
/home/liondani/bitshares_toolkit/libraries/blockchain/asset.cpp: In function ‘bts::blockchain::asset bts::blockchain::operator*(const bts::blockchain::asset&, const bts::blockchain::price&)’:
/home/liondani/bitshares_toolkit/libraries/blockchain/asset.cpp:216:24: error: cannot convert ‘fc::bigint’ to ‘bts::blockchain::share_type {aka long int}’ in assignment
             rtn.amount = amnt;
                        ^
/home/liondani/bitshares_toolkit/libraries/blockchain/asset.cpp:241:25: error: cannot convert ‘fc::bigint’ to ‘bts::blockchain::share_type {aka long int}’ in assignment
             r.amount    = result;
                         ^
make[2]: *** [libraries/blockchain/CMakeFiles/bts_blockchain.dir/asset.cpp.o] Error 1
make[1]: *** [libraries/blockchain/CMakeFiles/bts_blockchain.dir/all] Error 2
make: *** [all] Error 2
liondani@liondani-GA-770T-D3L ~/bitshares_toolkit $

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
I am still getting a compile error:
Code: [Select]
[ 30%] Building CXX object libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
In file included from /tmp/jds/libraries/fc/src/thread/thread_d.hpp:4:
In file included from /usr/include/boost/thread.hpp:17:
In file included from /usr/include/boost/thread/once.hpp:20:
In file included from /usr/include/boost/thread/pthread/once_atomic.hpp:20:
In file included from /usr/include/boost/atomic.hpp:12:
/usr/include/boost/atomic/atomic.hpp:31:16: error: target of using declaration conflicts with declaration already in scope
using atomics::atomic;
               ^
/usr/include/boost/atomic/detail/atomic_template.hpp:668:7: note: target of using declaration
class atomic :
      ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: conflicting declaration
  template<typename T> class atomic;
                             ^
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
In file included from /tmp/jds/libraries/fc/src/thread/thread_d.hpp:5:
/tmp/jds/libraries/fc/src/thread/context.hpp:58:49: error: no member named 'default_stacksize' in 'boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits>'
     size_t stack_size =  bco::stack_allocator::default_stacksize() * 4;
                          ~~~~~~~~~~~~~~~~~~~~~~^
/tmp/jds/libraries/fc/src/thread/context.hpp:60:17: error: assigning to 'bc::fcontext_t *' (aka 'void **') from incompatible type 'fcontext_t' (aka 'void *')
     my_context = bc::make_fcontext( stack_ctx.sp, stack_ctx.size, sf);
                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
/tmp/jds/libraries/fc/src/thread/thread_d.hpp:74:44: error: implicit instantiation of undefined template 'boost::atomic<fc::task_base *>'
           boost::atomic<task_base*>       task_in_queue;
                                           ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: template is declared here
  template<typename T> class atomic;
                             ^
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
/tmp/jds/libraries/fc/src/thread/thread_d.hpp:34:41: error: implicit instantiation of undefined template 'boost::atomic<int>'
              static boost::atomic<int> cnt(0);
                                        ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: template is declared here
  template<typename T> class atomic;
                             ^
5 errors generated.
libraries/fc/CMakeFiles/fc.dir/build.make:146: recipe for target 'libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o' failed
make[2]: *** [libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o] Error 1
CMakeFiles/Makefile2:196: recipe for target 'libraries/fc/CMakeFiles/fc.dir/all' failed
make[1]: *** [libraries/fc/CMakeFiles/fc.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2


Can you try from a fresh start? like removing the jds folder and git clone, git submodule init, git submodule  update, cmake ., make.
Weibo:http://weibo.com/zhangweis

Offline pc

  • Hero Member
  • *****
  • Posts: 1530
    • View Profile
    • Bitcoin - Perspektive oder Risiko?
  • BitShares: cyrano
Are you on master? Have you tried "git submodule init" and "git submodule update"?

My fault, sorry. Wrong fc version.
Bitcoin - Perspektive oder Risiko? ISBN 978-3-8442-6568-2 http://bitcoin.quisquis.de

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
I am still getting a compile error:
Code: [Select]
[ 30%] Building CXX object libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
In file included from /tmp/jds/libraries/fc/src/thread/thread_d.hpp:4:
In file included from /usr/include/boost/thread.hpp:17:
In file included from /usr/include/boost/thread/once.hpp:20:
In file included from /usr/include/boost/thread/pthread/once_atomic.hpp:20:
In file included from /usr/include/boost/atomic.hpp:12:
/usr/include/boost/atomic/atomic.hpp:31:16: error: target of using declaration conflicts with declaration already in scope
using atomics::atomic;
               ^
/usr/include/boost/atomic/detail/atomic_template.hpp:668:7: note: target of using declaration
class atomic :
      ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: conflicting declaration
  template<typename T> class atomic;
                             ^
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
In file included from /tmp/jds/libraries/fc/src/thread/thread_d.hpp:5:
/tmp/jds/libraries/fc/src/thread/context.hpp:58:49: error: no member named 'default_stacksize' in 'boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits>'
     size_t stack_size =  bco::stack_allocator::default_stacksize() * 4;
                          ~~~~~~~~~~~~~~~~~~~~~~^
/tmp/jds/libraries/fc/src/thread/context.hpp:60:17: error: assigning to 'bc::fcontext_t *' (aka 'void **') from incompatible type 'fcontext_t' (aka 'void *')
     my_context = bc::make_fcontext( stack_ctx.sp, stack_ctx.size, sf);
                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
/tmp/jds/libraries/fc/src/thread/thread_d.hpp:74:44: error: implicit instantiation of undefined template 'boost::atomic<fc::task_base *>'
           boost::atomic<task_base*>       task_in_queue;
                                           ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: template is declared here
  template<typename T> class atomic;
                             ^
In file included from /tmp/jds/libraries/fc/src/thread/thread.cpp:5:
/tmp/jds/libraries/fc/src/thread/thread_d.hpp:34:41: error: implicit instantiation of undefined template 'boost::atomic<int>'
              static boost::atomic<int> cnt(0);
                                        ^
/tmp/jds/libraries/fc/include/fc/thread/spin_yield_lock.hpp:4:30: note: template is declared here
  template<typename T> class atomic;
                             ^
5 errors generated.
libraries/fc/CMakeFiles/fc.dir/build.make:146: recipe for target 'libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o' failed
make[2]: *** [libraries/fc/CMakeFiles/fc.dir/src/thread/thread.cpp.o] Error 1
CMakeFiles/Makefile2:196: recipe for target 'libraries/fc/CMakeFiles/fc.dir/all' failed
make[1]: *** [libraries/fc/CMakeFiles/fc.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2


Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Test account private key 5JBLNgtSSBAzsq6bXkqpDyNn64kmp6nDepyM798a2dZLdyHThbf. Please don't empty it.
It's better to use GUI but if you want to use console you can do as below:
wallet_dice "<account_name>" 100 2 true
   Roll dice using account 100 JDS and payout as 2, roll high.
wallet_account_dice_transaction_history to view the result. It's in json, that's why it's better to use GUI .
Weibo:http://weibo.com/zhangweis

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Build fails for me:

Code: [Select]
[ 73%] Building CXX object libraries/net/CMakeFiles/bts_net.dir/message_oriented_connection.cpp.o
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:31:19: error: cannot declare field 'bts::net::detail::message_oriented_connection_impl::_sock' to be of abstract type 'bts::net::stcp_socket'
In file included from /home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:9:0:
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/include/bts/net/stcp_socket.hpp:12:7: note:   because the following virtual functions are pure within 'bts::net::stcp_socket':
In file included from /usr/include/fc/network/tcp_socket.hpp:4:0,
                 from /home/peter/rpmbuild/BUILD/jds-master/libraries/net/include/bts/net/message_oriented_connection.hpp:2,
                 from /home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:8:
/usr/include/fc/io/iostream.hpp:24:26: note:    virtual std::size_t fc::istream::readsome(const std::shared_ptr<char>&, std::size_t, std::size_t)
/usr/include/fc/io/iostream.hpp:46:27: note:    virtual std::size_t fc::ostream::writesome(const std::shared_ptr<const char>&, std::size_t, std::size_t)
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp: In member function 'void bts::net::detail::message_oriented_connection_impl::read_loop()':
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:143:57: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

Are you on master? Have you tried "git submodule init" and "git submodule update"?
Weibo:http://weibo.com/zhangweis

Offline pc

  • Hero Member
  • *****
  • Posts: 1530
    • View Profile
    • Bitcoin - Perspektive oder Risiko?
  • BitShares: cyrano
Build fails for me:

Code: [Select]
[ 73%] Building CXX object libraries/net/CMakeFiles/bts_net.dir/message_oriented_connection.cpp.o
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:31:19: error: cannot declare field 'bts::net::detail::message_oriented_connection_impl::_sock' to be of abstract type 'bts::net::stcp_socket'
In file included from /home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:9:0:
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/include/bts/net/stcp_socket.hpp:12:7: note:   because the following virtual functions are pure within 'bts::net::stcp_socket':
In file included from /usr/include/fc/network/tcp_socket.hpp:4:0,
                 from /home/peter/rpmbuild/BUILD/jds-master/libraries/net/include/bts/net/message_oriented_connection.hpp:2,
                 from /home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:8:
/usr/include/fc/io/iostream.hpp:24:26: note:    virtual std::size_t fc::istream::readsome(const std::shared_ptr<char>&, std::size_t, std::size_t)
/usr/include/fc/io/iostream.hpp:46:27: note:    virtual std::size_t fc::ostream::writesome(const std::shared_ptr<const char>&, std::size_t, std::size_t)
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp: In member function 'void bts::net::detail::message_oriented_connection_impl::read_loop()':
/home/peter/rpmbuild/BUILD/jds-master/libraries/net/message_oriented_connection.cpp:143:57: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

Bitcoin - Perspektive oder Risiko? ISBN 978-3-8442-6568-2 http://bitcoin.quisquis.de

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Can you also comment on this thread? https://bitsharestalk.org/index.php?topic=8916.new#new

A lot of concern about putting private keys into new DACs to claim distribution. Since this thread is about the previous lotto DAC you may already be following.

Sorry I don't follow much about this DAC. The last time I checked it, it seemed not based on BTS code but some POW code.
I can understand the concern about putting private keys to claim distribution. I think the cold storage solution can solve this elegantly but as it's not fully ready I have the idea that we can have the private keys to sign something like "claim JDS to JDSxxxxx" to move the fund to another (newly created) account.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

Can you also comment on this thread? https://bitsharestalk.org/index.php?topic=8916.new#new

A lot of concern about putting private keys into new DACs to claim distribution. Since this thread is about the previous lotto DAC you may already be following.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
No time like the first time :).

Here are the instructions for BitSharesX. Since JDS is based on the bitshares_toolkit the steps will be nearly if not completely the same.

http://wiki.bitshares.org/index.php/BuildInstructionsBitSharesX

You can also follow https://github.com/zhangweis/jds/blob/master/BUILD_UBUNTU.md if you're using ubuntu. I only changed the git repository url.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

No time like the first time :).

Here are the instructions for BitSharesX. Since JDS is based on the bitshares_toolkit the steps will be nearly if not completely the same.

http://wiki.bitshares.org/index.php/BuildInstructionsBitSharesX


Offline Shentist

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 1601
    • View Profile
    • metaexchange
  • BitShares: shentist
hehe

never did it.
but i will dry.

can you point me to a explaination`?

Offline Riverhead

how can i help?

where can i find the client?

maybe start with 1 official thread with links. i couldn't find something to download the client

It's still in the dry run phase. How comfortable are you building from github?

https://github.com/zhangweis/jds

Offline Shentist

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 1601
    • View Profile
    • metaexchange
  • BitShares: shentist
how can i help?

where can i find the client?

maybe start with 1 official thread with links. i couldn't find something to download the client

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Do you want me to bring it up at Friday's "State of the Blockchain" Mumble session? We can get you testers if that's what you need.

Sure, I'd appreciate that and I'm also thinking of a JDST dice tournament to promote this.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

Do you want me to bring it up at Friday's "State of the Blockchain" Mumble session? We can get you testers if that's what you need.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Thank you. Sorry if I jumped the gun. Just excited to see this in action. :)

Thanks for trying.

Currently it has very low testing participation and I'm trying to find a way to promote testing participation as most big changes have been done.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

I see there are 17 dry runs. Are they place holders? Do you want any testing done? I build the source but the blockchain wasn't active. I did DR17 since it was the biggest number haha. Looking forward to this DAC.

I cloned it from btsx and I'm using master.

Thank you. Sorry if I jumped the gun. Just excited to see this in action. :)

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
I see there are 17 dry runs. Are they place holders? Do you want any testing done? I build the source but the blockchain wasn't active. I did DR17 since it was the biggest number haha. Looking forward to this DAC.

I cloned it from btsx and I'm using master.
Weibo:http://weibo.com/zhangweis

Offline Riverhead

I see there are 17 dry runs. Are they place holders? Do you want any testing done? I build the source but the blockchain wasn't active. I did DR17 since it was the biggest number haha. Looking forward to this DAC.

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
[Update]:
Shuffling delegates after every block is implemented and under tests.
Weibo:http://weibo.com/zhangweis

Offline jwiz168

  • Sr. Member
  • ****
  • Posts: 409
    • View Profile
Nice DAC   8)    +5%    +5%     +5%

Offline dexinwong

  • Sr. Member
  • ****
  • Posts: 232
    • View Profile

Offline ripplexiaoshan

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 2300
    • View Profile
  • BitShares: jademont
Seems great +5%
BTS committee member:jademont

Offline Shentist

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 1601
    • View Profile
    • metaexchange
  • BitShares: shentist
great project. looks promising

Offline CurrencyMaster

赞一个,支持。
bts id: currencymaster
掌握了比特股 , 就掌握了货币发行权!
掌握了货币发行权,就掌握了整个世界!

Offline sudo

  • Hero Member
  • *****
  • Posts: 2255
    • View Profile
  • BitShares: ags

Offline zhangweis

  • Sr. Member
  • ****
  • Posts: 305
    • View Profile
Changes:

Improved UI:
It shows progress and how many blocks to get result for each dice in progress.

Improved security against delegates collusion:
The more amount you dice, the more blocks you have to wait for the jackpot. The block count calculation is roughly like below:
jackpot blocks = min(MAX_WAIT_BLOCKS,payout / delegate income)
MAX_WAIT_BLOCKS is currently set to 50.
Say, if you dice 100JDS with payout 20, and the delegate's income of the current block is 200, you'll need to wait for 10 blocks for the result.   
All the dices in the same block are sorted by payout and accumulated for the calculation of packout blocks.
Say we have 3 dices:[50@10, 100@2, 500@2].
We get payouts [500, 200, 1000] and they're sorted as [200,500,1000].
For 100@2, the accumulated amount is 200 and jackpot is 2 blocks.
For 50@10, the accumulated amount is 200+500=700 and jackpot is 4 blocks.
For 500@2, the accumulated amount is 200+500+1000=1700 and jackpot is 9 blocks.

The plan is to shuffle delegates after each block to improve security.

Original dry run info.:
https://bitsharestalk.org/index.php?topic=9393.0


Weibo:http://weibo.com/zhangweis