Michael Vines
cc78667118
Record instructions after account translation
2020-11-28 10:54:09 -08:00
Alexander Meißner
c833ede4af
Rbpf v0.2.1 ( #13732 )
...
* Refactoring to match rbpf-v0.2.1 and add JIT compilation caching.
* Removes obsolete bpf-trace.py which has been replaced by the rbpf CLI tool.
2020-11-24 18:00:19 +01:00
Jack May
3a9dca0c67
Add back BPF error logging ( #13633 )
...
* Add back BPF error logging
* Update programs/bpf_loader/src/lib.rs
Co-authored-by: Michael Vines <mvines@gmail.com>
2020-11-17 08:10:14 +00:00
Jack May
8c922a0198
fix arithmetic overflow in slice translation ( #13624 )
...
* fix arithmetic overflow in slice translation
* nudge
2020-11-17 00:13:01 +00:00
Michael Vines
baa6b3a261
Add stable program logging for BPF and native programs
2020-11-14 08:26:01 -08:00
Jack May
30ef53cb13
fix bpf lddw check ( #13554 )
2020-11-12 13:13:42 -08:00
Jack May
461ae40eea
provide full Rust panic messages in BPF and add memory optimizations ( #13455 )
2020-11-09 13:40:26 -08:00
Alexander Meißner
4999fe298b
Rbpf v0.2.0 ( #13365 )
...
* Updates rbpf to v0.2.0,
which unifies the interfaces of the interpreter and the JIT.
However, the JIT is not enabled yet.
2020-11-04 18:46:26 +01:00
Michael Vines
9263ae1c60
Simplify CPI interface into MessageProcessor
2020-10-30 09:20:09 +00:00
Michael Vines
da9548fd12
de-mut some InvokeContext methods
2020-10-30 09:20:09 +00:00
Michael Vines
da361afbb9
Revert "Updates rbpf to v0.2.0, ( #12951 )"
...
This reverts commit 6606590b81
.
2020-10-29 21:45:24 -07:00
Michael Vines
7d686b72a0
Add Bank::set_bpf_compute_budget()
2020-10-29 21:45:24 -07:00
Michael Vines
66e51a7363
Add sol_log_compute_units syscall
2020-10-29 21:45:24 -07:00
Michael Vines
33884d847a
Remove programs clone()
2020-10-29 21:45:24 -07:00
Michael Vines
2664a1f7ef
Remove MessageProcessor::loaders
2020-10-29 21:45:24 -07:00
Michael Vines
df8dab9d2b
Native/builtin programs now receive an InvokeContext
2020-10-29 21:45:24 -07:00
Alexander Meißner
6606590b81
Updates rbpf to v0.2.0, ( #12951 )
...
which unifies the interfaces of the interpreter and the JIT.
However, the JIT is not enabled yet.
2020-10-29 11:34:52 -07:00
Alexander Meißner
65ee3a6bdd
Refactors the common code of test and bench targets into the solana_runtime::bpf_test_utils module. ( #13203 )
2020-10-29 10:04:47 +01:00
Michael Vines
1b343665a1
Move KeyedAccount out of solana-program. Native programs are not supported by solana-program
2020-10-26 18:54:54 -07:00
Michael Vines
959880db60
Remove unused pubkey::Pubkey imports
2020-10-21 19:08:13 -07:00
Michael Vines
7bc073defe
Run `codemod --extensions rs Pubkey::new_rand solana_sdk::pubkey::new_rand`
2020-10-21 19:08:13 -07:00
Ryo Onodera
c0675968b1
Support Debug Bank ( #13017 )
2020-10-21 01:05:45 +09:00
Jack May
b510474dcb
Report compute budget usage ( #12931 )
2020-10-15 15:55:37 -07:00
Jack May
3f9e6a600b
program log pubkey as base58 ( #12901 )
2020-10-15 09:11:54 -07:00
Jack May
c3907be623
Add adjustable stack size and call depth ( #12728 )
2020-10-09 13:07:09 -07:00
Jack May
2cd7cd3149
Bump max invoke depth to 4 ( #12742 )
2020-10-09 10:33:12 -07:00
Jack May
973f0965e1
Add ristretto multiply syscall ( #12699 )
2020-10-06 23:52:13 -07:00
Jack May
d0aa8a6446
Fix zero-len slice translations ( #12642 )
2020-10-02 17:45:39 -07:00
Jack May
adeb06e550
Check CPI program is executable ( #12644 )
2020-10-02 13:55:22 -07:00
Jack May
058bca6632
add sha256 syscall ( #12569 )
2020-09-29 23:29:20 -07:00
Jack May
74fcb184b2
Pipe FeatureSet though InvokeContext ( #12536 )
...
* Pipe FeatureSet though InvokeContext
* gate program size cap
* nit
2020-09-29 21:36:30 +00:00
Jack May
2ff983647f
Move process_instruction defs to runtime ( #12507 )
2020-09-29 01:36:46 -07:00
Jack May
d00453f747
Drain the entire compute budget ( #12478 )
2020-09-25 18:08:10 +00:00
Jack May
b8c4b88188
Cleanup names, fix line dependent test ( #12477 )
2020-09-25 09:00:06 -07:00
Justin Starry
6601ec8f26
Record and store invoked instructions in transaction meta ( #12311 )
...
* Record invoked instructions and store in transaction meta
* Enable cpi recording if transaction sender is some
* Rename invoked to innerInstructions
2020-09-24 22:36:22 +08:00
Jack May
3278d78f08
Cache re-usable work performed by the loader ( #12135 )
2020-09-14 17:42:37 -07:00
Jack May
ae7b15f062
Gate pointer alignment enforcement ( #12176 )
2020-09-11 11:07:03 -07:00
Jack May
fd47d38e59
Calc size ahead of time to alloc once ( #12154 )
2020-09-10 11:13:35 -07:00
Jack May
ea179ad762
Bump compute budget ( #11864 )
...
* Bump compute budget
* nudge
2020-08-26 21:48:51 +00:00
Jack May
c2e5dae7ba
Gate aligned program heap ( #11808 )
2020-08-24 13:21:34 -07:00
Jack May
8d362f682b
The constraints on compute power a program can consume is limited only to its instruction count ( #11717 )
2020-08-21 15:31:19 -07:00
Jack May
46830124f8
CPI support for bpf_loader_deprecated ( #11695 )
2020-08-18 11:26:29 -07:00
Jack May
e9b610b8df
Add SystemInstruction::CreateAccount support to CPI ( #11649 )
2020-08-17 13:38:42 -07:00
Jack May
f1ba2387d3
More efficient padding ( #11656 )
2020-08-17 10:24:34 -07:00
Jack May
750e5344f1
Return an error from create_program_address syscall ( #11658 )
2020-08-17 09:49:40 -07:00
Jack May
f8606fca4f
Aligned program heap ( #11657 )
2020-08-17 09:49:21 -07:00
Jack May
4196686acf
Feature check CPI up front ( #11652 )
2020-08-16 23:12:22 -07:00
Jack May
768b386f0a
fix region checks ( #11651 )
2020-08-16 23:11:52 -07:00
Jack May
7c736f71fe
Make BPF Loader static ( #11516 )
2020-08-14 12:32:45 -07:00
Jack May
9290e561e1
Align host addresses ( #11384 )
...
* Align host addresses
* support new program abi
* update epoch rollout
* Enforce aligned pointers in cross-program invocations
2020-08-11 16:11:52 -07:00
Jack May
4ac75a8558
Realloc not supported ( #11424 )
2020-08-06 19:14:12 +00:00
Jack May
03263c850a
Force program address off the curve ( #11323 )
2020-08-05 16:35:54 -07:00
Jack May
2dbed80e48
Disable cross-program invocations for OperatingMode::Stable ( #11272 )
2020-07-29 15:29:52 -07:00
Aaron Hill
05445c718e
Fix hygiene issues in `declare_program!` and `declare_loader!`
...
The `declare_program!` and `declare_loader!` macros both expand to
new macro definitions (based on the `$name` argument). These 'inner'
macros make use of the special `$crate` metavariable to access items in
the crate where the 'inner' macros is defined.
However, this only works due to a bug in rustc. When a macro is
expanded, all `$crate` tokens in its output are 'marked' as being
resolved in the defining crate of that macro. An inner macro (including
the body of its arms) is 'just' another set of tokens that appears in
the body of the outer macro, so any `$crate` identifiers used there are
resolved relative to the 'outer' macro.
For example, consider the following code:
```rust
macro_rules! outer {
() => {
macro_rules! inner {
() => {
$crate::Foo
}
}
}
}
```
The path `$crate::Foo` will be resolved relative to the crate that defines `outer`,
**not** the crate which defines `inner`.
However, rustc currently loses this extra resolution information
(referred to as 'hygiene' information) when a crate is serialized.
In the above example, this means that the macro `inner` (which gets
defined in whatever crate invokes `outer!`) will behave differently
depending on which crate it is invoked from:
When `inner` is invoked from the same crate in which it is defined,
the hygiene information will still be available,
which will cause `$crate::Foo` to be resolved in the crate which defines 'outer'.
When `inner` is invoked from a different crate, it will be loaded from
the metadata of the crate which defines 'inner'. Since the hygiene
information is currently lost, rust will 'forget' that `$crate::Foo` is
supposed to be resolved in the context of 'outer'. Instead, it will be
resolved relative to the crate which defines 'inner', which can cause
incorrect code to compile.
This bug will soon be fixed in rust (see https://github.com/rust-lang/rust/pull/72121 ),
which will break `declare_program!` and `declare_loader!`. Fortunately,
it's possible to obtain the desired behavior (`$crate` resolving in the
context of the 'inner' macro) by use of a procedural macro.
This commit adds a `respan!` proc-macro to the `sdk/macro` crate.
Using the newly-stabilized (on Nightly) `Span::resolved_at` method,
the `$crate` identifier can be made to be resolved in the context of the
proper crate.
Since `Span::resolved_at` is only stable on the latest nightly,
referencing it on an earlier version of Rust will cause a compilation error.
This requires the `rustversion` crate to be used, which allows conditionally
compiling code epending on the Rust compiler version in use. Since this method is already
stabilized in the latest nightly, there will never be a situation where
the hygiene bug is fixed (e.g. https://github.com/rust-lang/rust/pull/72121 )
is merged but we are unable to call `Span::resolved_at`.
2020-07-14 14:40:02 -07:00
Jack May
57576b07ef
Fix warnings ( #10992 )
...
* Fix warnings
* disable warning
2020-07-10 20:02:55 +00:00
Greg Fitzgerald
1c498369b5
Remove fee-payer guesswork from Message and Transaction ( #10776 )
...
* Make Message::new_with_payer the default constructor
* Remove Transaction::new_[un]signed_instructions
These guess the fee-payer instead of stating it explicitly
2020-06-24 14:52:38 -06:00
Jack May
73586c1aad
Use &[u8] for program address seeds rather then &str ( #10744 )
2020-06-22 16:51:43 -07:00
Jack May
dac7dc2f10
Move types to more appropriate files ( #10638 )
2020-06-17 10:39:14 -07:00
Jack May
b6a9573748
Route all loader messages to log collector ( #10528 )
2020-06-13 13:20:08 -07:00
Michael Vines
7e2651ca51
RPC simulateTransaction endpoint now returns program log output ( #10432 )
2020-06-06 10:18:28 -07:00
Michael Vines
a4cd96609c
Add built-in programs to InvokeContext ( #10383 )
...
automerge
2020-06-03 12:48:19 -07:00
Jack May
03abd3ddd7
Prevent privilege escalation ( #10232 )
...
automerge
2020-05-26 01:02:31 -07:00
Jack May
4a72c2b054
Support cross-program invocation to native programs ( #10136 )
2020-05-20 09:24:57 -07:00
Greg Fitzgerald
5e89bd8868
Panic if no fee-payer found via Message::new() ( #10050 )
...
automerge
2020-05-15 12:23:09 -07:00
Kristofer Peterson
58ef02f02b
9951 clippy errors in the test suite ( #10030 )
...
automerge
2020-05-15 09:35:43 -07:00
Justin Starry
5cc252d471
Remove hash field from account ( #9915 )
2020-05-12 23:39:46 +08:00
Jack May
af84dff9ef
nudge
2020-05-11 09:06:05 -07:00
Jack May
97e17f9b32
Programs can only sign their accounts
2020-05-11 09:06:05 -07:00
Jack May
84885d79d5
Pull in hardened BPF virtual machine ( #9931 )
2020-05-08 12:37:04 -07:00
Jack May
7678af6300
Cleanup BPF helper symbols ( #9804 )
2020-04-30 11:29:11 -07:00
Jack May
de9d8cd849
Rename BPF helper to syscall ( #9819 )
...
automerge
2020-04-30 01:43:11 -07:00
Jack May
068f12fd6f
Add Cross-program invocations ( #9582 )
2020-04-28 14:33:56 -07:00
Jack May
d3e3f51330
Ignore log tests due to concurrency conflicts ( #9719 )
2020-04-25 22:38:59 -07:00
Jack May
17e7667da4
Serialize test ( #9655 )
2020-04-22 14:53:06 -07:00
Jack May
89b30b4853
Ignore test_helper_sol_log due to solana_logger concurency issue ( #9654 )
2020-04-22 10:03:41 -07:00
Jack May
58887c591b
Add and update tests ( #9566 )
2020-04-18 17:04:13 -07:00
Jack May
241a05fc52
Add native loader entry points ( #9486 )
2020-04-15 09:41:29 -07:00
Jack May
ad0482be73
Revert "Add native loader entry points ( #9275 )" Breaks genesis_config abi ( #9377 )
...
This reverts commit ed86d8d1fc
.
2020-04-08 14:36:18 -07:00
Jack May
ed86d8d1fc
Add native loader entry points ( #9275 )
2020-04-03 17:40:59 -07:00
Jack May
1e6b789bfa
Improve BPF Loader reporting ( #9202 )
...
automerge
2020-03-31 18:18:44 -07:00
Jack May
130c0b484d
Enforce an executable's rent exemption in the runtime ( #9134 )
2020-03-31 10:07:38 -07:00
Jack May
dae28b9cfe
Bump rBPF to v0.1.24, update rBPF/BPF Loader error handling ( #9089 )
2020-03-26 14:00:26 -07:00
Jack May
de6ef68571
Add BPF virtual address translate helpers ( #8919 )
2020-03-18 08:39:55 -07:00
Jack May
61514e3b0e
Allow program accounts to be passed as program and parameter ( #8907 )
2020-03-17 12:06:15 -07:00
Jack May
8df4d8b905
Update to rbpf v0.1.23 - Use trait objects to convey helper context ( #8648 )
2020-03-05 14:14:21 -08:00
Jack May
5e3ce30d02
Pass the correct program_id to programs ( #8630 )
2020-03-05 10:57:35 -08:00
Jack May
25df95be6f
Expose executable and rent_epoch in AccountInfo ( #8619 )
2020-03-04 10:52:09 -08:00
Jack May
4593d333c7
Remove BPF Loader's use of GenericError ( #8284 )
2020-02-14 13:59:03 -08:00
Jack May
517fe73734
Non-conflicting account duplicate marker value ( #8206 )
2020-02-11 10:03:28 -08:00
Jack May
df782b93ae
Add is_writable to AccountInfo ( #8196 )
2020-02-10 21:33:29 -08:00
Jack May
8436457e75
Rename program_utils.rs ( #8127 )
2020-02-05 12:48:30 -08:00
Jack May
0fd795a676
Remove program error footgun and cleaner developer experience ( #8042 )
2020-01-31 10:58:07 -08:00
Jack May
dd276138c2
Add support for idiomatic error handling to BPF instruction processors ( #7968 )
2020-01-30 09:47:22 -08:00
Jack May
669502ede7
Don't depend on user modifiable data to parse paramter buffer ( #8022 )
2020-01-29 21:49:42 -08:00
Jack May
34ed93d57c
Optimize account copies and use RefCell to handle duplicate accounts in BPF programs ( #7958 )
2020-01-24 10:54:26 -08:00
Jack May
c95e5346a4
Boot the mut ( #7926 )
2020-01-22 17:54:06 -08:00
Jack May
023074650f
Allow the same account to be passed multiple times to a single instruction ( #7795 )
2020-01-22 09:11:56 -08:00
Jack May
bb950ec93e
Naming nits ( #7896 )
...
automerge
2020-01-21 10:38:46 -08:00
Jack May
08ba27627d
Direct entrypoint for execution ( #7746 )
2020-01-10 13:20:15 -08:00
Jack May
2d08dddfc8
nit, cleanup uses ( #7747 )
...
automerge
2020-01-09 23:58:13 -08:00
Jack May
07855e3125
Allow override of RUST_LOG ( #7705 )
2020-01-08 09:19:12 -08:00
Jack May
a956bb08d8
Export bpf loader ser/de ( #7661 )
2020-01-02 18:18:56 -08:00
Rob Walker
39cd6dff7d
turn on rent ( #7368 )
...
* turn on rent
* add rent exempt balances for bootstrap accounts
* use Rent::free() when not testing rent
2019-12-09 21:56:43 -08:00
Jack May
1a135fa30e
Verify BPF ELF during finalize ( #7266 )
2019-12-04 12:03:29 -08:00
Justin Starry
7cfff75c3e
Use procedural macro to generate static public keys ( #7219 )
...
automerge
2019-12-03 17:55:18 -08:00
Jack May
d8ead57fbb
Use bs58 strings to declare IDs rather then raw bytes ( #7082 )
2019-11-21 16:34:40 -08:00
Jack May
3415db9739
Merge api/program into single units ( #7061 )
2019-11-20 16:32:19 -08:00
Jack May
0dcdc37fec
Split BPF loader to match the rest of the programs ( #4636 )
2019-06-12 08:49:59 -07:00
Rob Walker
e56430c9fb
make runtime depend on bpf_loader ( #4601 )
...
* make runtime depend on bpf_loader
* remove vote redundancy, move bpf_loader to genesis, export program\! from bpf_loader crate
* move bpf_loader specification into genesis
* bpf tests to use genesis with bpf
* need to avoid depending on programs, except for macros
2019-06-11 10:27:22 -07:00
Jack May
9f6496d38a
Panic filename ( #4625 )
...
automerge
2019-06-10 11:00:15 -07:00
Tyera Eulberg
64e8a21d73
Add tick height syscall ( #4497 )
...
* Remove tick_height from entrypoint signature
* Impl tick_height syscall and use in storage program
* Properly remove tick height from bpf handling
2019-05-31 16:29:21 -06:00
Jack May
bfa1c025fd
Add rust bpf allocator ( #4426 )
2019-05-24 16:21:42 -07:00
Greg Fitzgerald
51a2988bb2
Revert "Rename programs to instruction_processors ( #3789 )" ( #3824 )
...
This reverts commit 34344982a9
.
2019-04-17 15:05:49 -06:00
Amr Ali
34344982a9
Rename programs to instruction_processors ( #3789 )
...
* Rename programs to instruction_processors
* Updates around the code base to support instruction_processors rename
* Kabab instruction_processors
* Update Cargo.toml files and scripts to use instruction-processors
* Update Cargo.toml to use instruction-processors
* Update CI scripts to use instruction-processors
2019-04-16 22:39:00 +02:00
Greg Fitzgerald
acedf4ca5a
Move Instruction into its own module
2019-03-23 20:31:55 -07:00
Greg Fitzgerald
8d032aba9d
Merge InstructionError and ProgramError
...
From the user's perspective, it's just an instruction error.
For program-specific errors, we still have
InstructionError::CustomError.
2019-03-18 10:39:20 -06:00
Greg Fitzgerald
c1eec0290e
Rename userdata to data ( #3282 )
...
* Rename userdata to data
Instead of saying "userdata", which is ambiguous and imprecise,
say "instruction data" or "account data".
Also, add `ProgramError::InvalidInstructionData`
Fixes #2761
2019-03-14 10:48:27 -06:00
Michael Vines
53f09c44f3
Rename tokens to lamports in sdk/
2019-03-05 17:28:06 -08:00
Greg Fitzgerald
037fcf6b3d
Bump all native programs up a level
...
Don't categorize programs by a single backend.
2019-03-02 22:11:48 -08:00