Daniel Larimer
8a9120e517
increasing the default minimum number of witnesses to 101 for testing
2015-08-20 08:47:38 -04:00
Nathan Hourt
eeeab17477
Polish out-of-order-block handling, write test case
2015-08-19 13:07:13 -04:00
Daniel Larimer
15c99bd65b
Address #247 - out-of-order blocks in fork db
...
- with this change the fork database now caches blocks that do not link
and attempts to link the unlinked blocks after every new block is
successfully linked.
- with this change the fork database only tracks blocks as far back as
the undo history allows. This significantly reduces memory usage when
there is high witness participation.
2015-08-19 09:47:10 -04:00
Nathan Hourt
2244e467ed
Fix whitespace
2015-08-17 16:38:55 -04:00
theoreticalbts
2212cfe95b
config.hpp: Remove unused constants GRAPHENE_DEFAULT_NUM_WITNESSES, GRAPHENE_DEFAULT_NUM_COMMITTEE
2015-08-17 15:21:55 -04:00
theoreticalbts
4ecdea1ce2
Move min_witness_count and min_committee_member_count from config.hpp to chain_properties #235
2015-08-17 15:21:55 -04:00
theoreticalbts
a888c81ac4
worker_evaluator.hpp: Explicitly cast types in signed subtraction
2015-08-17 15:21:55 -04:00
theoreticalbts
29b7f343a6
Remove chain_id from global_property_object
2015-08-17 15:21:55 -04:00
Vikram Rajkumar
73cc012db9
Allow restarting block production with dummy checkpoint
2015-08-17 13:56:59 -04:00
theoreticalbts
3a7e65c888
chain_property_object: Implement chain_property_object as container for unchangeable properties set at genesis #238
2015-08-17 13:38:35 -04:00
Daniel Larimer
c0c36ca639
votable objects now keep track of their most recent vote count
2015-08-14 17:56:21 -04:00
theoreticalbts
ce624827f6
Include smart_ref_impl.hpp when dereferencing smart_ref #231
2015-08-13 14:28:54 -04:00
Daniel Larimer
80602a1f7b
adding api to query vote objects by id
2015-08-13 09:22:05 -04:00
theoreticalbts
96fb8f60c2
fee_tests.cpp: Make sure validation actually enforces nonzero fees
2015-08-12 14:26:48 -04:00
theoreticalbts
dffd010e8a
Implement and expose get_config() to allow API access to compile constants #229
2015-08-11 15:22:12 -04:00
theoreticalbts
f6c99f96b7
genesis_state.hpp: Specify definite size for initial_active_witnesses
2015-08-11 15:22:12 -04:00
theoreticalbts
3eedabbac2
Compute scaled precision at compile time, use in tests (fixes failures by prev commit)
2015-08-11 15:04:48 -04:00
theoreticalbts
44c174ad4a
config.hpp: Remove CORE constant
2015-08-11 13:14:57 -04:00
Nathan Hourt
a4e5a03973
Resolve #161 : Fix account creation fee scaling
2015-08-10 16:39:09 -04:00
theoreticalbts
2d1e76aed0
Get rid of chain ID global, move chain_id_type to types.hpp
2015-08-06 12:56:40 -04:00
theoreticalbts
2e9876b557
Implement chain-locked transactions
2015-08-06 12:56:37 -04:00
theoreticalbts
9f9c1e7895
egenesis: Initial implementation of embedded genesis
2015-08-06 12:42:59 -04:00
theoreticalbts
4e3a27156e
genesis_state.hpp: Fix missing include
2015-08-06 12:40:53 -04:00
theoreticalbts
c6debcd59c
transaction.cpp: Remove no-op
2015-08-06 12:40:53 -04:00
theoreticalbts
c7444f8d4d
Implement minimal "make install" command #219
2015-08-06 12:40:53 -04:00
Vikram Rajkumar
8a8130f620
Fix genesis init bug; #17
2015-07-31 16:06:26 -04:00
Daniel Larimer
87d3d1a198
Update API and remove SPAM
...
subscribe_to_objects now returns the initial value of the objects, this
makes it easy for someone to fetch and subscribe in a single atomic step
rather than having to call get and then subscribe which could lead to
some inconsistencies if the object was modified after get but before
subscribe.
2015-07-31 09:53:49 -04:00
theoreticalbts
9dfb0d9650
Refactor impacted_accounts into app #183
2015-07-30 12:38:59 -04:00
Nathan Hourt
82ea3c1edd
[GUI] Add transaction signing
...
TODO: encrypt the memo (some work to facilitate this is done in this
commit)
2015-07-29 17:56:37 -04:00
theoreticalbts
1b5a7cb213
Implement max_auth_exceeded exception, internal exc framework, small refactor
...
Refactor tasks:
- Delete obsolete, commented-out implementation of verify_authority
- Make verify_authority_accounts an implementation detail of account_evaluator.cpp
- Create internal_exception macros / header
- Implement max_auth_exceeded and auth_account_not_found exceptions
2015-07-28 17:10:52 -04:00
theoreticalbts
35ab119b26
Fix throwing incorrect exception type
2015-07-28 17:10:52 -04:00
theoreticalbts
36e155bc0c
Implement tx_duplicate_sig exception, fix committee_authority test
2015-07-28 17:10:52 -04:00
theoreticalbts
54103da9a8
Implement tx_irrelevant_sig exception, fix assert_op_test
2015-07-28 17:10:52 -04:00
theoreticalbts
5b9cd9122e
Implement skip_slots
2015-07-28 11:58:22 -04:00
theoreticalbts
66c8cedf52
db_block.cpp: Assert legal slot_num in generate_block() to match header validation assert
2015-07-28 11:58:22 -04:00
theoreticalbts
0d0be55e10
db_witness_schedule.cpp: Implement genesis as special case in get_slot_time()
2015-07-28 11:58:22 -04:00
theoreticalbts
f80219fd52
Implement maintenance_flag in dynamic_global_properties
2015-07-28 11:58:22 -04:00
Nathan Hourt
5d7ae4e6a8
[GUI] More work to support transactions
...
- Refactor GUI with FormBase.qml
- Fix memo handling in TransferOperation
- Add TransactionConfirmationForm.qml which will eventually display a
transaction for confirmation
2015-07-27 16:01:22 -04:00
Eric Frias
6d2b1a3648
Win32 compile fixes (missing includes, workaround for bugs in c++ parser)
2015-07-27 12:09:34 -04:00
Daniel Larimer
e4ff106cd4
Partial Wallet support for Blind Transfers
...
public->blind
blind->blind
TODO: blind->public
2015-07-24 11:37:37 -04:00
Daniel Larimer
c740d2b3c8
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-23 18:47:32 -04:00
Daniel Larimer
57ca0c0e39
Wallet Support for Some Confidential Transactions
...
Support public account to blinded balance
Support receiving blinded balance given confirmation
Implement but not test blind to blind transfers.
2015-07-23 18:46:06 -04:00
theoreticalbts
430bbe42ab
database.hpp: Make open() non-templated, move implementation out of header
2015-07-23 16:41:17 -04:00
Vikram Rajkumar
5d3bd282c8
Try to fix linking error; #202
2015-07-23 15:09:38 -04:00
theoreticalbts
dab74132f2
CMakeLists.txt: Reorder so database is first to build
2015-07-23 13:37:06 -04:00
theoreticalbts
cd6b574141
types.hpp: Move voting stuff to separate header
2015-07-23 13:37:06 -04:00
Vikram Rajkumar
c14ac442f5
Simplify genesis state; #17
2015-07-23 11:53:36 -04:00
Daniel Larimer
c9688ae051
Fix #200 Fee Schedule is now validated when chain_paramters are validated
2015-07-22 18:40:12 -04:00
Nathan Hourt
bfa3e71393
Add return value to transaction::visit
2015-07-22 17:38:48 -04:00
theoreticalbts
44e7a8cb46
transaction.cpp: Make depth parameter uint32_t, silence compiler warning
2015-07-22 17:13:45 -04:00
theoreticalbts
83c8b4c5f9
transaction.cpp: Implement minimize_required_signatures and nonminimal_sig_test
2015-07-22 17:13:45 -04:00
Daniel Larimer
6f19268ffd
Merge branch 'confidential'
2015-07-22 16:24:07 -04:00
theoreticalbts
9b6998af6d
config.hpp: Increase GRAPHENE_MIN_ACCOUNT_NAME_LENGTH to 3
...
Length requirement is enforced by RFC 1035 grammar. Use a compiler
error to tell anyone changing config.hpp that any value for this
constant smaller than 3 is unsupported by the implementation.
2015-07-22 16:01:14 -04:00
theoreticalbts
de435d9d51
whitespace fixes
2015-07-22 16:01:13 -04:00
Daniel Larimer
be65c277c9
Implement and Test Confidential Transactions
...
This checkin contains a fully functional confidential transaction
integration with passing unit tests.
2015-07-22 14:45:13 -04:00
theoreticalbts
3e5d3495e1
Remove some dead code
2015-07-22 13:18:09 -04:00
Nathan Hourt
3196eb75a7
Fixes
2015-07-22 13:17:49 -04:00
Nathan Hourt
9a3a6a5234
Set core asset issuer to null account
...
No one should be able to interfere with the behavior of core asset, so
codify this.
2015-07-22 10:09:07 -04:00
theoreticalbts
d343a71c56
asset_evaluator.cpp: Enforce issuer permissions #176
2015-07-21 16:07:14 -04:00
Daniel Larimer
3e41f726a7
Issue #45 Market Subscription Standardization
...
When subscribing to markets the callback will now receive something that
looks like this:
[ "REMOVED ID1", "REMOVED ID2", ...,
{ "id": "UPDATED ID3", data... },
{ "id": "UPDATED ID4", data... },
...
[ FILL_OPERATION_TYPE_ID, { fill order operation data } ],
[ FILL_OPERATION_TYPE_ID, { fill order operation data } ],
[ FILL_OPERATION_TYPE_ID, { fill order operation data } ],
[ FILL_OPERATION_TYPE_ID, { fill order operation data } ]
]
When ever an order is removed from the order book, its ID will be
included as a string. When an order is modified the new order data is included as
an object. And the operations describing how orders were matched and
what fees are paid will be included as an operation, aka array.
Also added means to unsubscribe from full account data (issue #166 )
2015-07-21 15:51:22 -04:00
Daniel Larimer
dffc83cca9
Refactor full account subscriptions
...
When subscribing to an account via the get_full_account API it will
start streaming any object relevant to the account that is added,
removed, or modified.
2015-07-21 15:19:52 -04:00
Daniel Larimer
b3d299d241
#170 Make sure accounts cannot be updated with impossible auhtority settings
2015-07-21 09:23:14 -04:00
Daniel Larimer
a55b348e6c
#170 Make sure TEMP ACCOUNT cannot be updated
2015-07-21 08:34:38 -04:00
Vikram Rajkumar
d0b8c66aad
Fix Linux Clang build with missing includes; resolve #174
2015-07-20 14:57:08 -04:00
Daniel Larimer
517ea70c95
#169 - Removing Bulk Discounts
2015-07-17 22:07:07 -04:00
theoreticalbts
c67acc0cf5
uia_tests.cpp: Implement transfer_restricted_test
2015-07-17 20:48:49 -04:00
theoreticalbts
d52461b77b
operation_tests.cpp: Implement reserve_asset_test
2015-07-17 15:54:18 -04:00
Daniel Larimer
46fae5cbbf
make max authority check depth configurable by delegates
2015-07-17 09:41:08 -04:00
Daniel Larimer
2492df752d
Merge branch 'auth_refactor'
2015-07-17 01:02:29 -04:00
Daniel Larimer
8c6e0b9e55
Refactor Authority Checking
...
transaction_evaluation_state no longer tracks authority validation.
Authority validation is now compeltely independent of the database.
2015-07-17 00:41:43 -04:00
Daniel Larimer
b08b6cb553
Partial work toward auth refactor
2015-07-16 18:13:11 -04:00
Nathan Hourt
723b11533b
Progress #166 : Initial implementation of get_full_accounts API call
2015-07-16 17:04:35 -04:00
Daniel Larimer
dc8849f23b
Active key is not required when owner key present
...
- when updating account there is no need to sign with the active key if
the owner has signed.
- when updating an account the active key is enough to update the
active key.
2015-07-16 16:09:32 -04:00
theoreticalbts
3cdcf5139f
market_evaluator.cpp: Fix call_order_update_evaluator exception logic
2015-07-16 15:32:58 -04:00
Eric Frias
11a5d2b620
When the p2p code processes a block that contains transactions
...
we haven't seen, avoid fetching those transactions separately
2015-07-16 15:31:52 -04:00
Vikram Rajkumar
46f35d0f89
Fix witness block production failure on block 1; resolve #163
2015-07-16 13:46:17 -04:00
Vikram Rajkumar
d9855f9023
Clean up some TODOs; #77
2015-07-15 18:15:41 -04:00
theoreticalbts
a4496eccb8
Fix #162 by adding an active authority to tests that use account_create_op directly
2015-07-15 17:22:47 -04:00
theoreticalbts
8aa048661f
Remove unused undo_block and undo_transaction skip flags
2015-07-15 17:09:53 -04:00
Eric Frias
8944facd41
Fix signed/unsigned mismatch warning
2015-07-15 14:53:43 -04:00
Daniel Larimer
9671a92c43
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-15 14:18:32 -04:00
Daniel Larimer
7f54d3d077
Issue #160 - Dynamic Undo History / Minority Fork
...
The blockchain now has a minimal participation requirement that can only
be overridden with checkpoints. Any time participation falls below a
minimal level no new blocks may be added.
Currently it requires 66% participation and tolerates short periods of
time below 66% participation with a maximum of 500 consecutive blocks
missed. For every two blocks produced 1 can be missed with a slack of
999 bias.
2015-07-15 14:13:24 -04:00
theoreticalbts
a751d90e00
Move witness pay to VBO, update test #142
2015-07-15 12:36:26 -04:00
Daniel Larimer
e5f8d0f548
removing unecessary field
2015-07-14 18:50:03 -04:00
Daniel Larimer
cfa95a3f57
Issue #157 - make trx expiration absolute
...
This is done to comply with the policy that transactions should be self
describing and not depend upon implied state. This makes things easier
for everyone to understand exactly when a transaction will be invalid
without having to refer to chain state.
2015-07-14 18:46:58 -04:00
Daniel Larimer
da254cdbff
Fix #158 - block summary database now only has 2^16 entries
2015-07-14 17:56:42 -04:00
Daniel Larimer
d1c3c7a698
Issue #157 - TAPOS Refinements
...
1. Implement a TaPoS assert operation predicate that offers full block ID
validation for transactions that want the added security. This is only
required for transactions that are of high value and transfer control of
funds to a newly created identifier and where the witnesses cannot be
trusted.
2. Remove the full block ID from the transaction digest generation.
2015-07-14 17:28:26 -04:00
Daniel Larimer
98e761c9c2
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-13 17:24:29 -04:00
theoreticalbts
c019f18bd4
Implement recent_slots_filled and use it to measure witness participation
2015-07-13 17:02:00 -04:00
theoreticalbts
78f0cfa5cc
account_evaluator.cpp: Remove unused global_property_object
2015-07-13 16:48:16 -04:00
Daniel Larimer
0beeac94aa
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-13 16:23:22 -04:00
Daniel Larimer
8faec763c8
Names must now be unique.
2015-07-13 16:23:12 -04:00
Vikram Rajkumar
2f429e07f1
Rename bad references to delegate -> committee member; #147
2015-07-13 16:08:17 -04:00
Vikram Rajkumar
6043586d15
Rename bad references to delegate -> witness; #147
2015-07-13 16:08:17 -04:00
Vikram Rajkumar
70b77be3bc
Rename bad references to genesis account -> committee account; #147
2015-07-13 16:08:16 -04:00
theoreticalbts
e201e59b3d
Define GRAPHENE_MIN_BLOCK_INTERVAL and use it to fix minimum_time_of_last_offered_block logic #154
2015-07-13 12:33:52 -04:00
Daniel Larimer
a05d88b044
Fix #151 - Witnesses do not produce consecutively
...
- added an option (on by default) to prevent a witness from signing two
blocks in a row because this most likely indicates they have been cut
off from the network.
- added an option where a witness will not produce a block if the
witness participation rate is below a configurable threshold (default
to 33%)
2015-07-13 09:47:03 -04:00
Daniel Larimer
068e579a5f
Update error message for #156
...
Made the error more human friendly.
2015-07-13 08:23:51 -04:00
Daniel Larimer
e8d2b45d67
improve authority checking performance, adding automatic transaction signing helpers
2015-07-10 15:56:44 -04:00
Daniel Larimer
c0da987b02
This file is no longer needed!
2015-07-10 14:08:31 -04:00
Eric Frias
8245b18c98
Win32 compile fixes
2015-07-10 11:55:12 -04:00
Daniel Larimer
49937daeb8
Rename delegate_signature->witness_signature #147
...
- changed secret hash of block headers from 224 to 160 to save 16 bytes
per header which will add up to 1 MB per day in savings.
2015-07-09 18:11:52 -04:00
Daniel Larimer
a799f064d4
Adding extension points #141
2015-07-09 17:29:30 -04:00
Daniel Larimer
04b8820b3b
Merge branch 'master' into fee_refactor
2015-07-09 16:34:56 -04:00
Daniel Larimer
10bd652168
fix uia_transfer test, update transfer error messages
2015-07-09 16:21:40 -04:00
Daniel Larimer
014e6e7b79
fix uia_fees test
2015-07-09 16:05:57 -04:00
Daniel Larimer
9e150df605
Fix withdraw_witness_pay test
2015-07-09 15:55:10 -04:00
Daniel Larimer
48797c6e93
updating error messages
2015-07-09 15:40:19 -04:00
Daniel Larimer
1fbdbc50e0
fix balance claim authority requirements
2015-07-09 15:28:39 -04:00
Daniel Larimer
a164fbe8fa
fix proposal authority
2015-07-09 15:14:44 -04:00
theoreticalbts
a41384d4b1
asset_ops.hpp: Change bitasset_options member name to bitasset_opts to fix gcc compile
2015-07-09 14:52:22 -04:00
theoreticalbts
6899202892
config.hpp: Fix warning
2015-07-09 14:52:22 -04:00
Daniel Larimer
c49fbd87e7
adding checkpoints #121 to database
2015-07-09 14:09:21 -04:00
theoreticalbts
ae7b904e4a
Clean up some unused files
2015-07-09 11:59:06 -04:00
Daniel Larimer
9699be84e6
Progress on #144
2015-07-09 11:40:37 -04:00
Daniel Larimer
c8f200868c
fix zero all fees #144
2015-07-09 10:15:53 -04:00
Daniel Larimer
c8f0ea4abe
It now builds #144
2015-07-09 09:56:50 -04:00
Eric Frias
5dea2825b5
Win32 compile fixes
2015-07-09 09:51:15 -04:00
Daniel Larimer
786c65d4b4
Merge branch 'master' into fee_refactor
2015-07-09 08:43:45 -04:00
Daniel Larimer
fdcf821c41
Progress on #144 - refactoring fee schedule
2015-07-08 18:45:53 -04:00
Vikram Rajkumar
629d884b84
Share some private keys for testnet balances
2015-07-08 18:10:38 -04:00
Vikram Rajkumar
1023ddee92
Fix genesis account memo key init; #17
2015-07-08 18:10:38 -04:00
Nathan Hourt
d64c9154a7
Progress #17 : Lazy load genesis state
...
This speeds up startup for witness_node when starting on a database
which is already initialized.
2015-07-08 17:39:34 -04:00
theoreticalbts
9c4ac2e064
exceptions: Add some exceptions
2015-07-08 16:48:24 -04:00
Nathan Hourt
8d3fd20db2
Progress #17 : Fix account key genesis initialization
2015-07-08 16:45:02 -04:00
Daniel Larimer
baf5531238
Refactored chain library
...
- remove circular dependency with fee_schedule
- unitiy build db_* as database.cpp
- move protocol definitions in separate directory
- combined some objects/evaluators
- combined limit/call evaluator/objects into market_evaluator.*
2015-07-08 16:39:23 -04:00
Nathan Hourt
6436f0142f
Fix witness/delegate count voting; fix unclean witness shutdown on mac
2015-07-08 16:00:22 -04:00
theoreticalbts
2f9e636618
db_maint.cpp: Avoid implementation-defined ordering when votable objects tie for votes
2015-07-08 15:01:25 -04:00
Nathan Hourt
5a01e255e2
Progress #17 : Fix genesis witness list
2015-07-08 14:55:51 -04:00
theoreticalbts
d4e4854eb6
exceptions: Implement missing_auth exceptions
2015-07-08 14:29:07 -04:00
theoreticalbts
8ff25b813f
Begin implementation of new exception framework #113
2015-07-08 13:53:08 -04:00
theoreticalbts
7bb608a305
types.hpp: Remove parameter_extension as it breaks js_operation_serializer
2015-07-07 22:28:43 -04:00
Daniel Larimer
90e04d0290
Refactoring fee schedule to make things more flex
...
- this code does not compile, there are now circular references that
need to be resolved.
2015-07-07 18:46:27 -04:00
Nathan Hourt
3d60449c6e
Progress #8 : Test shorts and force settles
2015-07-07 17:39:45 -04:00
Vikram Rajkumar
9b5bd12c67
Add genesis_state_type::initial_timestamp; #17
2015-07-07 15:37:31 -04:00
Vikram Rajkumar
38956692ee
Fix a couple misleading names
2015-07-07 15:06:06 -04:00
Vikram Rajkumar
2241fda3af
Add genesis_state_type::initial_worker_type; #17
2015-07-07 14:02:18 -04:00
Nathan Hourt
e6e7f70ff9
Resolve #98 : Finish testing of genesis balances
2015-07-07 13:59:07 -04:00
Vikram Rajkumar
68744c9de0
Initialize genesis witnesses with default secret commitment; #17 , #23
2015-07-07 12:36:31 -04:00
Daniel Larimer
e873d3e650
Update balance evaluator / authority checks
...
- move balance_claim_evalautor implementation from header
- remove authority check from balance_claim evaluator, added to
other_auths defined by the operation
2015-07-07 11:39:16 -04:00
Daniel Larimer
b1dd41ff3a
Refactor get_required_auths on operations
2015-07-07 10:57:01 -04:00
Daniel Larimer
86df9c04fd
Progress #141 - defining extension parameters
2015-07-07 09:02:36 -04:00
Daniel Larimer
1eb273118b
Fix #136 add serialization to blockchain params
2015-07-07 08:31:47 -04:00
Nathan Hourt
24496932d4
Progress #98 : add some vesting genesis balance testing
2015-07-06 17:40:23 -04:00
Nathan Hourt
ab740d6aaa
Make memo_test fail if serialization format changes
...
If this happens, the web guys need to be notified of the new format.
2015-07-06 17:40:23 -04:00
Daniel Larimer
7d6d7066c2
merge
2015-07-06 16:55:28 -04:00
Daniel Larimer
c537e41fcb
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-06 16:50:36 -04:00
theoreticalbts
f175b4561c
Properly re-initialize witness scheduler state after a long block gap
2015-07-06 15:51:43 -04:00
Vikram Rajkumar
81df85aed7
Fix BTS genesis import error; #17
2015-07-06 15:00:56 -04:00
Vikram Rajkumar
df03598be9
Do not capture genesis_state on exception
2015-07-06 15:00:52 -04:00
Vikram Rajkumar
fc7fb86cd2
Temporarily allow import BTS address/pubkey prefixes; #17
2015-07-06 15:00:52 -04:00
Daniel Larimer
8ccafe0f03
Refactor fee schedule for extensibility
2015-07-06 14:56:35 -04:00
Vikram Rajkumar
b89ff4e6b1
Some {asset, price} operator cleanup; fix #134
2015-07-06 14:18:47 -04:00
Nathan Hourt
c00e20268d
Tweaks circa genesis, should not affect behavior
2015-07-06 14:00:39 -04:00
Nathan Hourt
6ab59f63a7
Resolve #133 : allow creation of example genesis json
2015-07-06 14:00:39 -04:00
theoreticalbts
7c30e44dc9
Fix is_valid_name() bugs, make it RFC 1035 compliant, update unit test, fix #15
2015-07-06 13:01:24 -04:00
Eric Frias
423eccf4a4
Win32 compile fixes, no functional changes
2015-07-05 17:58:24 -04:00
Daniel Larimer
c0c6022338
Fix #130 Black Swans Settle at Price Feed
2015-07-03 17:07:24 -04:00
Nathan Hourt
9cb9d2e07f
Progress #98 : restrict withdrawal rate of vesting genesis balances
2015-07-02 15:40:04 -04:00
theoreticalbts
256b95ac5e
use FC for endian reversal to avoid Boost 1.58
2015-07-02 15:33:15 -04:00
Vikram Rajkumar
4a84892981
Fix build errors
2015-07-02 13:04:28 -04:00
Vikram Rajkumar
4d176e73b2
Some linear vesting cleanup
2015-07-02 12:30:11 -04:00
Daniel Larimer
5a41114d94
#125 Replace ntohl with boost::endian::endian_reverse
2015-07-02 12:28:15 -04:00
Daniel Larimer
68fabe1464
Progress #127 - importing balances
2015-07-02 11:18:52 -04:00
Daniel Larimer
3d220e0df6
removing platform specific header, see #125
2015-07-02 10:55:31 -04:00
Eric Frias
a480912110
Add missing include for htonl on linux, #125
2015-07-02 10:49:13 -04:00
Daniel Larimer
d66ee4c8cc
remove htonl from memo checksum when it appears to provide no obvious benefit
2015-07-02 10:04:07 -04:00
Daniel Larimer
fefa0f65f8
Issue #106 - Removing KeyObject
...
- this is a major refactor of the code and may have broken some behavior
in the wallet or witness nodes.
- this commit changes the serialization of operations
- the chain_tests pass
2015-07-02 01:52:45 -04:00
Daniel Larimer
07f621cd65
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-01 18:17:55 -04:00
Daniel Larimer
8efa2e6738
Progress auditing TODOs #108 , upgrade boost 1.58
2015-07-01 18:17:49 -04:00
Nathan Hourt
e9b015b768
Add missing header. Derp
2015-07-01 17:25:06 -04:00
Nathan Hourt
66c9606652
Progress #17 : Add assets, initial witness count to genesis state
2015-07-01 17:18:53 -04:00
Daniel Larimer
bb71e1933b
Implement #103 - Override Transfers by Issuer
2015-07-01 16:21:18 -04:00
Daniel Larimer
2257e5da6c
#108 Rename Burn to Reserve
2015-07-01 14:43:17 -04:00
Daniel Larimer
683fb6fe32
Merge branch 'master' of github.com:cryptonomex/graphene
2015-07-01 14:05:48 -04:00
Daniel Larimer
4bbaad02a7
Progress on Burn, Reserve, Issue, Retire #108
2015-07-01 14:05:42 -04:00
Nathan Hourt
f29eaa92e2
Fix all outstanding unexpected test failures
2015-07-01 13:53:07 -04:00
Nathan Hourt
5f5d819a1f
Progress #98 : Add public key to balance_claim_operation
2015-07-01 12:10:21 -04:00
Nathan Hourt
1c8e31c34a
Fix 2 of the failing tests
2015-07-01 12:10:20 -04:00
Eric Frias
609f5a746e
Quiet harmless compiler warnings
2015-07-01 11:16:25 -04:00
Eric Frias
d04e452266
Prevent writing past the end of an array when tallying witness/delegate votes
2015-07-01 09:56:37 -04:00
Eric Frias
fd94046eb6
Fix integer overflow errors, work around msvc parser bugs.
2015-06-30 18:50:58 -04:00
Daniel Larimer
ce3fbbf93e
Add checks to verify fill_orders #105
2015-06-30 18:48:40 -04:00
Daniel Larimer
18a99584a2
Start #116 Index Version Checking
...
- adding changes for #115 that didn't make the last commit
2015-06-30 18:40:46 -04:00
Daniel Larimer
187ceb28b6
Merge branch 'master' of github.com:cryptonomex/graphene
2015-06-30 18:22:25 -04:00
Daniel Larimer
70964b55e5
Fix #115 Claiming BTC and PTS balances
2015-06-30 18:20:12 -04:00
Eric Frias
9856d5e8fd
Fix CLI commands for creating witnesses, add commands for listing
...
witnesses, registering witness url.
Derive memo, witness, etc. keys from the active key.
Make witness_create_operation accept relative key identifiers.
Prevent wif_to_key from throwing on invalid base58 input.
Make witness_node accept witness keys in WIF format.
2015-06-30 17:54:19 -04:00
Eric Frias
6aa9264477
Make asset precision uint8 everywhere (it was defined as a uint64 and
...
referenced as a signed short in some places, I think these were
artifacts from when precision was stored as 10^x instead of x.
2015-06-30 17:54:19 -04:00
Nathan Hourt
210c109acf
Progress #17 : Create vesting balances in genesis
2015-06-30 17:47:40 -04:00
Daniel Larimer
ede41d6f99
fix warning, add debug for svk
2015-06-30 17:34:46 -04:00
theoreticalbts
5f5e761ca8
db_block.cpp: Fix tapos rollover logic
2015-06-30 17:07:21 -04:00
Nathan Hourt
c530867933
Progress #17
...
- Add initial support for vesting genesis balances
- Add owner/active keys to genesis accounts
- Cleanup circa balance_object and evaluator
2015-06-30 17:05:17 -04:00
Daniel Larimer
a05a13b20e
Merge branch 'master' of github.com:cryptonomex/graphene
2015-06-30 15:13:23 -04:00
Daniel Larimer
e161e5a9fc
Issues #112 Verifying all signatures are used
...
- refactor how signatures are stored on the transaction, removing key_id
and extra_signatures maps and replacing with a vector
- verify that each key only signs one time
- update tests to handle stricter policies on signatures
2015-06-30 15:11:26 -04:00
Nathan Hourt
e3f5e2cf8d
Resolve #104 : Set minimum feeds on bitassets
2015-06-30 11:59:53 -04:00
Vikram Rajkumar
0858018977
Fix crash running tests
2015-06-30 11:01:32 -04:00
Peter Conrad
9beff42daa
Unused code
2015-06-30 12:02:47 +02:00
Nathan Hourt
391b0bec45
Progress #17 : Remove GRAPHENE_INITIAL_SUPPLY
...
The INITIAL_SUPPLY macro is generally not useful, and there's no good
way to fulfill the promise it creates. By removing it, I can skip the
scaling on the genesis values. Now, if there is an allocation at
genesis, the supply is determined by that allocation. Otherwise, the
supply is GRAPHENE_MAX_SHARE_SUPPLY and it all belongs to
GRAPHENE_COMMITTEE_ACCOUNT.
Also, remove one of the redundant and confusing MAX_SUPPLY macros and
unify the usage to always be GRAPHENE_MAX_SHARE_SUPPLY.
2015-06-29 17:50:56 -04:00
Daniel Larimer
873cf4dcf8
Merge branch 'master' of github.com:cryptonomex/graphene
2015-06-29 17:29:11 -04:00
Daniel Larimer
681f0923fe
add secondary index to get proposals relevant to a particular account
2015-06-29 17:29:04 -04:00
Nathan Hourt
8747a0572b
Progress #17 : add balance_objects to genesis, test
2015-06-29 17:18:29 -04:00
theoreticalbts
e43a538bdc
types.hpp: Update fee schedule to use all uint64_t #99
2015-06-29 15:41:19 -04:00
theoreticalbts
51bb9025d0
db_maint.cpp: Avoid stdlib implementation-defined ordering when workers tie for votes
2015-06-29 15:36:02 -04:00
Vikram Rajkumar
f0ea015ccf
Clean up is_valid_name and remove child accounts; #15 , #93
2015-06-29 15:25:53 -04:00
Vikram Rajkumar
605824952c
Clean up is_valid_symbol
2015-06-29 15:25:53 -04:00
theoreticalbts
662cda2abc
db_init.cpp: Zero network_fee_percentage on null account
2015-06-29 11:33:29 -04:00
Vikram Rajkumar
7dd3d92a6c
Merge pull request #102 from pmconrad/rfc_1035
...
See #15
2015-06-29 11:13:36 -04:00
Nathan Hourt
f4342d98ae
Resolve #67 : Add name and/or URL to witness/worker/delegate objects
2015-06-29 10:02:45 -04:00
Peter Conrad
1acf66265f
Allow double hyphens
2015-06-29 11:56:30 +02:00
Daniel Larimer
6279515c54
#98 - Adding wallet support for claiming balances
2015-06-28 16:16:24 -04:00
Daniel Larimer
73d55c2d94
#98 Add signature verification
2015-06-28 15:34:52 -04:00
Daniel Larimer
4695405c52
adding missing files
2015-06-28 15:12:00 -04:00
Daniel Larimer
d3391c0fe5
#98 Implement Balance Object and Evaluator
2015-06-27 11:49:41 -04:00
Nathan Hourt
baea85ea3a
Resolve #97 : Add exponentially growing fees on account creation
...
It scales up aggressively right now; this can be adjusted later. I just
wanted to demonstrate that it works.
2015-06-26 16:43:39 -04:00
Nathan Hourt
dba009da4d
Resolve #83 : core_exchange_rate in feed updates on maintenance
2015-06-26 15:46:16 -04:00
Nathan Hourt
dad1ca3bee
Refactor: Move limit order execution to database
...
This logic was previously located in limit_order_create_evaluator, but
other code may need it in the future, so it should be made available at
the database level.
2015-06-26 15:11:46 -04:00
Nathan Hourt
5b55ab71ea
Resolve #94
...
Core exchange rate is now redundantly stored in price feed for
bitassets, and updated when the median feed changes. This allows feed
producers to update the core exchange rate. Redundant storage is
necessary, because the core exchange rate is needed for user-issued
assets as well as market issued assets.
2015-06-26 10:53:12 -04:00
Eric Frias
714161c56c
Fix integer overflow warnings (errors?)
2015-06-25 15:07:51 -04:00
Daniel Larimer
bf9f81a21d
Fix #90 - Prediction Market Asset precision must match backing asset precision
2015-06-25 14:46:53 -04:00
Daniel Larimer
543959fa64
Fix #92
2015-06-25 14:33:46 -04:00
Daniel Larimer
fdf8d98953
Merge branch 'master' of https://github.com/cryptonomex/graphene
2015-06-25 14:14:33 -04:00
Daniel Larimer
c566687974
fix tests properly
2015-06-25 14:14:30 -04:00
Nathan Hourt
9e5297d6de
Disable fees during genesis initialization
...
This should be a more reliable fix to #81
2015-06-25 12:58:50 -04:00
Daniel Larimer
342abe6ca1
Fix tests
2015-06-25 12:07:39 -04:00
Daniel Larimer
ff427c709f
Merge branch 'master' of https://github.com/cryptonomex/graphene
2015-06-25 11:57:55 -04:00
Daniel Larimer
4e206d3c54
#66 tweak default fees
2015-06-25 11:57:50 -04:00
Eric Frias
49acfb3bd6
Fix up application_impl's has_item() which was throwing to indicate a
...
missing item instead of returning false. #55
2015-06-25 10:36:28 -04:00
Daniel Larimer
bf0ab60ceb
Fix #88 If pushing generated block fails, then re-push all transactions to remove the failing transaction
2015-06-25 10:03:18 -04:00
Daniel Larimer
c4b2bb443b
#85 - changing key_object from simple_index to multi_index
2015-06-24 16:08:36 -04:00
theoreticalbts
08651fc045
db_debug.cpp: Fix witness index type in debug_dump()
2015-06-23 18:05:47 -04:00
theoreticalbts
f99b02ba58
config.hpp: Implement GRAPHENE_COLLATERAL_RATIO_DENOM #70
2015-06-23 18:05:47 -04:00
Vikram Rajkumar
b63de0ad29
Fix some compiler warnings
2015-06-23 17:54:59 -04:00
Vikram Rajkumar
1e62c749af
Minor evaluator cleanup
2015-06-23 17:54:59 -04:00
Nathan Hourt
cfcafcb5c2
Progress #66 : Set initial fees
...
There is now a default value for all fees
2015-06-23 17:09:55 -04:00
theoreticalbts
0d02361af0
Clean up names of assert ops and evaluation dispatch
2015-06-23 15:15:34 -04:00
theoreticalbts
c43c71372d
assert_evaluator.cpp: Remove skip_unknown_predicate flag, add max_predicate_opcode check
2015-06-23 15:15:34 -04:00
theoreticalbts
548c760e46
wip burn worker
2015-06-23 15:13:01 -04:00
Nathan Hourt
08cba191c7
Progress #66 : Audit calculate_fee implementations
...
I've audited all the calculate_fee impls and they all should be
reasonable at this point.
TODO: Set default fee values.
2015-06-23 14:19:39 -04:00
Daniel Larimer
a0d2b18959
Issue #70 - update docs
2015-06-23 14:05:07 -04:00
Daniel Larimer
8e9b2e8ebb
Issue #68 - created simple secondary index for accounts
2015-06-23 13:33:13 -04:00
Daniel Larimer
b5b9d6d053
Issue #67 - add url to delegate/witness create operation
2015-06-23 11:08:12 -04:00
Daniel Larimer
da4bf0adc2
Issue #67 - add name/url to worker create operation
2015-06-23 10:33:11 -04:00
Daniel Larimer
06a9488f8b
Issue #53 - flexible vesting balance creation
...
Use static variant to allow the types of vesting balances to be easily
extended and the creation operation allows for many different types of
initialization parameters.
Added a check that requires a minimum claim date which allows creating
of vesting balance objects with a cliff.
2015-06-23 10:14:40 -04:00
Daniel Larimer
8ac4bc1d58
Fix #39 Refactor assert_operation
...
Reasons:
1. The protocol should not depend upon implementation details such as
how the database objects are structured or reflected
2. The protocol should deal in abstract concepts
3. Should use fc::datastream rather than istringstream for performance
and memory allocation reasons
4. Fees should be charged proportional to the size of the operation
5. Validate on the assert operation should also perform sanity checks
on types
6. Protocol definition objects should never depend upon the database
because they may be used in situations where the database and
evaluators are not present.
7. Reflected field names should never have '_' in them because they
become part of the *PUBLIC* json definition.
2015-06-23 09:14:18 -04:00
Daniel Larimer
d7f7d64352
notify observes of changed objects after every pushed transaction
2015-06-22 18:11:54 -04:00
Daniel Larimer
de99437be4
remove min_market_fee due to potential attack vector with many small partial matches
2015-06-22 17:29:40 -04:00
Daniel Larimer
a1601cbc0f
fix bugs
2015-06-22 15:55:50 -04:00
Daniel Larimer
21bd520f9c
Merge branch 'master' of github.com:cryptonomex/graphene
2015-06-22 15:08:24 -04:00
Daniel Larimer
758d588aa1
switch to rationals
2015-06-22 15:04:19 -04:00
Nathan Hourt
3eaec849eb
Progress #61 : Getting witnesses/delegates by owner
...
Support and API are now present for retrieving witnesses and delegates
by their owners.
2015-06-22 15:03:24 -04:00
Eric Frias
db85d35b19
Fix out-of-source builds, make field_reflector report errors finding template file
2015-06-22 14:57:43 -04:00
Eric Frias
52a72cdd9f
Fix win64 compile errors (ambiguous comparisons between unsigned_int and uint16)
2015-06-22 14:56:40 -04:00
theoreticalbts
da77990b72
Implement field_reflector and assert_op
2015-06-22 13:26:08 -04:00
theoreticalbts
e9acc40a7d
operation_history_object.hpp: Include operations.hpp
2015-06-22 13:26:08 -04:00
theoreticalbts
9e46ed80a0
Reflect many more types
2015-06-22 13:26:08 -04:00
theoreticalbts
e934b9cf44
key_object.hpp: Move address_or_key variant to header, reflect it
2015-06-22 13:26:08 -04:00
theoreticalbts
e814c4dbeb
type_id.cpp: Define space_id and type_id for all object types
2015-06-22 13:26:07 -04:00
Daniel Larimer
49b2ce8094
Merge branch 'callprice'
...
Conflicts:
tests/common/database_fixture.hpp
2015-06-21 19:41:32 -04:00
Daniel Larimer
177950b791
Fix margin call price calculation
2015-06-21 19:37:14 -04:00
Daniel Larimer
08bf4ec3fe
progress
2015-06-19 18:49:32 -04:00
Nathan Hourt
127ca9f8de
WIP: Remove call price from call_order_update_operation
2015-06-19 18:14:23 -04:00
Daniel Larimer
f88a7682dd
cheap names must have a number, dot, dash or slash
2015-06-19 16:21:47 -04:00
Daniel Larimer
5d5604f673
Merge branch 'master' of github.com:cryptonomex/graphene
2015-06-19 16:13:36 -04:00
Daniel Larimer
7dd2a6dff5
adding description field to asset options
2015-06-19 16:13:32 -04:00
Nathan Hourt
639930a2d7
Test bulk discount on fees
2015-06-19 16:12:05 -04:00
Daniel Larimer
3d29b29e50
remove debug logs
2015-06-19 15:58:50 -04:00
Daniel Larimer
14b158364f
implement and test prediction market features
2015-06-19 15:57:08 -04:00
Daniel Larimer
186b970689
Merge branch 'master' of github.com:cryptonomex/graphene
2015-06-19 14:47:46 -04:00
Daniel Larimer
c80c839675
black swan test with force settle after
2015-06-19 14:47:42 -04:00
theoreticalbts
5e28a79e6f
db_maint.cpp: Roll over leftover witness pay, see 8f739ac767 for description
2015-06-19 13:50:10 -04:00
Nathan Hourt
6bc2d06833
Cashback to blockchain accounts is put in reserve pool
2015-06-19 13:31:47 -04:00
Nathan Hourt
626b5cbb23
Fix broken update_mia test
2015-06-19 12:29:44 -04:00
Daniel Larimer
51e6421ea0
fixed config settings
2015-06-19 12:11:32 -04:00
Daniel Larimer
be5a8c6365
update black swan implementation
2015-06-19 09:57:23 -04:00
Daniel Larimer
d5fb32a839
fix margin calls
2015-06-19 09:07:23 -04:00
Daniel Larimer
2c055d2320
resolve conflicts
2015-06-18 18:45:01 -04:00
Daniel Larimer
db43f41de8
Progress on margin call tests
2015-06-18 18:42:44 -04:00
Nathan Hourt
bba5681722
Resolve #31 , at last
...
I'm now satisfied with the testing.
2015-06-18 17:22:29 -04:00
Nathan Hourt
66ab805458
Close #56
2015-06-18 16:11:29 -04:00
Nathan Hourt
ec76179b0b
Resolve #40
2015-06-18 15:51:23 -04:00
Daniel Larimer
a14500a364
merge from master, clean up test output
2015-06-18 15:40:38 -04:00
Daniel Larimer
0a5954db70
merge master
2015-06-18 15:31:30 -04:00
Nathan Hourt
568a18571b
Merge branch 'issue52'
2015-06-18 15:26:00 -04:00
Daniel Larimer
ef4ed937cb
Fix update_call_order
...
- redefine price feeds
- clean up unit test spam
2015-06-18 15:17:48 -04:00
Nathan Hourt
8bcd1f3bf5
Resolve #52 : I think it's real this time.
2015-06-18 15:08:51 -04:00
Nathan Hourt
d47c2ee2a2
Progress #52 : The tests pass again.
2015-06-18 15:08:51 -04:00
Nathan Hourt
9291250214
Issue #52 : working my way out of the rabbit hole
...
Evils abound. And tests still fail.
2015-06-18 15:08:51 -04:00
Eric Frias
52a1db3700
Fix block_database::fetch_optional() and friends, which were throwing in
...
some cases where the requested block was not available instead of
returing an invalid optional.
2015-06-18 14:47:53 -04:00
theoreticalbts
c65fb6b366
Use with_skip_flags() to handle virtual ops in clear_expired_orders
2015-06-18 12:33:44 -04:00
theoreticalbts
2ec92c6695
database: Make functions which don't take skip_flags arg, use them to implement old API which does
2015-06-18 12:33:44 -04:00
theoreticalbts
e6246bf9a0
Implement node_property_object
2015-06-18 12:33:44 -04:00
theoreticalbts
427d1a8977
evaluator.cpp: Remove obsolete verify_signature function
2015-06-18 12:33:44 -04:00
Vikram Rajkumar
34388fabee
Further cleanup after LevelDB removal
2015-06-17 12:36:05 -04:00
Nathan Hourt
8f739ac767
Dramatically accelerate chain_test, fix core asset burn bug
...
When generating blocks until a timestamp, we now generate one block
immediately, then skip blocks until the timestamp, and generate a
final block then.
Also, this exposed a bug in the witness budget handling which
caused the undesired burning of core asset. This bug is now fixed.
2015-06-17 12:14:28 -04:00
Nathan Hourt
c9328cc7f4
Resolve #52
2015-06-17 11:48:55 -04:00
Daniel Larimer
4aa1d6b339
Merge branch 'remove_leveldb'
2015-06-16 18:46:25 -04:00
Daniel Larimer
3bc325436f
Merge branch 'master' of https://github.com/cryptonomex/graphene
2015-06-16 18:46:16 -04:00
Daniel Larimer
2724939ffb
tests pass again
2015-06-16 18:45:33 -04:00
Daniel Larimer
ca89d5057c
remove dependency on level db, bugs left to fix
2015-06-16 15:56:13 -04:00
Nathan Hourt
377432453f
Lay to rest #16
...
It's finally done.
2015-06-16 14:42:05 -04:00
Daniel Larimer
663036f2aa
it builds
2015-06-16 10:14:10 -04:00
Daniel Larimer
4ca3bb9f06
rename short to call
2015-06-16 09:53:40 -04:00
Daniel Larimer
9dbf78c891
start refactoring short
2015-06-16 09:52:33 -04:00
Nathan Hourt
ce4846e81b
Progress #31 : Add some testing
2015-06-15 17:31:44 -04:00
Nathan Hourt
81c6338dfe
Begin test for cashback rewards
2015-06-15 17:31:43 -04:00
Vikram Rajkumar
6337f94555
Remove bond operations
2015-06-15 15:37:38 -04:00
Vikram Rajkumar
17693e6299
Remove file write operation
2015-06-15 15:36:47 -04:00
Vikram Rajkumar
f777aae08e
Remove confidential transfer operations
2015-06-15 15:36:47 -04:00
Daniel Larimer
9b920c798a
convert more operations to void_result
2015-06-15 15:24:58 -04:00
Eric Frias
4490c3fa48
Win32 compile fixes
2015-06-15 14:46:19 -04:00
Eric Frias
7027e8aab3
Remove (direct) call to compiler intrinsic that had different behavior from portable code path
...
#46
2015-06-14 18:53:25 -04:00
Vikram Rajkumar
488b385e72
Fix build
2015-06-13 16:11:32 -04:00
Vikram Rajkumar
bc76bd05fc
Add missing overrides
2015-06-13 16:09:51 -04:00
Vikram Rajkumar
cff606c9e2
Rebase onto master
2015-06-12 19:47:34 -04:00
James Calfee
40a28e6e50
Enhanced asset and price_feed validation error messages.
2015-06-12 11:11:28 -04:00
theoreticalbts
a34cde2178
db_init.cpp: Fix compiler warning
2015-06-11 17:55:15 -04:00
theoreticalbts
6e239eb2ad
db_witness_schedule.cpp: Fix off-by-one translating between DB-level slot_num and scheduler-level slot_num
2015-06-11 17:55:15 -04:00
Nathan Hourt
a185f864fc
Progress #31 : Implement threshold for vesting fees
2015-06-11 13:54:46 -04:00
Nathan Hourt
4080a2e7ee
Add missing fee for 2-character account names
2015-06-10 15:21:54 -04:00
Nathan Hourt
876e9a125d
Resolve #31 : Wrap it up and fix the failing tests
2015-06-10 14:22:32 -04:00
Nathan Hourt
4df4e8014a
Issue #31 : Add account_upgrade_evaluator
2015-06-10 14:22:32 -04:00
Nathan Hourt
7f0d1ebbed
Progress #31 , resolve #21
...
Declare, but not yet implement, account_upgrade_operation which can
upgrade accounts to members.
Resolve #21 by removing all the sketchy pointer arithmetic stuff
2015-06-10 14:17:17 -04:00
Nathan Hourt
18b163b99e
Progress #31 : Fix genesis initialization
2015-06-10 14:17:17 -04:00
Nathan Hourt
ed7d485df3
Progress #31 : Initial work on new cashback system
...
Lots still to do. There's no longer a way to upgrade an account, genesis
can't evaluate, and who knows how many tests are failing... But it
builds!
2015-06-10 14:17:17 -04:00
Daniel Larimer
ff6b72361d
optimize operation results for void ops
2015-06-09 16:53:14 -04:00
Daniel Larimer
df14ef5fef
optimize operation results for void ops
2015-06-09 16:49:42 -04:00
Daniel Larimer
00078afa07
Fix #15 - accept aaa-bbb-1 as valid according to RFC 1035
2015-06-09 16:40:20 -04:00
Vikram Rajkumar
5633d92813
Apply remaining win32 patches by @emfrias
2015-06-09 14:11:57 -04:00
Nathan Hourt
0a945b0257
Initial commit
2015-06-08 12:36:37 -04:00