Compare commits

...

153 commits

Author SHA1 Message Date
Christopher Sanborn
39fc1d8863 Adding placeholders for remaining Stealth BSIPs to README.md 2018-10-17 13:42:31 -04:00
Christopher Sanborn
91c5da4d9f Added BSIP 53 to README.md 2018-10-17 13:35:20 -04:00
Christopher Sanborn
dd7a26689d Adding file bsip-0053.md for Detection of Inbound Stealth Transactions. 2018-10-17 13:25:40 -04:00
John M. Jones
c8775c53be
Merge pull request #104 from bitshares/bsip-hashed-timelock-contract
BSIP44: Hashed Timelock Contract
2018-10-12 12:29:48 -05:00
John M. Jones
1e02050dcd
Merge branch 'master' into bsip-hashed-timelock-contract 2018-10-12 06:16:39 -05:00
Peter Conrad
3c5f73e42a
Merge pull request #110 from BTS-CM/master
Add BSIP 45 - "Introduce 'allow use as bitasset backing collateral' flag/permission to assets"
2018-10-10 17:06:47 +02:00
grcgrc
ee9ec4cd45 License change
MIT -> PD
2018-10-10 13:57:51 +01:00
CM
f03f4ce7ab
Update bsip-0045.md 2018-10-08 16:41:32 +01:00
CM
2a4c2b7e9a
Fixed formatting 2018-10-07 14:54:21 +01:00
CM
c454764eb0
bsip 45 added to readme 2018-10-07 14:53:48 +01:00
CM
6aa3df5ff1
Create bsip 45 2018-10-07 14:52:55 +01:00
John M. Jones
79b73409da
Fixed method name for consistency 2018-09-28 13:12:53 -05:00
John M. Jones
ed2ff08a5c
Edits based on comments
Removed outdated paragraph about user requesting refund after timeout (it is now automatic). Added method to retrieve all HTLC contracts by account.
2018-09-28 13:06:09 -05:00
Ryan R. Fox
3d4383bf93
Refine Summary for Tokenholders 2018-09-21 04:34:46 -04:00
jmjatlanta
5f64cb0877 Added summary for tokenholders 2018-09-21 00:57:27 +02:00
Abit
2520e8d067
Merge pull request #105 from sschiessl-bcp/patch-2
Completion of this BSIP from a formal standpoint
2018-09-07 15:06:44 +00:00
ryanRfox
d14fad500b Fixup: API and Operations 2018-09-06 16:42:59 -04:00
ryanRfox
492851edfc Fixup: HTLC Object 2018-08-31 10:49:53 -04:00
ryanRfox
9f36ae2ad0 Change: Secured Assets, Fixup: Specification 2018-08-30 11:22:28 -04:00
ryanRfox
1961fb9c00 Fixup: Specifications 2018-08-29 16:40:48 -04:00
Stefan Schießl
b2dca44842
add bitcrabs comment 2018-08-29 13:09:34 +02:00
Stefan Schießl
c2971903a3
Completion of this BSIP from a formal standpoint and inclustion of a clear accepted/rejected state 2018-08-29 08:34:00 +02:00
ryanRfox
a1d16d3cdd BSIP44: Hashed Timelock Contracts 2018-08-28 09:45:50 -04:00
Abit
bbe731878c
Merge pull request #101 from bitshares/abitmore-patch-1
Update worker ID for BSIP 42
2018-08-27 17:15:27 +00:00
Abit
a650325c85
BSIP 42: updated worker to workers 2018-08-27 19:15:07 +02:00
Abit
377cac0d8d
BSIP 42: added one more discussion link 2018-08-27 19:12:14 +02:00
Abit
e2649be31d
Added which worker is pro and which is con 2018-08-27 19:10:58 +02:00
ryanRfox
dc97097f94 Fixup: Specification 2018-08-26 17:10:20 -04:00
Abit
c3588c8984
Update workers 2018-08-24 00:03:26 +02:00
ryanRfox
85faf7dadc Fixup: HTLC 2018-08-22 23:49:41 -04:00
ryanRfox
58eff4b633 Fixup: header 2018-08-22 16:04:37 -04:00
ryanRfox
dca7c12861 Hashed Time-Lock Contract 2018-08-22 15:58:20 -04:00
Abit
faf36ed2e3
Fixed numbering in readme 2018-08-22 16:29:25 +02:00
Abit
f2b92776d5
Merge pull request #99 from bitshares/bsip42-price-feed-feedback
BSIP 42: dynamically adjust price feed
2018-08-22 14:23:53 +00:00
abitmore
de42eccd27 Added description about limits 2018-08-22 09:16:37 -04:00
abitmore
b4cb8ea07d More discussions 2018-08-21 23:04:14 -04:00
abitmore
611883a24a BSIP 42: dynamically adjust price feed 2018-08-21 22:20:16 -04:00
Fabian Schuh
81efae4b75
Merge pull request #86 from sschiessl-bcp/patch-1
Custom active permission
2018-08-16 15:35:07 +02:00
Stefan Schießl
b0dfaa54ad
Update bsip-0040.md 2018-08-13 13:01:42 +02:00
Stefan Schießl
b5602911ad
Update bsip-0040.md 2018-08-13 13:00:04 +02:00
Stefan Schießl
51d46dae43
Update bsip-0040.md 2018-08-12 20:45:24 +02:00
Stefan Schießl
e749319cac
Update bsip-0040.md 2018-08-10 22:42:02 +02:00
Stefan Schießl
1d0a341e61
Update bsip-0040.md 2018-08-10 14:08:02 +02:00
Stefan Schießl
02bb9e521b
Milestone 4 in separate section 2018-08-10 14:07:07 +02:00
Stefan Schießl
64338a4340
Update bsip-0040.md 2018-08-10 13:55:17 +02:00
Stefan Schießl
982348ca5d
add remaining_executions 2018-08-10 13:53:57 +02:00
Stefan Schießl
0f2a433516
Update bsip-0040.md 2018-08-10 07:27:42 +02:00
Stefan Schießl
0c43bfd8ba
Update bsip-0040.md 2018-08-10 07:26:10 +02:00
Stefan Schießl
bd2af374af
If beneficial for performance or complexity sections 2018-08-10 07:15:18 +02:00
Stefan Schießl
f9c2df5d35
Clarify duration 2018-08-10 06:59:30 +02:00
Stefan Schießl
e9c8e9bc88
add neq 2018-08-10 06:56:05 +02:00
Stefan Schießl
a1ce8ab255
Update bsip-0040.md 2018-08-09 11:20:37 +02:00
Stefan Schießl
78100ed43f
add contains, not_contains 2018-08-09 11:19:19 +02:00
Stefan Schießl
0919eae319
Update bsip-0040.md 2018-08-09 11:10:04 +02:00
Stefan Schießl
f1f97550ff
add length and eq to number comparison 2018-08-09 11:09:37 +02:00
Stefan Schießl
3ac2159691
update economics 2018-08-09 10:53:53 +02:00
Stefan Schießl
5dcf316a63
Update bsip-0040.md 2018-08-09 10:44:26 +02:00
Stefan Schießl
6a00164534
Update bsip-0040.md 2018-08-08 16:48:25 +02:00
Stefan Schießl
552b5c4bfa
include multi-sig example 2018-08-07 22:34:03 +02:00
Stefan Schießl
40b7ae44d9
proposals can be created by anyone 2018-08-07 22:04:32 +02:00
Stefan Schießl
5ddc6cddf5
Update bsip-0040.md 2018-08-05 17:39:39 +02:00
Stefan Schießl
d9466f2ac4
Update bsip-0040.md 2018-08-03 08:26:15 +02:00
Stefan Schießl
7d1468e016
updated Outline of handling incoming transactions 2018-08-03 08:25:35 +02:00
Stefan Schießl
ecf22d4735
add reviewers 2018-08-03 08:14:16 +02:00
Stefan Schießl
d036c8cf72
calrify child operations of proposals 2018-08-03 08:11:08 +02:00
Stefan Schießl
871b93dfe6
more detail for Example: Simple transfer 2018-08-03 08:10:17 +02:00
Stefan Schießl
b8f269187e
include new comments 2018-08-03 07:58:30 +02:00
Stefan Schießl
5d92967586
add enabled flag 2018-08-02 21:55:41 +02:00
Stefan Schießl
8893727844
Update bsip-0040.md 2018-08-02 16:50:23 +02:00
Stefan Schießl
651e00c5eb
Update bsip-0040.md 2018-08-02 16:48:58 +02:00
Stefan Schießl
34d0086b63
clarify month call 2018-08-02 16:41:11 +02:00
Stefan Schießl
8dce3724c5
change typos 2018-08-02 16:37:31 +02:00
Stefan Schießl
03f24f0fb3
more cleaning up 2018-07-30 16:16:18 +02:00
Stefan Schießl
b1864f8a8a
moving around 2018-07-30 15:38:47 +02:00
Stefan Schießl
2222ceab61
moved examples out of specifications 2018-07-30 15:35:12 +02:00
Stefan Schießl
12355d607a
clarify milestone procedure 2018-07-30 15:29:19 +02:00
Stefan Schießl
9b07069a8f
include milestone differentation 2018-07-30 15:24:31 +02:00
Stefan Schießl
b7282a531f
fix formatting of new example 2018-07-30 15:21:09 +02:00
Stefan Schießl
63f6ddc6e3
Include either or example 2018-07-30 15:18:43 +02:00
Stefan Schießl
f0d16bb517
Update bsip-0040.md 2018-07-30 15:00:51 +02:00
Stefan Schießl
cf72eaa2d7
add logical assert 2018-07-30 14:39:45 +02:00
Stefan Schießl
41a2403875
Update bsip-0040.md 2018-07-30 12:41:56 +02:00
Stefan Schießl
6c7a90a097
Update bsip-0040.md 2018-07-30 08:54:41 +02:00
Stefan Schießl
d77a526aac
consistent use of "list of" 2018-07-30 08:38:30 +02:00
Stefan Schießl
15a0514894
more details on attribute_assert and where permission is stored 2018-07-30 08:34:41 +02:00
Stefan Schießl
d5e6f75ae9
change dict to tuple 2018-07-30 07:51:45 +02:00
Stefan Schießl
e145ede26a
add wording and defition of match for authority 2018-07-30 07:50:58 +02:00
Stefan Schießl
0e8e9ad705
add economics 2018-07-29 15:39:59 +02:00
Stefan Schießl
ab5500dfda
attribute assert nesting 2018-07-29 09:57:58 +02:00
Stefan Schießl
07b6fa080d
Update bsip-0040.md 2018-07-29 08:07:44 +02:00
Stefan Schießl
523ed86eab
Update bsip-0040.md 2018-07-29 07:58:18 +02:00
Stefan Schießl
1d4aa4266b
Update bsip-0040.md 2018-07-29 07:46:33 +02:00
Stefan Schießl
ba625b1cd3
remove contains only, and add attibute_assert 2018-07-29 07:43:14 +02:00
Stefan Schießl
6df4a3824b
remove length, add price as explicit allowed conversion 2018-07-29 07:10:44 +02:00
Stefan Schießl
2051ff38f8
Update bsip-0040.md 2018-07-29 00:28:32 +02:00
Stefan Schießl
4349e8da45
Update bsip-0040.md 2018-07-29 00:22:22 +02:00
Stefan Schießl
2bcc40ae04
Update bsip-0040.md 2018-07-29 00:20:00 +02:00
Stefan Schießl
fccca20761
Update bsip-0040.md 2018-07-29 00:18:01 +02:00
Stefan Schießl
e2d902290a
Update bsip-0040.md 2018-07-29 00:16:52 +02:00
Stefan Schießl
8207e24721
Update bsip-0040.md 2018-07-29 00:01:37 +02:00
Stefan Schießl
6c64b50d23
Update bsip-0040.md 2018-07-28 23:53:05 +02:00
Stefan Schießl
5da66a4c34
Update bsip-0040.md 2018-07-28 23:43:28 +02:00
Stefan Schießl
bcfa32f90c
Update bsip-0040.md 2018-07-28 23:38:48 +02:00
Stefan Schießl
ef397f0be1
Update bsip-0040.md 2018-07-28 23:31:57 +02:00
Stefan Schießl
55aa5b04eb
Update bsip-0040.md 2018-07-28 16:03:49 +02:00
Stefan Schießl
7ae9f94d73
Update bsip-0040.md 2018-07-28 16:03:14 +02:00
Stefan Schießl
5b5e550c28
Update bsip-0040.md 2018-07-28 15:56:49 +02:00
Stefan Schießl
75faa36dee
Update bsip-0040.md 2018-07-28 15:43:41 +02:00
Stefan Schießl
e6cc5f1252
Update bsip-0040.md 2018-07-27 21:56:40 +02:00
Stefan Schießl
cb79a4fc13
Update bsip-0040.md 2018-07-27 15:57:24 +02:00
Stefan Schießl
189ceec7b1
Update bsip-0040.md 2018-07-27 15:54:30 +02:00
Stefan Schießl
1083311739
Update bsip-0040.md 2018-07-27 15:00:07 +02:00
Stefan Schießl
54d0ee678d
Update bsip-0040.md 2018-07-27 14:52:58 +02:00
Stefan Schießl
71e57c5f6d
Update bsip-0040.md 2018-07-27 14:52:29 +02:00
Stefan Schießl
824549eaaa
Update bsip-0040.md 2018-07-27 14:52:12 +02:00
Stefan Schießl
859169559d
include more assert descrption and lisght rewriting 2018-07-27 14:43:51 +02:00
Stefan Schießl
815a50c802
add more detailed asserts description and milestones 2018-07-27 14:33:35 +02:00
Stefan Schießl
10fa5ad679
Comments from pmconrad 2018-07-27 13:14:48 +02:00
Stefan Schießl
28f96bafcc
Update README.md 2018-07-25 14:33:47 +02:00
Stefan Schießl
239b7a2957
Update bsip-0040.md 2018-07-25 14:13:07 +02:00
Stefan Schießl
a82530729e
Update bsip-0040.md 2018-07-25 14:12:42 +02:00
Stefan Schießl
5ebcbb6f99
Update bsip-0040.md 2018-07-25 14:11:50 +02:00
Stefan Schießl
e8fabfd5cd
Update bsip-0040.md 2018-07-25 14:11:03 +02:00
Fabian Schuh
e928c44cc8
Update bsip-0040.md 2018-07-25 13:50:14 +02:00
Stefan Schießl
aed7556df5
Update bsip-0040.md 2018-07-25 13:35:17 +02:00
Stefan Schießl
7a13f4de7c
Update bsip-0040.md 2018-07-25 13:34:40 +02:00
Stefan Schießl
15fbf7fda5
Custom active permissions 2018-07-25 13:19:23 +02:00
Abit
529977580f
Merge pull request #85 from bitshares/update-status
Update status of some BSIPs from accepted to installed
2018-07-19 22:01:09 +00:00
abitmore
0bb45ebd64 Update status from accepted to installed 2018-07-19 17:10:15 -04:00
Abit
ff1133a108
Merge pull request #72 from bitshares/tmp1
Update worker and status of BSIP 38
2018-04-23 18:00:48 +02:00
abitmore
10cb9b80bc Merge branch 'master' into tmp1 2018-04-23 11:59:17 -04:00
Abit
28eb764536
Merge pull request #74 from bitshares/bsip38-patch2
Add rounding rule for bsip 38
2018-04-17 22:46:53 +02:00
abitmore
961b7162f5 bsip38: update rounding 2018-04-17 05:33:08 -04:00
Abit
f817f1d886
BSIP38: update variable names for rounding 2018-04-16 01:43:37 +02:00
Abit
a1e5901540
bsip38: correction about rounding 2018-04-16 01:35:59 +02:00
Abit
2a9e24f600
Merge pull request #75 from bitshares/bsip38-patch3
Bsip38 patch3
2018-04-16 01:27:19 +02:00
Taconator
c7bc11e8e1 bsip38: Clarifications 2018-04-14 16:17:58 -04:00
Taconator
6b50260452 bsip35: Correcting units in Example #3 2018-04-14 16:16:34 -04:00
abitmore
4012924209 bsip38: update rounding 2018-04-11 07:47:54 -04:00
abitmore
44818ec0b6 bsip38: update rounding rules and reorganize 2018-04-11 07:25:28 -04:00
abitmore
4bd4e6febc bsip38: add description about black swan 2018-04-10 16:10:02 -04:00
abitmore
555937cf2f bsip38: more description about rounding and mcr 2018-04-10 15:08:35 -04:00
abitmore
37ca45b475 bsip38: rewording; add max_debt_to_cover formula 2018-04-10 13:56:55 -04:00
abitmore
3006bc8022 bsip38 depends on bsip31 2018-04-10 13:34:17 -04:00
abitmore
17dd78b6c7 Add rounding rule for bsip 38 2018-04-10 05:50:14 -04:00
Abit
98d712ece6
Merge pull request #73 from bitshares/bsip38-patch1
bsip38 specification: add proposal handling
2018-04-09 23:45:49 +02:00
Abit
daaad1f2da bsip38 specification: add proposal handling 2018-04-08 10:27:38 -04:00
abitmore
1153f5fb5d Update worker and status of BSIP 38 2018-04-08 07:31:03 -04:00
Fabian Schuh
61f66b08a3 BSIP39 2018-03-22 14:53:04 +01:00
Abit
47edbd2e01
Merge pull request #70 from bitshares/bsip38
BSIP 38: add target CR option to short positions
2018-03-17 21:45:59 +01:00
abitmore
55b5808016 Update README.md: add bsip 38 2018-03-05 23:12:12 +00:00
abitmore
9031dfaf9f Merge branch 'master' into bsip38 2018-03-05 23:10:48 +00:00
abitmore
e70ab946af BSIP 38: add target CR option to short positions 2018-03-05 21:55:55 +00:00
23 changed files with 1711 additions and 30 deletions

View file

@ -33,15 +33,27 @@ Number | Title |
[23](bsip-0023.md) | Sharedropping an UIA against an external cryptocurrency distribution snapshot | Customminer | Protocol | Draft
[24](bsip-0024.md) | Locking Bitshares away as 'Bitshares Influence' for voting privileges on the BTS DEX | Customminer | Protocol | Draft
[25](bsip-0025.md) | Transaction Flat-Rates with Weighted Rate-Limitation | Fabian Schuh | Protocol | Draft
[26](bsip-0026.md) | Refund Order Creation Fee in Originally Paid Asset on Cancel | Abit More | Protocol | Accepted
[27](bsip-0027.md) | Asset Issuer Reclaim Fee Pool Funds | Abit More | Protocol | Accepted
[26](bsip-0026.md) | Refund Order Creation Fee in Originally Paid Asset on Cancel | Abit More | Protocol | Installed
[27](bsip-0027.md) | Asset Issuer Reclaim Fee Pool Funds | Abit More | Protocol | Installed
[28](bsip-0028.md) | Worker Proposal Improvements | Bill Butler | Protocol | Draft
[29](bsip-0029.md) | Asset issue change to require owner authority | Fabian Schuh | Protocol | Accepted
[30](bsip-0030.md) | Always Allow Increasing Collateral Ratio If Debt Not Increased | Abit More | Protocol | Accepted
[31](bsip-0031.md) | Update Short Position's Margin Call Price After Partially Called Or Settled | Abit More | Protocol | Accepted
[32](bsip-0032.md) | Always Match Orders At Maker Price | Abit More | Protocol | Accepted
[33](bsip-0033.md) | Maker Orders With Better Prices Take Precedence | Abit More | Protocol | Accepted
[34](bsip-0034.md) | Always Trigger Margin Call When Call Price Above Or At Price Feed | Abit More | Protocol | Accepted
[35](bsip-0035.md) | Mitigate Rounding Issue On Order Matching | Abit More | Protocol | Accepted
[36](bsip-0036.md) | Remove expired price feeds on maintenance interval | oxarbitrage | Protocol | Accepted
[37](bsip-0037.md) | Allow new asset name to end with a number | oxarbitrage | Protocol | Accepted
[29](bsip-0029.md) | Asset issue change to require owner authority | Fabian Schuh | Protocol | Installed
[30](bsip-0030.md) | Always Allow Increasing Collateral Ratio If Debt Not Increased | Abit More | Protocol | Installed
[31](bsip-0031.md) | Update Short Position's Margin Call Price After Partially Called Or Settled | Abit More | Protocol | Installed
[32](bsip-0032.md) | Always Match Orders At Maker Price | Abit More | Protocol | Installed
[33](bsip-0033.md) | Maker Orders With Better Prices Take Precedence | Abit More | Protocol | Installed
[34](bsip-0034.md) | Always Trigger Margin Call When Call Price Above Or At Price Feed | Abit More | Protocol | Installed
[35](bsip-0035.md) | Mitigate Rounding Issue On Order Matching | Abit More | Protocol | Installed
[36](bsip-0036.md) | Remove expired price feeds on maintenance interval | oxarbitrage | Protocol | Installed
[37](bsip-0037.md) | Allow new asset name to end with a number | oxarbitrage | Protocol | Installed
[38](bsip-0038.md) | Add target collateral ratio option to short positions | Abit More | Protocol | Installed
[39](bsip-0039.md) | Automatically approve proposals by the proposer | Fabian Schuh | Protocol | Draft
[40](bsip-0040.md) | Custom active permission | Stefan Schießl | Protocol | Draft
[42](bsip-0042.md) | Adjust price feed to influence trading price of SmartCoins | Abit More | Protocol | Draft
[44](bsip-0044.md) | Hashed Time-Locked Contract | Ryan R. Fox | Protocol | Draft
[45](bsip-0045.md) | Introduce 'allow use as bitasset backing collateral' flag/permission to assets | Customminer | Protocol | Draft
50 | Stealth development, Phase II | Christopher Sanborn | Informational | Draft
51 | New operations for Confidential Asset (CA) transactions | Christopher Sanborn | Protocol | Draft
52 | Ring signatures for untraceability of Stealth transactions | Christopher Sanborn | Protocol | Draft
[53](bsip-0053.md) | Blockchain scanning for inbound Stealth transactions | Christopher Sanborn | Protocol | Draft
54 | Deterministic addresses for Stealth wallets | Christopher Sanborn | Informational | Draft
55 | Metadata hiding via Garlic Routing and other means | Christopher Sanborn | Informational | Draft

View file

@ -107,7 +107,7 @@ for each asset_holder in coin_age_hashmap {
# Copyright
N/A - Consider this BSIP entirely open-source/MIT-licensed, I am not the originator of the concept of 'coin-age' (several proof-of-stake cryptocurrencies make use of coin-age for finding stakable coins).
This document is placed in the public domain.
# See Also
* [List account balances - Graphene documentation](http://docs.bitshares.org/api/database.html#id8)

View file

@ -119,7 +119,7 @@ Please do raise your concerns, propose improvements and engage in the BSIP creat
# Copyright
This document is placed in the public domain, 100% open source & should be considered MIT licensed.
This document is placed in the public domain.
# See Also

View file

@ -651,7 +651,7 @@ The Bitshares starship drops out of hyperspace in planet Bitcoin's orbit, the cr
# Copyright
This document is placed in the public domain, 100% open source & should be considered MIT licensed.
This document is placed in the public domain.
# See Also

View file

@ -62,7 +62,7 @@ Would there even be a difference in voting behaviour betwen the two? Perhaps it
# Copyright
This document is placed in the public domain, 100% open source & should be considered MIT licensed.
This document is placed in the public domain.
# See Also

View file

@ -1,7 +1,7 @@
BSIP: 0026
Title: Refund Order Creation Fee in Originally Paid Asset on Cancel
Authors: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2017-10-16
Discussion: https://bitsharestalk.org/index.php/topic,25153.0.html

View file

@ -2,7 +2,7 @@
Title: Asset Issuer Reclaim Fee Pool Funds
Authors: Abit More <https://github.com/abitmore>
Fabian Schuh <Fabian@BitShares.eu>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2017-11-02
Discussion: https://github.com/bitshares/bitshares-core/issues/188

View file

@ -1,7 +1,7 @@
BSIP: 0029
Title: Asset issue change to require owner authority
Authors: Fabian Schuh <Fabian.Schuh@blockchainprojectsbv.com>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-01-28
Discussion: https://github.com/bitshares/bitshares-core/issues/199

View file

@ -1,7 +1,7 @@
BSIP: 0030
Title: Always Allow Increasing Collateral Ratio If Debt Not Increased
Author: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-16
Discussion: https://github.com/bitshares/bitshares-core/issues/583,

View file

@ -1,7 +1,7 @@
BSIP: 0031
Title: Update Short Position's Margin Call Price After Partially Called Or Settled
Author: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-16
Discussion: https://github.com/bitshares/bitshares-core/issues/343,

View file

@ -1,7 +1,7 @@
BSIP: 0032
Title: Always Match Orders At Maker Price
Author: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-16
Discussion: https://github.com/bitshares/bitshares-core/issues/338

View file

@ -1,7 +1,7 @@
BSIP: 0033
Title: Maker Orders With Better Prices Take Precedence
Author: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-17
Discussion: https://github.com/bitshares/bitshares-core/issues/625,

View file

@ -1,7 +1,7 @@
BSIP: 0034
Title: Always Trigger Margin Call When Call Price Above Or At Price Feed
Author: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-18
Discussion: https://github.com/bitshares/bitshares-core/issues/606

View file

@ -1,13 +1,13 @@
BSIP: 0035
Title: Mitigate Rounding Issue On Order Matching
Author: Abit More <https://github.com/abitmore>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-19
Discussion: https://github.com/bitshares/bitshares-core/issues/132,
https://github.com/bitshares/bitshares-core/issues/184,
https://github.com/bitshares/bitshares-core/issues/342
Replaces: -
Superseded-By: 0038 (partly)
Worker: 1.14.96
# Abstract
@ -261,7 +261,8 @@ The detailed rules proposed by this BSIP with new rules highlighted:
amount remaining), check the remaining amount, if the amount is too small
so the order would receive nothing on next match, cancel the order.**
* When matching a limit order with a call order,
* When matching a limit order with a call order (**note: this rule has changed
in [BSIP 38](bsip-0038.md)**),
* **if the call order is receiving the whole debt amount, which means it's
smaller and the short position will be closed after the match, round up its
paying amount; otherwise,** round down its paying amount.
@ -371,12 +372,12 @@ Assuming both orders are limit orders, they'll be processed as follows:
* If Alice's order is maker, use `$3 / 80` as match price; since Alice's order
is smaller, round in favor of Bob's order, so Alice will get
`round_down(50 CORE * $3 / 80 CORE) = round_down($1.6) = $1`,
and Bob will get `round_up($1 * 80 CORE / $3) = round_up($26.67) = $27`,
and Bob will get `round_up($1 * 80 CORE / $3) = round_up(26.67 CORE) = 27 CORE`,
the effective price would be `$1 / 27 = $0.037`;
* If Bob's order is maker, use `$19 / 500` as match price; since Alice's order
is smaller, round in favor of Bob's order, so Alice will get
`round_down(50 CORE * $19 / 500 CORE = round_down($1.9) = $1`,
and Bob will get `round_up($1 * 500 CORE / $19) = round_up($26.3) = $27`,
and Bob will get `round_up($1 * 500 CORE / $19) = round_up(26.3 CORE) = 27 CORE`,
the effective price would also be `$1 / 27 = $0.037`.
# Specifications

View file

@ -1,7 +1,7 @@
BSIP: 0036
Title: Remove expired price feeds on maintenance interval
Author: oxarbitrage <https://github.com/oxarbitrage>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-22
Discussion: https://bitsharestalk.org/index.php?topic=25996.0

View file

@ -1,7 +1,7 @@
BSIP: 0037
Title: Allow new asset name to end with a number
Author: oxarbitrage <https://github.com/oxarbitrage>
Status: Accepted
Status: Installed
Type: Protocol
Created: 2018-02-23
Discussion: https://bitsharestalk.org/index.php?topic=25997.0

348
bsip-0038.md Normal file
View file

@ -0,0 +1,348 @@
BSIP: 0038
Title: Add target collateral ratio option to short positions
Author: Abit More <https://github.com/abitmore>
Status: Installed
Type: Protocol
Created: 2018-03-05
Discussion: https://bitsharestalk.org/index.php?topic=25924.0,
https://github.com/bitshares/bsips/issues/51
Replaces: 0035 (partly)
Worker: 1.14.100
# Abstract
When a short position is margin called, some of its collateral will be sold
and some or all of its debt will be covered accordingly.
However, usually more collateral will be sold, in comparison to the minimum
amount required to be sold to maintain the maintenance collateral ratio (MCR)
requirement.
This BSIP proposes a protocol change to let shortes (borrowers) have control
over selling how much collateral when being margin called.
This BSIP depends on [BSIP 31](bsip-0031.md).
# Motivation
As discussed in [this forum
post](https://bitsharestalk.org/index.php?topic=25924.0), current process gives
manipulators big chance to short BTS and make money and increase the risk of
black swan, thus hurts the BTS ecosystem. Many participants in the discussion
agree that usually it's not really required to cover all debt (thus selling more
collateral) when being margin called.
After [BSIP 31](bsip-0031.md) is
in place, shorters will have more chance to not cover all debt on margin call,
but it's not 100% guaranteed, and they can only accept the result passively.
# Rationale
Different shorters have different expectations when being margin called:
* some want to close their short positions completely to cut losses;
* some want to sell as little collateral as possible to keep remaining short
positions as large as possible;
* some want to sell more than minimum required collateral to reduce the
possibility of being margin called again in the near future, but don't
want to close their short positions completely.
With a new "target collateral ratio" option, all these expectations can be met.
In sections below, both a "margin call order" and a "call order" mean a short
position in margin call territory.
## The Definition of Target Collateral Ratio
For reference purpose, the collateral ratio of any given debt/short position
describes the ratio between the available collateral (e.g. core toke BTS) to
the debt that is owed (e.g. CNY, etc.) by the original borrower to the
blockchain. It is defined to be a dimensionless value as
`CR = collateral / (debt / feed_price)` where the price is measured in units of
the debt asset / units of the collateral asset (e.g. `CNY / BTS`).
"Target collateral ratio" is an optional value which can be set onto a short
position, when the position being automatically liquidized (margin called),
sell no more than required collateral until collateral ratio of the position
is **higher than** this value.
* Default value: not set, which means to sell as much collateral as possible,
which is same to current behavior.
* When the value is set but below MCR, use MCR.
* When matching a margin call order with a force settle order, ignore this
option.
* When checking for black swan or globally settling, ignore this option.
Why to use "higher than" but not "equal to", is due to an existing rule:
if a short position's collateral ratio is equal to MCR, it will still be
margin called.
## The Math
Let prices described below be in terms of `debt / collateral`,
e.g. how much CNY per BTS.
A margin call order can be matched with a limit order as either maker or taker,
in any case, there would be a matching price. We can solve an equation as
follows:
```
target_CR = new_collateral / ( new_debt / feed_price )
= ( collateral - max_amount_to_sell ) * feed_price
/ ( debt - amount_to_get )
= ( collateral - max_amount_to_sell ) * feed_price
/ ( debt - max_amount_to_sell * match_price )
=>
max_amount_to_sell = (debt * target_CR - collateral * feed_price)
/ (target_CR * match_price - feed_price)
```
The result is a rational number.
Then, the maximum debt it wants to cover can be calculated as:
```
max_debt_to_cover = max_amount_to_sell * match_price
```
The result is a rational number as well.
## Rounding on Maximums Calculation
As described in [BSIP 35](bsip-0035.md), at last we need to convert the
rational numbers to integers, so rounding is involved.
### The first round
When calculating maximum debt to cover, the goal is to go over the specified
target but not go too far beyond.
That said, if a short position got matched with a big limit order, after
partially filled, its collateral ratio should be **just** higher than specified
target collateral ratio.
We may calculate like this: if `max_debt_to_cover` has no fractional component
(e.g. 5.00 as opposed to 5.23), plus it by one Satoshi; otherwise, round it up.
An effectively same approach is to round down then add one Satoshi onto the
result:
```
max_debt_to_cover_int = round_down(max_debt_to_cover) + 1
```
With `max_debt_to_cover_int` in integer, `max_amount_to_sell_int` in integer
can be calculated as:
```
max_amount_to_sell_int = round_up(max_debt_to_cover_int / match_price)
```
It's worth noting that we need to make sure the 2 integers always pair
perfectly, they're either the full collateral amount and full debt
amount, or have:
```
max_amount_to_sell_int == round_up(max_debt_to_cover_int / match_price)
max_debt_to_cover_int == round_down(max_amount_to_sell_int * match_price)
```
For `max_amount_to_sell_int` above, we can adjust `max_debt_to_cover_int` with:
```
max_debt_to_cover_int = round_down(max_amount_to_sell_int * match_price)
```
### Review the result
Due to rounding, it's not guaranteed that selling more collateral will
always result in higher collateral ratio on remaining call order.
On one hand, it's not guaranteed that the pair of integers above will
meet the requirements: after covered `max_debt_to_cover_int`, it's possible
that collateral ratio of remaining order is still not higher than `MCR` or
`target_CR`. In this case, the result is not acceptable. Generally, if we search
upwards, we can find a new pair that meets the requirements, or hit the order's
collateral or debt amount.
On the other hand, no matter if the pair above meets the collateral ratio
requirement, it's possible that there exists a smaller pair which meets the
requirement. However, it's not easy to find a perfect pair. If we search
downwards, it's not easy to decide when to stop; if we start from a smaller
pair then search upwards, it's not easy to decide where to start.
### Favor performance over accuracy
Due to the difficulty mentioned above, in this BSIP we allow imperfect results,
and don't describe or enforce how exactly to find better results.
The first implementation should be made with efforts. It will become consensus
after approved by stake holders via voting. It will then be in effect until
changed or replaced with a new BSIP.
Here are some guidelines about implementation.
When searching upwards, usually the real working pair is not far away, but it's
not guaranteed due to rounding. For better performance, it's not good to search
by adding one Satoshi every time. Can use a divergence sequence or other
sublinear-time algorithm, that means it's possible that some good data will be
skipped which may result in impefect result.
## Rounding on Order Matching, and Edge Cases
Rounding rules about order matching are defined in [BSIP 35](bsip-0035.md).
Generally, when two orders got matched, the order matching engine will favor
the larger order while rounding.
When a call order got matched with a limit order, if the call order has no
`target_CR` option set but its debt is more than the limit order offered,
or the call order has `target_CR` option set but `max_debt_to_cover_int`
is more than the limit order offered, both means the call order is larger,
according to the rounding rule, the call order's paid collateral will be
rounded down, so its collateral ratio will increase after partially filled.
If the call order has `target_CR` option set and is covering the whole "maximum
debt to cover", to be fair, we should consider that part of call order to be
smaller and favor the limit order while rounding, otherwise the limit order may
suffer an overall loss.
That means the call order will be partially filled and its paid
collateral will be rounded up, in this case, if the call order's collateral
ratio was not too low, usually, partially filling will still lead to an
increase in collateral ratio.
However, there are edge cases: if the call order's collateral ratio is already
low, or its debt or collateral amount is tiny, rounding up paid collateral on
partially filling will probably lead to a decrease in collateral ratio,
in an extreme case it may even lead to a black swan event. This is against the
intention of this BSIP. To solve this issue, if detected a decrease in
collateral ratio when matching, we propose to ignore the `target_CR` option of
corresponding call order, and re-evaluate the match.
## The Revised Rounding Rules on Order Matching
So the rule for matching a limit order with a call order will be revised as
follows with new rules **in bold**:
* if the call order is receiving the whole debt amount, which means it's
smaller and the short position will be closed after the match, round up its
paying amount;
* **otherwise,**
* **if the call order has `target_collateral_ratio` set and is receiving the
maximum debt amount calculated with `target_collateral_ratio`, see the call
order as smaller, try to round up its paying amount;**
* **for edge cases, if the call order's collateral ratio would not increase
after being partially filled due to the round-up (which may even cause a
black swan event in an extreme scenario), see its `target_collateral_ratio`
as "not set" for this time, re-apply the filling rules for this match.**
* otherwise, the call order is larger, round down its paying amount.
* if the limit order would receive nothing, cancel it (it's smaller,
so safe to cancel);
* otherwise, calculate the amount that the limit order would pay as
`round_up(receiving_amount * match_price)`. After filled both orders,
if the limit order still exists, the remaining amount might be too small,
so cancel it.
## When and How To Use the Option
The `target_collateral_ratio` option can to be set, updated or cleared when
creating or updating a short position. When doing so, other rules still apply,
E.G. can't update a short position to have too small collateral ratio.
For one account, different short positions (for different assets) can be set
with different `target_collateral_ratio`.
For one short position,
* if want to close it completely to cut losses when being margin called,
* don't set or clear `target_collateral_ratio` option, because the option is
**optional** so can be unset or cleared;
* if want to sell as little collateral as possible when being margin called,
to keep the remaining short position as large as possible,
* set `target_collateral_ratio` to `MCR` or less;
* if want to sell more than minimum required collateral when being margin
called, to reduce the possibility of being margin called again in the near
future, but don't want to completely close the short position,
* set `target_collateral_ratio` to a value higher than `MCR`, E.G. `300%`.
The higher the value is, the more collateral will be listed for sale when
it's margin called.
# Specifications
## `call_order_object`
The `call_order_object` stores current status of a short position.
Need to add a new field into it:
* `optional<uint16_t> target_collateral_ratio;`
Same to other collateral ratios, the actual ratio is the value divided by
`GRAPHENE_COLLATERAL_RATIO_DENOM` aka `1000`.
Due to the `uint16_t` data type, the new field's maximum value is `65535`,
which means `6553.5%`.
## `call_order_update_operation`
The `call_order_update_operation` is used to open, update and close short
positions. It contains an `extensions` field:
* `extensions_type extensions;`
Need to override data type of this field so it can include the new "target
collateral ratio" option.
## `call_order_update_evaluator`
The `call_order_update_evaluator` is used to evaluate and apply the
`call_order_udpate_operation`. Need to add logic:
* only allow `target_collateral_ratio` to be set after the hard fork;
* set/update/clear `target_collateral_ratio` field of `call_order_object`
accordingly. Specifically,
* set or update the field if it presents in the operation and is valid,
* clear the field if it doesn't present in the operation or is not valid.
## `proposal_create_evaluator`
The `proposal_create_evaluator` is used to evaluate and apply the
`proposal_create_operation`, which can contain zero or more
`call_order_udpate_operation` objects. Need to add logic:
* only allow `target_collateral_ratio` to be set after the hard fork.
## Call Order Matching and Filling
After a call order get matched with a limit order and about to fill,
* if `target_collateral_ratio` is not set, process as before;
* if `target_collateral_ratio` is set, compare it to `MCR`, use the bigger
one (aka `max(target_collateral_ratio,MCR)`) to calculate maximum amount of
debt to cover according to the equation described above, and apply the
revised rounding rules, then process other logic as before.
## UI/UX
The new option need to be presented and can be used in UI after the hard fork.
When there are call orders to be filled, if `target_collateral_ratio` option
is set, UI need to show exact amount of collateral that another trader is able
to buy and exact amount of debt that need to pay according to the equation
described above. Note that this calculation will need to use the current `feed_price`.
# Discussion
With this BSIP, we provided a tool that can be used by shorters to keep their
positions, however, it's not always the best strategy to keep as large position
as possible, sometimes it's even more risky than just cutting losses.
Nevertheless, how to use the tool, is up to the traders to decide.
# Summary for Shareholders
"This is how it should work."
# Copyright
This document is placed in the public domain.
# See Also
* https://bitsharestalk.org/index.php?topic=25924.0
* https://github.com/bitshares/bsips/issues/51

71
bsip-0039.md Normal file
View file

@ -0,0 +1,71 @@
BSIP: 0039
Title: Automatically approve proposals by the proposer
Authors: Fabian Schuh <https://github.com/xeroc>
Abit More <https://github.com/abitmore>
Status: Draft
Type: Protocol
Created: 2018-03-20
Discussion: https://github.com/bitshares/bitshares-core/issues/138
Worker: <Id of worker proposal>
# Abstract
On the BitShares Blockchain, proposals allow to gather signatures for a
multisignature-setup by means of on-chain approvals. In contrast to
other blockchains, these proposals are actually stored on the blockchain
and automatically executed once the required amount of approvals has
been reached. This allows participants of a multisignature-setup to
exchange insufficiently signed transactions easily.
However, when creating a new proposal, the proposer needs to manually
approve his operation afterwards. This is not only inconvenient, but
also costs and additional operation and thus a fee.
This BSIP recommends to have the proposer of a proposal automatically
added as approved.
# Motivation
In the case of a simple 2-of-3 multisig-scheme, today's implementation
forces us to have 3 operations stored on the blockchain: a) the proposal
itself, and two approvals.
The inconvenience and additional fee hinders adoption of this scheme and
makes it unnecessary complicated.
# Rational
By proposing an action, the proposer can be considered as an agreeing
party, otherwise the proposal wouldn't have been created in the first
place.
If the proposer is not part of the multisig-setup, having him approve
the proposal automatically does affect the validity of the proposal
itself.
# Specifications
This BSIP comes with only minimal modifications that, however, change
the behavior of the protocol and thus need a protocol upgrade.
The change is implemented in such a way that the `fee_paying_account`
for the proposal is added to the `available_active_approvals` of the
proposal after creation.
# Discussion
To be found in the forum - see link above.
# Summary for Shareholders
This BSIP proposes a minor modification that improves the process of
using hierarchical account permissions and simplifies the use of
multisig-setups with only minimal modifications.
# Copyright
This document is placed in the public domain.
# See Also
* https://github.com/bitshares/bitshares-core/issues/138

422
bsip-0040.md Normal file
View file

@ -0,0 +1,422 @@
BSIP: 0040
Title: Custom active permissions
Authors:
Stefan Schießl <https://github.com/sschiessl-bcp>
Contributors and Reviewers:
Alex Megalokonomos <https://github.com/clockworkgr>
Fabian Schuh <https://github.com/xeroc>
Abit <https://github.com/abitmore>
Peter Conrad <https://github.com/pmconrad>
Status: Draft
Type: Protocol
Created: 2018-07-25
Discussion: https://github.com/bitshares/bitshares-core/issues/1061
Worker: <Id of worker proposal>
# Abstract
Strengthening user security is one of the main factors to elevate BitShares. In light of recent
hacking and phishing attempts this becomes even more important. The need for a more sophisticated
account security preceeded the idea for a finer-grained control of account permissions.
We propose to add an additional authority to the account, called Custom Active (Permission). The
permission contains a list of operationid-to-authority mappings that each grant access to the respective
operation as if it were the active permission of the account. Additionally, the arguments of said operation
can be restricted.
For the non-technical reader the section Specification can be skipped.
# Motivation
Any successfull hacking or phishing attempt on any of the web wallets that are powered by the
BitShares Blockchain is bad publicity. The user needs to be educated in account security, and this BSIP
aims to ensure all technical possibilities are met while being flexible to allow many use-cases.
With this BSIP any user can create additional keys with specific purpose (everything else is prohibited). We list some possibilities below:
- Witness Key: Only allows update signing key and publish price feed
- Trading Key: Only allows limit orders (arguments restricted to desired markets), update margin position and transfers (arguments restricted to certain accounts)
- Proposal Update Key: Approve proposals (2FA comes to mind)
- Faucet Key: Allow only to create accounts
- Withdrawal Key: Allow another account to transfer funds to himself
- Cold Storage Key: Only allow to move funds to the Hot Wallet
The above list of named keys is nothing that is known to the backend as the backend should have an abstract implementation.
The UI could provide a button "Create Trading Key" that properly configures the respective custom active permission entry.
Note: The user can still use the active authority just like used to, no change in existing behavior. The named keys only give an additional possibility. For example: The user can login the UI using the private key of such a named key. Then he only as access to the operations that this named key grants. He can still login with the existing password to gain full access (similar a local wallet can be created that only contains the named key).
This BSIP will be split into parts that will be voted on separately (see Milestones section). All of the above keys are possible with Milestone 1. Milestone 2 allows stateful restrictions (e.g. allow market orders up to some amount for every month), Milestone 3 gives finer control of how to combine restrictions and Milestone 4 allows to set a number of allowed executions per authority (introduces an additional on-chain dependency). Milestone 2, 3 and 4 will be put up for voting if Milestone 1 proves successful.
# Rationale
Custom active permission is a list of `custom active authorities`. A `custom active authority` contains an `operation_id`,
an `authority` (just like with active permission) and `restrictions` than can be used to restrict arguments.
Furthermore, such a `custom active authority` is only valid in a specified time period (`valid_from` and `valid_to`).
When handling incoming signed transactions, the backend checks
for each operation if there is a `custom active authority` for any of its required accounts. Check for every required
account of the transaction if all its belonging operations have at least one positively matched `custom active authority`
(see Specifications for definition of "matching"), and if so behave as if the active authority of the corresponding account is present (recursive authorities are excluded, see Examples).
# Specification
All descriptions in this section are on a pseudo/prosa level and no recommendation how it can best be implemented or serialized. They are meant to facilitate the understanding. If anything in the looping process or order of evaluation is unsuitable for actual implementation, changes can be made accordingly as long the same functionality is achieved.
Note: The impact of Milestone 4 is explained in its own subsection to not hinder the reading flow
### Custom active permission and custom active authority
A `custom active permission` contains a list of `custom active authorities` and looks like follows (in JSON-like/pseudo for clarification):
```
custom_active_permission = {
account_id, // account that is assigned to this permission
authorities = list of custom_active_authority objects
}
custom_active_authority = {
enabled, // status of this authority, true or false. true when created
valid_from, // timestamp when this is active
valid_to, // t