Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - theoretical

Pages: 1 [2] 3 4 5 6 7 8 9 ... 34
16
General Discussion / Re: Smart Coins & Forced Settlement
« on: December 02, 2015, 09:57:13 pm »

17
General Discussion / Re: Smart Coins & Forced Settlement
« on: December 02, 2015, 05:44:45 pm »

According to the code:

Code: [Select]
/** percentage fields are fixed point with a denominator of 10,000 */                                                                                                                                                                       
#define GRAPHENE_100_PERCENT                                    10000                                                                                                                                                                       
#define GRAPHENE_1_PERCENT                                      (GRAPHENE_100_PERCENT/100)   

Before launch I went through every place in the witness_node where percentages are used and standardized most of them to use GRAPHENE_100_PERCENT.  I just now checked the code which handles the max force settlement, and it definitely uses these constants.  So 2000 definitely represents 20%.

You can see that it is currently set to 2000 for BitUSD (and I don't doubt for the other assets as well):

Code: [Select]
>>> get_asset USD
{
   ...
   "issuer": "1.2.0"
...
  "bitasset_data_id": "2.4.21"
}
>>> get_object 2.4.21
{
...
      "maximum_force_settlement_volume": 2000,
...
}

I can state with certainty that it is currently 20%.  It is possible to change with a committee proposal of asset_update_operation.

Great care should be taken on any such proposal to ensure the issuer permissions and flags have the same values as before.

18
General Discussion / Re: Better API - Please Help Define It
« on: November 25, 2015, 04:32:34 pm »
Make a single point of entry into the system for API calls, rather than having the API commands duplicated (but with different functionality) between the cli_wallet and the witness_node.

I think what needs to happen is that API calls need to be automatically forwarded from the cli_wallet to the witness_node.

This ties into my previous points, it's better if we have ways to refer to API methods, or groups of API methods, in a config file, so we'd be able to configure enabling/disabling this forwarding on a per-call or per-API basis.  And if the cli_wallet can ask the witness_node for type information on all API methods it supports, then it can improve the forwarding, even if the cli_wallet is not implemented in the same language as the backend.

Which leads me to the next item on my wishlist, writing a cli_wallet in Python so you can use proper scripting instead of the very clunky transaction_builder for creating proposed transactions, but that's sort-of off-topic.  There's a lot I'd want to do to improve Graphene -- doing it all would probably take a year or two and several junior devs.

19
General Discussion / Re: Better API - Please Help Define It
« on: November 25, 2015, 04:20:16 pm »

Also on my wishlist for the API:  Generate a JSON blob representing full type information for each API call, which can be used to auto-generate language bindings for the API.

You can think of this as like splitting James's JSON operation serializer into a frontend which reflects all Graphene types, and a backend which outputs various useful JS code, such as a JS class for all C++ structs.  The frontend would then output a JSON blob which is taken by the backend.

I'm pretty sure JS language object model is sufficiently powerful that the backend could be completely written in JS as a generic library, which would take the JSON blob and construct the classes at runtime.  Python could be done similarly.

20
General Discussion / Re: Better API - Please Help Define It
« on: November 25, 2015, 04:13:11 pm »

I also think the new API should have a single object type for input and output, and do input parsing and output annotation by reflection.

For example:

  • On the input side, we want API to accept an asset name wherever we accept an asset ID.
  • On the output side, whenever an asset is returned by API, we return a 3-field object of the form {"sym" : symbol, "prec" : precision, "amount" : x}

We currently accomplish this by requiring each asset method to take asset as a string and then manually call parsing functions.  Which is done inconsistently.

A better approach is to have every API call take an input struct, then use reflection to find any (potentially deeply nested) JSON fragment of the incoming object which has an asset_id_type, essentially moving the responsibility to parse asset ID's from the API method to the API framework (where "API framework" means some new, Graphene-specific glue code, as it will have to be aware of chain_db).

Likewise, output annotation requirements like the second requirement above can be handled similarly:  Any place the output object has an asset_id_type, the framework automatically annotates it with the name and precision of the asset.  Or possibly instead fills in a secondary "asset LUT" in the response containing such information for all assets (which makes the response smaller).

Accounts could obviously similarly benefit.

21
General Discussion / Re: Better API - Please Help Define It
« on: November 25, 2015, 03:46:32 pm »
I'd like to allow plugins to define API calls, and configuration file options to specify which plugins to enable, and which plugins require login to access their API calls.

  • It allows us to break the API up into smaller units.  Currently database_api is huge because we have to put everything accessible without login in there.
  • It allows a path for API upgrade.  If the old API and new API are plugins which can be enabled / disabled by a specific site, then a site can upgrade the API on their schedule, not ours.
  • It allows different security profiles.  For example, we could create a "HTTP plugin" which makes login and secure API calls of other plugins accessible over HTTP.  Sites that want to interface with the wallet over HTTP can use that plugin (and then it is on them to ensure the wallet is properly firewalled, containerised or otherwise isolated), while the default config has the plugin disabled for security reasons.

Related issues:  #245, #246, #422.

22
General Discussion / Re: Resolution to Referral Program Bug
« on: November 19, 2015, 06:27:56 pm »
Proposal ID to disable withdraw_vesting is 1.10.17.  If you are a committee member, please vote for 1.10.17.  Signatures are due at the start of the review period, 21:55 UTC.  The proposal will be finalized at 22:55 UTC, provided the proposal goes through, the fee change will go through at the following maintenance interval, so no further withdrawals will occur after 23:00 UTC.

Please DO NOT vote for 1.10.16, it wasn't constructed correctly.

23
Btw, is it possible to lock BTS?

The chain has support for creating vesting balance objects, which allows you to lock any asset, and have a variety of unlocking parameters.

Core asset (i.e., BTS) VBO's are created for witness pay and the cashback functionality.

It doesn't really make economic sense to create a VBO, except in a multi-party transaction where one party is either the blockchain, or acting on behalf of the chain.  I personally like the idea of a worker proposal to pay people for locking up their BitAssets.  For example, if 10k BTS is worth $50, you could create a worker which is funded 10,000 BTS per day, with a business plan of buying $50 BitUSD every day at current market prices, then collecting offers from people based on how many BitUSD they are willing to lock up, and for how long, to get $X of worker's the BitUSD, and then paying out to the top offers in VBO's.  You'll always be able to fill it (I'm assuing somebody will always make an offer to be paid $50 to lock up $0.01 for five minutes, and then better offers will come in until the imputed yield gets comparable to any other fixed-income instrument, modulo transaction costs and the market's perception of the probability of certain risk factors unique to BitAssets, like BitUSD black swans or lost/hacked private keys.)  It's quite similar to a no-reserve government debt auction, and it seems like a decentralized autonomous fixed-income capability would be attractive to people in these times of zero interest rates.  I think this system is a superior replacement for the BTS 0.x yield system because you know what you're getting in advance.

Of course most people I've talked to (including other people here at Cryptonomex) all seem to hate my idea for some reason that they never clearly explain, but blockchain level support for it is there if I ever manage to convince anyone it's a good idea.

24
Technical Support / Re: how to use websocket subscribe?
« on: November 02, 2015, 11:26:32 pm »

Those 2.4.x should not be on there every block.  Bug report filed.

Originally we intended you to manually subscribe to every object you wanted to track, but that made it difficult to write a GUI which could function without a bunch of network round trips making it slow and clunky.

Now you just get everything.  But the old calls are still there.  Really our subscription model is a mess and it needs cleaned up.  Which is going to be part of The Massive Plugin Architecture Fix that I'm going to do when I finally have some time that's not earmarked for Important Production Stuff like today's release.

25
There are two deployed Graphene-based blockchains in production right now:  Bitshares 2 and Muse.  That number will only grow in the future.  For example, at some point we would like to create a demo network which will be like a testnet, but with interesting stuff like live price feeds and (maybe later) other interesting stuff like market bots.  As things stand now, I'm told it can be tough to get new users when the first thing they hear is "you have to buy lots of BTS to really experience the system."   With a demo net where none of the tokens have real value, we can give away the core token, so everyone can experience how awesome Graphene is and try some of the more advanced features like creating assets, without committing to buy anything until they're ready.

Anyway, we need a way to effectively manage features which may or may not be deployed on each of the branches.  To that end, we've moved to a new forking model:

https://github.com/cryptonomex/graphene/wiki/How-we-use-version-control

Be advised the master branch has been force-pushed, as I used the new forking model to help me make sure all the new features were properly tested for today's release, and there wasn't really a simple way to reconcile things without force-pushing to the master branch.  We'll try not to do this often on master (develop is another matter).

The single most important item for community contributors is to please base your commits on stable.

26
Muse/SoundDAC / Re: MUSE 1.0.151101 released
« on: November 02, 2015, 06:52:38 pm »

init witnesses have been upgraded.

27
Muse/SoundDAC / MUSE 1.0.151101 released
« on: November 02, 2015, 06:51:18 pm »

Release is available at https://github.com/peertracksinc/muse/releases/tag/v1.0.151101

All full nodes will need to upgrade to this release by Wed Nov 4 16:00:00 UTC 2015.

- Corrects an issue in the previous release that prevents `PARENT.CHILD` assets from being created #409
- Add the capability for asset owner to claim asset fees #413
- Allow asset issuers to blacklist some accounts from holding a particular asset while maintaining a "default accept" policy for other accounts #415

In addition, numerous bug fixes and wallet enhancements have been included, and reindexing performance has been improved.

Reindexing will be required, and should occur automatically.

28
General Discussion / Re: BitShares 2.0.151101 released
« on: November 02, 2015, 06:45:59 pm »
Will it be a problem to deploy this or do you plan to add other items later today?

If you plan on updating this again today I'll wait.

No, I tested it extensively, and hopefully our next upgrade will not be for a while.  We've heard the cries of people who don't like to have to upgrade constantly.  So we're trying to better organize our development process and do more internal testing of new releases to hopefully make it a thing of the past to have cycles of the form "release hardfork, discover hardfork has problems, release another hardfork to correct problems in first hardfork."

29
@mike623317 : Every maintenance interval, we record the historical stats of the budget.  These can be accessed as objects 2.13.x.

The reserve is the sum of the three "from" fields, from_initial_reserve, from_accumulated_fees, from_unused_witness_budget.  It represents the overall inflation cap, i.e., the total number of the additional core asset (i.e., BTS) that will ever be able to come into existence.

The total_budget is the amount of core asset that can be allocated to workers or witness pay.  Depending on what the committee and voters do, up to total_budget can be spent; exceeding the total_budget would require a hardfork.

The total_budget is calculated as a tiny fraction of the reserve, specifically, 17 / 2**32 times the number of seconds in a maintenance interval, rounded up.  This number was chosen to initially give about the same rate of creating BTS as 101 delegates all with 100% pay in BTS 0.x.

witness_budget is how much is reserved for witness pay.  This is the time to next maintenance interval times witness pay.

worker_budget is how much is available for workers to be paid.  Witnesses have higher priority than workers.

leftover_worker_funds is how much is available for workers to be paid.

supply_delta is how much the supply changed due to fees and budget logic operation during this maintenance interval.  It does not include activities like manual reserve/burn of assets, or the operation of reserve/burn workers.

Right now there is one reserve worker, 1.14.0.  Like "normal" workers, the reserve worker is voted to receive BTS with the worker system; unlike "normal" workers, the chain itself forces a reserve worker to immediately return all of its funds to the reserve.  So the supply delta in budget_record_object misleadingly indicates the network is massively unprofitable, since it does not account for the fact that most of the BTS go to reserve400k and are burned returned to the reserve.  This needs to be fixed, and tracking of e.g. how much a worker has received needs to be implemented.

30
General Discussion / Re: BitShares 2.0.151101 released
« on: November 02, 2015, 04:23:17 pm »

Sorry the version number is a day off, I goofed entering the date.

Pages: 1 [2] 3 4 5 6 7 8 9 ... 34