Commit Graph

864 Commits

Author SHA1 Message Date
Bastian Köcher 6d149c570d Implement function json_metadata in decl_module! (#654)
The new function `json_metadata` returns the module declaration
as a json string.

Progress on: #535
2018-09-04 11:57:26 +02:00
Pierre Krieger 26ebf3a0a0 Fix warnings in networking (#652) 2018-09-04 10:26:54 +02:00
Pierre Krieger 360ffa2dbb Add a reputation system (#645)
* Add a reputation system

* Fix tests

* Don't try to dial peers to which we are already connected

* Use the master branch of libp2p
2018-09-04 08:52:20 +02:00
Arkadiy Paronyan 146ebceab4 Check for pruned block state (#648) 2018-09-03 16:29:55 +02:00
Sergey Pepyakin 73ad673404 Contract runtime polishing (#601)
* Rename ext_transfer → ext_call

There are several tests where gas was changed. This is due to shrinking
the name and consequently a size of contracts.

* Fix macros

Specifically, make fixes that allows to use a function without arguments (apart from ctx).
For example:

```rust
ext_return_42(ctx) -> u32 => {
    Ok(42)
}
```

Also, add impl ConvertibleToWasm for u64.

* Implement passing input data buffer from top-level

This allows the transaction initiator to pass some input data that can be accessed from the executed contract.

However, this only works for the top-level contract. The contract still cannot pass input data to the callee contract. The reason for that is that API doesn't support this presently.
This will be addressed in the following commits.

* Input data passing thru `ext_call`

`ext_call` now takes a buffer (or more specifically, pointer  to the start of and size of a buffer).

This allows contracts to pass input data while calling into other contracts.

* Input data passing thru `ext_create`

Same as previous commit but for `ext_create`.

* Trap on decoding error instead of panicking

* Don't cascade failure in ext_call

Instead, if callee doesn't complete successfuly, return a non-zero status code.

This will prevent cascading traps up to the top-level. Due to this some tests were altered so that they now expect successful transfer instead of a failure.

* Don't cascade failure in ext_create

Same as previous commit but for ext_create.

* Specify how much gas to allot for a call

* Specify how much gas to allot for a create

* Update tests.rs
2018-09-01 12:02:10 +02:00
Guanqun Lu beee3d4092 WIP on chain heap (#639)
* move heap size on chain

* fix the interface change

* decode heap size

* fix code comments

* fix comment

* update Cargo.lock

* rename to heappages

* add one heap pages variable in runtime
2018-09-01 08:41:46 +02:00
Gav Wood 98a2121a3c Events to track extrinsic success (#640)
* Initial draft

* Fixes

* Extrinsic success events
2018-08-31 18:44:37 +02:00
Sergey Pepyakin 2601392d6a Install llvm-tools-preview component (#643) 2018-08-31 18:04:05 +02:00
woodsmur b7ef395cc1 fix wasm executor compile error (#631) 2018-08-31 17:28:47 +02:00
Guanqun Lu 27b5e70baa random fixes (#638) 2018-08-31 14:33:05 +02:00
Gav Wood cd68c9b001 Empty becomes (), reflecting convention (#637) 2018-08-31 14:32:51 +02:00
Benjamin Kampmann e1d64b1fc7 Allow to build_upon skipped entries, but don't walk back (#635)
* Allow to build_upon skipped entries, but don't walk back

* Use existing calculated version
2018-08-31 12:51:40 +02:00
Gav Wood 8281618e50 Separate out staking module into balances and payment (#629)
* Initial commit.

* Split out balances module

* Minimise Balances trait requirements

* Fix up balances, remove balances stuff from staking

* Split off and fix up staking module

* Fix executive tests

* Fix up democracy module

* make council work again

* Remove unneeded cruft from democracy

* Fix up contract module

* Fix up rest of tests

* Fix minor TODOs

* Fix tests

* Remove superfluous code

* Move offline inherents to consensus module.

Fixes #630

* Version needs Decode.

* Move Decode back

* Fix nits

* Refactor to allow custom message
2018-08-30 18:43:38 +02:00
Denis S. Soldatov aka General-Beck 6ae3204f17 Update .gitlab-ci.yml (#633)
it is necessary to test.
You will probably have to create a cron-job for the nightly assembly of the master branch
2018-08-30 15:21:42 +02:00
ddorgan bcdb2d7ba0 Do not attempt to rustup if in CI. This is taken care of by the base (#621)
image.
2018-08-29 15:24:24 +02:00
Gav Wood 28b48842a8 Avoid need for ident strings in storage (#624)
* Remove need for ident strings for storage items

* Fixes

* Fix tests

* Minor change to macro grammer
2018-08-29 12:29:16 +02:00
Guanqun Lu 6c943bada2 rename to panic_handler as panic_implementation is deprecated in nightly (#626) 2018-08-29 11:27:14 +02:00
Sergey Pepyakin 283eb383c0 5 random fixes (#2) (#623)
* Tabs instead of spaces.

* Remove double spaces.

* Add spaces between ID and the following {

* Update to nightly 2018-08-27

* Align wat code properly
2018-08-29 11:26:44 +02:00
Guanqun Lu 5c8b52ba16 fix one typo in README (#627) 2018-08-29 11:25:20 +02:00
Guanghua Guo 758c7bb0be Misspelled words (#625)
* Misspelled words

* Update native_executor.rs
2018-08-29 11:24:35 +02:00
Sergey Pepyakin 20655af97b Contracts: Per block gas limit (#506)
* Add block gas limit check

* Fix formatting

* Add block_gas_limit test.

* Use ExtBuilder in tests

* Docs and clean-up.

* Correct style
2018-08-28 16:58:27 +01:00
Tomasz Drwięga 3e63009ac7 Make sure to ban invalid transactions. (#615) (#620) 2018-08-28 16:47:02 +01:00
Robert Habermeier a0069f5fe2 Forward-port BFT fixes from v0.2 and restructure agreement cancelling (#619)
* more accurate consensus superseding logic

* mild revision to `can_build_on` logic

* fix a deadlock when spawning agreement as non-authority

* dropping BFT future before poll doesn't lead to service deadlock

* push cancel to BFTfuture rather than waiting for task
2018-08-28 12:28:28 +01:00
Pierre Krieger eb10c392ce Allow specifying listening multiaddresses (#577) 2018-08-28 12:16:51 +01:00
Gav Wood 278a054b81 Introduce Runtime Events (#607)
* Squashed commit.

New slashing mechanism (#554)  …
* Slashing improvements

- unstake when balance too low
- unstake after N slashes according to val prefs
- don't early-terminate session/era unless unstaked
- offline grace period before punishment
* Fix warning
* Cleanups and ensure slash_count decays
* Bump authoring version and introduce needed authoring stub
* Rename
* Fix offline tracker
* Fix offline tracker
* Renames
* Add test
* Tests
* Tests.
Remove accidental merge files.
Merge remote-tracking branch 'origin/master' into gav-new-pos
Version bump, fixes (#572)  …
* Bump version, don't propose invalid blocks
* Fix build.
* Fixes.
* More fixes.
* Fix tests.
* Fix more tests
* More tests fixed
Fix merge
Fix accidental merge bug
Fixes.
Staking failsafes  …
- Don't slash/unstake/change session when too few staking participants
- Introduce set_balance PrivCall
Make minimum validator count dynamic.
test fixes
Fix tests.
Fix tests
Fix tests, update readme.
Merge remote-tracking branch 'origin/master' into gav-new-pos
Test with release.
Use safe math when dealing with total stake
Fix test again.
Introduce events into runtime.
Fix tests
Add events for account new/reap
Integration-style tests for events.

* Remove old code
2018-08-28 12:11:40 +01:00
Guanghua Guo f5c684dca6 update substrate/extrinsic-pool (#616) 2018-08-28 10:54:22 +01:00
Guanqun Lu 3a58595a85 add a new unit test for extrinsic pool (#611) 2018-08-28 10:53:59 +01:00
Guanqun Lu 98f3f80e70 set the current repo in Cargo.toml (#610) 2018-08-28 10:53:45 +01:00
Guanqun Lu 25450dc87d add cli for purge chain (#609) 2018-08-28 10:53:28 +01:00
Gav Wood f59bcd15da New slashing logic (#570)
* New slashing mechanism (#554)

* Slashing improvements

- unstake when balance too low
- unstake after N slashes according to val prefs
- don't early-terminate session/era unless unstaked
- offline grace period before punishment

* Fix warning

* Cleanups and ensure slash_count decays

* Bump authoring version and introduce needed authoring stub

* Rename

* Fix offline tracker

* Fix offline tracker

* Renames

* Add test

* Tests

* Tests.

* Remove accidental merge files.

* Version bump, fixes (#572)

* Bump version, don't propose invalid blocks

* Fix build.

* Fixes.

* More fixes.

* Fix tests.

* Fix more tests

* More tests fixed

* Fix merge

* Fix accidental merge bug

* Fixes.

* Staking failsafes

- Don't slash/unstake/change session when too few staking participants
- Introduce set_balance PrivCall

* Make minimum validator count dynamic.

* test fixes

* Fix tests.

* Fix tests

* Fix tests, update readme.

* Test with release.

* Use safe math when dealing with total stake

* Fix test again.

* Fix grumbles.
2018-08-27 17:11:04 +02:00
Sergey Pepyakin 4e9f40840c Contract signatures checking (#478)
* Convert T in vm::Ext to a associated type

* WIP

* Fix BTreeMap

* Extract prepare module from vm.

* Move tests as well.

* Fix doc comment.

* macro for env defintion

* Fix prepare tests.

* Clean up

* Renamings

* Refactor scan_imports

* Improve docs

* Docs.

* Add some tests for sandbox module

* Clean up

* Use Error::Instantiate instead of ::Deserialize

* Add test for imports

* Add wrong sig import

* Clean up

* Rebuild binaries.

* Use "another_module" instead of obscure "vne"

Since "vne" looks like an actual typo
2018-08-27 16:09:10 +02:00
Guanqun Lu 875ce9e6c3 extrinsic-pool: use retain() (#613) 2018-08-27 10:43:00 +02:00
Guanqun Lu 58bba89819 rename Polkadot to Substrate in the license header via following four commands (#614)
git grep -l 'This file is part of Polkadot' | xargs sed -i 's/This file is part of Polkadot/This file is part of Substrate/g'
    git grep -l 'Polkadot is free software' | xargs sed -i 's/Polkadot is free software/Substrate is free software/g'
    git grep -l 'Polkadot is distributed in the hope' | xargs sed -i 's/Polkadot is distributed in the hope/Substrate is distributed in the hope/g'
    git grep -l 'along with Polkadot' | xargs sed -i 's/along with Polkadot/along with Substrate/g'
2018-08-27 10:42:50 +02:00
Guanqun Lu e8ec3d72c9 typo fixes (#608) 2018-08-26 20:06:47 +02:00
Tomasz Drwięga 2c21f5ff30 RPC: Block number to block hash (#584)
* Return hash for given block number.

* Add some tests.

* Fix re-import.
2018-08-25 14:11:11 +02:00
Sergey Pepyakin 969fcfb97f Minor fixes for nightly 2018-08-18 (#600)
* Don't use --export-table anymore

Because it was turned on by default in the recent nightlies.

See https://github.com/rust-lang/rust/pull/53237

* use_extern_macros stabilization

With recent nightlies rustc produces a warning

```
the feature `use_extern_macros` has been stable since 1.30.0 and no longer requires an attribute to enable
```
2018-08-25 11:59:52 +02:00
Tomasz Drwięga d965e8f08e Time-based transaction banning (#594) (#602)
* Allow replacing transactions.

* Clear old transactions and ban them temporarily.

* Move to a separate module and add some tests.

* Add bound to banned transactions.

* Remove unnecessary block and double PoolRotator.
2018-08-25 00:19:36 +02:00
ddorgan 134b8f47dd cargo --force to allow CI to build. (#599) 2018-08-24 14:43:49 +02:00
Gav Wood 2673c26414 Fix logging (#587)
* Fix logging

* Add error info
2018-08-21 12:19:11 +02:00
Gav Wood e35a4a3995 Fix runtime version cache (#586)
- Use blake2 instead of xxhash for guaranteed safety
- Simplify by caching the version rather than the compatibility
- Additional logging
2018-08-21 10:18:27 +02:00
Arkadiy Paronyan 3514ae9807 More generic extrinsic pool (#579) 2018-08-20 14:54:03 +02:00
Sergey Pepyakin 3f366cc738 Implement it. (#569) 2018-08-19 18:50:42 +02:00
Robert Habermeier 3ef4463c3a [forward port] continue rounds (#583)
* keep rounds consistent when encountering bad block

* fix interval logic

* Fixed indentation
2018-08-17 22:12:37 +02:00
Arkadiy Paronyan e482958705 Authoring with WASM runtime (#580) 2018-08-17 10:40:40 +02:00
Gav Wood bde4152f1e Remove _wasm block specialistions in tests. (#576) 2018-08-16 14:41:24 +02:00
Robert Habermeier d0066e51ae remove wasm-publish step 2018-08-15 13:57:14 +02:00
Robert Habermeier 4eefa5ee60 update script targets 2018-08-15 13:43:41 +02:00
Robert Habermeier add49f1f79 Merge branch 'master' into split-substrate 2018-08-15 13:24:27 +02:00
Gav Wood 3d6aaab26c Refactor/substrate state machine generic (#553)
* Genric over hasher

* WIP start adding NodeCodec

* Add codec to TrieBackend

* Typechecks

* Fix error type

* Cleanup

* Tests build (and fail)

* Fix tests: don't use MemoryDB::default()

* Lockfile

* Address grumbles

* Teach environmental! about generics

* Add Finder artifacts

* whitespace

* Add a toy impl of Hasher and plug it in to Externalities

* Use `uint` and `fixed-hash` from `parity-common`
Remove unused U512
Add test to ensure H256 impls heapsizeof

* lock file updates

* Make hashes Encodable/Decodable

* lock file updates

* Impl FromIterator for TestExternalities so we can collect() and use map!

* Use rustc-hex from crates
Use rlp from master so dependencies do not mess up the scope

* Fix tests in runtime-io

* lockfile shenanigans

* Add a BlakeHasher impl

* Use BlakeHasher in runtime-io

* lockfile updates

* ws

* Add a Blake2/RLP-flavoured NodeCodec

* Use Blake-flavoured Hasher and NodeCodec

* lockfile

* Implement PartialEq and Default for TestExternalities

* Add note about limitations of environmental!

* Make it compile, but this is probably broken

* Derive Debug so tests in executor can work

* Make executor use BlakeHasher

* ws

* WIP make client generic

* typechecks

* cleanup

* client tests pass

* Fix client/db

* cleanup

* Fix network

* Fix rpc

* Fix service

* Make TestExternalities work better au lieu d'un HashMap

* Fix tests in council

* Fix tests in contract

* Fix tests in council

* Fix democracy

* Add comment about odd-looking reexports in tests

* Don't need to load branch

* Fix staking

* Fix session

* Some polkadot fixes and lockfile

* Fix executive

* fixup lockfile

* Fix polkadot/api

* Fix polkadot/service

* Fix polkadot/runtime tests

* Fix tests in test-runtime

* Test fixes

* Fix missing component in the `std` feature

* Use PhantomData and Result from core

* Fix paths
Use core

* load heapsize on wasm

* implement `HeapSizeOf` for wasm

* Add toy impl of `blake2_256` for no_std

* lockfile

* Use kvdb* from parity-common and fix errors

* rebuilt lockfile

* Add dummy impl of `on_advance_round` for rhododendron::Context

* Fix build after merge

* Add HeapSizeOf bound where needed

* Sort out dependencies for no_std

* Add HeapSizeOf bound where needed

* use temp branch pending PR merges

* Remove unneeded tests

* Lock file and wasm artifacts

* lockfile

* Use magic commit for libp2p

* Cleanup

* Implement blake2_256 for no_std

* Back on parity-common master

* missing type params

* Update Cargo.lock

* whitespace

* Rename concrete Rlp node codec "RlpCodec" and use everywhere
Implement a Keccak-flavoured Rlp NodeCodec and use everywhere
Add a KeccakHasher

* Switch to use KeccakHasher

* Lock file and runtimes

* fixup lockfile

* Fix outstanding issue using concrete types (thanks @gnunicorn)

* Cleanup

* More cleanup

* Comment out Blake2 Hasher

* implement ext_keccak256

* Address todo: FetchChecker is generic

* all tests passing
2018-08-15 13:13:11 +02:00
Guanqun Lu 7b65e9bf62 add build status in README (#566) 2018-08-15 10:05:08 +02:00