BitShares Forum

Main => General Discussion => Topic started by: zhangweis on October 06, 2014, 04:33:02 pm

Title: JDS Dry Run #2
Post by: zhangweis on October 06, 2014, 04:33:02 pm
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 (https://bitsharestalk.org/index.php?topic=9393.0)


(http://www.webpagescreenshot.info/i3/5432bfe2edb628-13370369)
Title: Re: JDS Dry Run #2
Post by: sudo on October 06, 2014, 05:07:39 pm
 +5% +5%
Title: Re: JDS Dry Run #2
Post by: CurrencyMaster on October 06, 2014, 05:09:07 pm
赞一个,支持。
Title: Re: JDS Dry Run #2
Post by: Shentist on October 06, 2014, 05:19:26 pm
great project. looks promising
Title: Re: JDS Dry Run #2
Post by: ripplexiaoshan on October 07, 2014, 01:44:15 am
Seems great +5%
Title: Re: JDS Dry Run #2
Post by: dexinwong on October 07, 2014, 02:00:29 am
support
Title: Re: JDS Dry Run #2
Post by: jwiz168 on October 07, 2014, 03:02:20 am
Nice DAC   8)    +5%    +5%     +5%
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 03:34:04 am
[Update]:
Shuffling delegates after every block is implemented and under tests.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 09, 2014, 04:31:31 am
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 04:32:59 am
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.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 09, 2014, 04:34:18 am
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. :)
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 04:40:27 am
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.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 09, 2014, 04:41:33 am
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 04:55:59 am
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.
Title: Re: JDS Dry Run #2
Post by: Shentist on October 09, 2014, 05:14:05 am
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
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 09, 2014, 05:23:49 am
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
Title: Re: JDS Dry Run #2
Post by: Shentist on October 09, 2014, 05:25:54 am
hehe

never did it.
but i will dry.

can you point me to a explaination`?
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 09, 2014, 05:32:20 am
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

Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 07:26:35 am
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 (https://github.com/zhangweis/jds/blob/master/BUILD_UBUNTU.md) if you're using ubuntu. I only changed the git repository url.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 09, 2014, 12:57:56 pm
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 03:54:00 pm
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.
Title: Re: JDS Dry Run #2
Post by: pc on October 09, 2014, 03:55:34 pm
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]

Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 04:22:01 pm
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"?
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 04:30:24 pm
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 .
Title: Re: JDS Dry Run #2
Post by: xeroc on October 09, 2014, 04:55:58 pm
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

Title: Re: JDS Dry Run #2
Post by: pc on October 09, 2014, 09:37:12 pm
Are you on master? Have you tried "git submodule init" and "git submodule update"?

My fault, sorry. Wrong fc version.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 09, 2014, 10:53:00 pm
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.
Title: Re: JDS Dry Run #2
Post by: liondani on October 10, 2014, 01:04:53 am
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 $
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 10, 2014, 03:55:22 am
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",
Title: Re: JDS Dry Run #2
Post by: xeroc on October 10, 2014, 07:08:42 am
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
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 10, 2014, 07:27:05 am
it has been a fresh checkout ..
I am running on boost 1.56.0
Are you on master?
Title: Re: JDS Dry Run #2
Post by: xeroc on October 10, 2014, 08:09:15 am
it has been a fresh checkout ..
I am running on boost 1.56.0
Are you on master?
*confirmed*
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 10, 2014, 09:57:30 am
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 10, 2014, 10:05:26 am
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 (https://github.com/zhangweis/jds/blob/master/BUILD_UBUNTU.md)? I've fixed the url in it.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 10, 2014, 10:37:23 am
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.
Title: Re: JDS Dry Run #2
Post by: xeroc on October 10, 2014, 11:14:18 am
Hm .. I am on Archlinux and not ubuntu/debian ... maybe I can build on a other machine ..
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 10, 2014, 01:14:03 pm
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 10, 2014, 01:17:35 pm
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
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 10, 2014, 01:55:28 pm
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.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 11, 2014, 03:41:04 am
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.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 11, 2014, 04:54:45 am
Eh, won't compile. It's late, I'll mess with it tomorrow.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 11, 2014, 05:01:11 am
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 11, 2014, 05:04:52 am
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.
Title: Re: JDS Dry Run #2
Post by: Shentist on October 11, 2014, 07:35:25 am
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.
Title: Re: JDS Dry Run #2
Post by: Riverhead on October 11, 2014, 12:05:11 pm
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!!
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 11, 2014, 02:02:49 pm
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 11, 2014, 02:06:39 pm
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.
Title: Re: JDS Dry Run #2
Post by: Gentso1 on October 11, 2014, 02:22:11 pm
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.
Title: Re: JDS Dry Run #2
Post by: xeroc on October 11, 2014, 02:26:19 pm
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
Title: Re: JDS Dry Run #2
Post by: Gentso1 on October 11, 2014, 08:26:40 pm
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.
Title: Re: JDS Dry Run #2
Post by: Shentist on October 12, 2014, 08:52:42 pm
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?
Title: Re: JDS Dry Run #2
Post by: bytemaster on October 12, 2014, 08:59:38 pm
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. 
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 13, 2014, 03:31:21 am
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.
Title: Re: JDS Dry Run #2
Post by: bytemaster on October 13, 2014, 08:22:09 pm
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. 
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 14, 2014, 12:26:16 am
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 14, 2014, 12:35:36 am
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.
Title: Re: JDS Dry Run #2
Post by: zhangweis on October 14, 2014, 01:29:19 am
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) );
      }
Title: Re: JDS Dry Run #2
Post by: islandking on November 27, 2014, 11:00:45 pm
Is there any update on this project?