mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 19:21:13 +00:00
Enhance decl storage (#777)
* enhance macro decl_storage() * update the state root hash * fix one comment
This commit is contained in:
@@ -1,65 +0,0 @@
|
||||
// Copyright 2018 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Substrate.
|
||||
|
||||
// Substrate is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Substrate is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Substrate. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Build the contract module part of the genesis block storage.
|
||||
|
||||
#![cfg(feature = "std")]
|
||||
|
||||
use {Trait, ContractFee, CallBaseFee, CreateBaseFee, GasPrice, MaxDepth, BlockGasLimit};
|
||||
|
||||
use runtime_primitives;
|
||||
use runtime_primitives::traits::As;
|
||||
use runtime_io::twox_128;
|
||||
use runtime_support::StorageValue;
|
||||
use codec::Encode;
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct GenesisConfig<T: Trait> {
|
||||
pub contract_fee: T::Balance,
|
||||
pub call_base_fee: T::Gas,
|
||||
pub create_base_fee: T::Gas,
|
||||
pub gas_price: T::Balance,
|
||||
pub max_depth: u32,
|
||||
pub block_gas_limit: T::Gas,
|
||||
}
|
||||
|
||||
impl<T: Trait> Default for GenesisConfig<T> {
|
||||
fn default() -> Self {
|
||||
GenesisConfig {
|
||||
contract_fee: T::Balance::sa(21),
|
||||
call_base_fee: T::Gas::sa(135),
|
||||
create_base_fee: T::Gas::sa(175),
|
||||
gas_price: T::Balance::sa(1),
|
||||
max_depth: 100,
|
||||
block_gas_limit: T::Gas::sa(1_000_000),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Trait> runtime_primitives::BuildStorage for GenesisConfig<T> {
|
||||
fn build_storage(self) -> ::std::result::Result<runtime_primitives::StorageMap, String> {
|
||||
Ok(map![
|
||||
twox_128(<ContractFee<T>>::key()).to_vec() => self.contract_fee.encode(),
|
||||
twox_128(<CallBaseFee<T>>::key()).to_vec() => self.call_base_fee.encode(),
|
||||
twox_128(<CreateBaseFee<T>>::key()).to_vec() => self.create_base_fee.encode(),
|
||||
twox_128(<GasPrice<T>>::key()).to_vec() => self.gas_price.encode(),
|
||||
twox_128(<MaxDepth<T>>::key()).to_vec() => self.max_depth.encode(),
|
||||
twox_128(<BlockGasLimit<T>>::key()).to_vec() => self.block_gas_limit.encode()
|
||||
])
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,7 @@ extern crate parity_codec as codec;
|
||||
extern crate sr_io as runtime_io;
|
||||
extern crate sr_sandbox as sandbox;
|
||||
|
||||
#[macro_use]
|
||||
#[cfg_attr(not(feature = "std"), macro_use)]
|
||||
extern crate sr_std as rstd;
|
||||
|
||||
extern crate srml_balances as balances;
|
||||
@@ -93,13 +93,9 @@ mod exec;
|
||||
mod vm;
|
||||
mod gas;
|
||||
|
||||
mod genesis_config;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
pub use genesis_config::GenesisConfig;
|
||||
use exec::ExecutionContext;
|
||||
use account_db::{AccountDb, OverlayAccountDb};
|
||||
use double_map::StorageDoubleMap;
|
||||
@@ -188,22 +184,22 @@ decl_event! {
|
||||
decl_storage! {
|
||||
trait Store for Module<T: Trait> as Contract {
|
||||
/// The fee required to create a contract. At least as big as staking's ReclaimRebate.
|
||||
ContractFee get(contract_fee): required T::Balance;
|
||||
ContractFee get(contract_fee) config(): T::Balance = T::Balance::sa(21);
|
||||
/// The fee charged for a call into a contract.
|
||||
CallBaseFee get(call_base_fee): required T::Gas;
|
||||
CallBaseFee get(call_base_fee) config(): T::Gas = T::Gas::sa(135);
|
||||
/// The fee charged for a create of a contract.
|
||||
CreateBaseFee get(create_base_fee): required T::Gas;
|
||||
CreateBaseFee get(create_base_fee) config(): T::Gas = T::Gas::sa(175);
|
||||
/// The price of one unit of gas.
|
||||
GasPrice get(gas_price): required T::Balance;
|
||||
GasPrice get(gas_price) config(): T::Balance = T::Balance::sa(1);
|
||||
/// The maximum nesting level of a call/create stack.
|
||||
MaxDepth get(max_depth): required u32;
|
||||
MaxDepth get(max_depth) config(): u32 = 100;
|
||||
/// The maximum amount of gas that could be expended per block.
|
||||
BlockGasLimit get(block_gas_limit): required T::Gas;
|
||||
BlockGasLimit get(block_gas_limit) config(): T::Gas = T::Gas::sa(1_000_000);
|
||||
/// Gas spent so far in this block.
|
||||
GasSpent get(gas_spent): default T::Gas;
|
||||
GasSpent get(gas_spent): T::Gas;
|
||||
|
||||
/// The code associated with an account.
|
||||
pub CodeOf: default map [ T::AccountId => Vec<u8> ]; // TODO Vec<u8> values should be optimised to not do a length prefix.
|
||||
pub CodeOf: map T::AccountId => Vec<u8>; // TODO Vec<u8> values should be optimised to not do a length prefix.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user