Tier step price.
This commit is contained in:
parent
12187b8af7
commit
f835990091
@ -54,13 +54,34 @@ impl AccountDiff {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*impl Debug for AccountDiff {
|
#[derive(Debug,Clone,PartialEq,Eq)]
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
pub struct StateDiff (BTreeMap<Address, AccountDiff>);
|
||||||
write!(f, "{:?}", PodAccount::from_account(self))
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
pub type StateDiff = BTreeMap<Address, AccountDiff>;
|
impl fmt::Display for AccountDiff {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
write!(f, "...\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for Existance {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match self {
|
||||||
|
&Existance::Born => try!(write!(f, "+++")),
|
||||||
|
&Existance::Alive => try!(write!(f, "***")),
|
||||||
|
&Existance::Died => try!(write!(f, "---")),
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for StateDiff {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
for (add, acc) in self.0.iter() {
|
||||||
|
try!(write!(f, "{} {}: {}", acc.existance(), add, acc));
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn pod_diff(pre: Option<&PodAccount>, post: Option<&PodAccount>) -> Option<AccountDiff> {
|
pub fn pod_diff(pre: Option<&PodAccount>, post: Option<&PodAccount>) -> Option<AccountDiff> {
|
||||||
match (pre, post) {
|
match (pre, post) {
|
||||||
@ -101,7 +122,7 @@ pub fn pod_diff(pre: Option<&PodAccount>, post: Option<&PodAccount>) -> Option<A
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn pod_map_diff(pre: &BTreeMap<Address, PodAccount>, post: &BTreeMap<Address, PodAccount>) -> StateDiff {
|
pub fn pod_map_diff(pre: &BTreeMap<Address, PodAccount>, post: &BTreeMap<Address, PodAccount>) -> StateDiff {
|
||||||
pre.keys().merge(post.keys()).filter_map(|acc| pod_diff(pre.get(acc), post.get(acc)).map(|d|(acc.clone(), d))).collect()
|
StateDiff(pre.keys().merge(post.keys()).filter_map(|acc| pod_diff(pre.get(acc), post.get(acc)).map(|d|(acc.clone(), d))).collect())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -114,22 +135,22 @@ fn state_diff_create_delete() {
|
|||||||
storage: map![]
|
storage: map![]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
assert_eq!(pod_map_diff(&a, &map![]), map![
|
assert_eq!(pod_map_diff(&a, &map![]), StateDiff(map![
|
||||||
x!(1) => AccountDiff{
|
x!(1) => AccountDiff{
|
||||||
balance: Diff::Died(x!(69)),
|
balance: Diff::Died(x!(69)),
|
||||||
nonce: Diff::Died(x!(0)),
|
nonce: Diff::Died(x!(0)),
|
||||||
code: Diff::Died(vec![]),
|
code: Diff::Died(vec![]),
|
||||||
storage: map![],
|
storage: map![],
|
||||||
}
|
}
|
||||||
]);
|
]));
|
||||||
assert_eq!(pod_map_diff(&map![], &a), map![
|
assert_eq!(pod_map_diff(&map![], &a), StateDiff(map![
|
||||||
x!(1) => AccountDiff{
|
x!(1) => AccountDiff{
|
||||||
balance: Diff::Born(x!(69)),
|
balance: Diff::Born(x!(69)),
|
||||||
nonce: Diff::Born(x!(0)),
|
nonce: Diff::Born(x!(0)),
|
||||||
code: Diff::Born(vec![]),
|
code: Diff::Born(vec![]),
|
||||||
storage: map![],
|
storage: map![],
|
||||||
}
|
}
|
||||||
]);
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -156,22 +177,22 @@ fn state_diff_cretae_delete_with_unchanged() {
|
|||||||
storage: map![]
|
storage: map![]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
assert_eq!(pod_map_diff(&a, &b), map![
|
assert_eq!(pod_map_diff(&a, &b), StateDiff(map![
|
||||||
x!(2) => AccountDiff{
|
x!(2) => AccountDiff{
|
||||||
balance: Diff::Born(x!(69)),
|
balance: Diff::Born(x!(69)),
|
||||||
nonce: Diff::Born(x!(0)),
|
nonce: Diff::Born(x!(0)),
|
||||||
code: Diff::Born(vec![]),
|
code: Diff::Born(vec![]),
|
||||||
storage: map![],
|
storage: map![],
|
||||||
}
|
}
|
||||||
]);
|
]));
|
||||||
assert_eq!(pod_map_diff(&b, &a), map![
|
assert_eq!(pod_map_diff(&b, &a), StateDiff(map![
|
||||||
x!(2) => AccountDiff{
|
x!(2) => AccountDiff{
|
||||||
balance: Diff::Died(x!(69)),
|
balance: Diff::Died(x!(69)),
|
||||||
nonce: Diff::Died(x!(0)),
|
nonce: Diff::Died(x!(0)),
|
||||||
code: Diff::Died(vec![]),
|
code: Diff::Died(vec![]),
|
||||||
storage: map![],
|
storage: map![],
|
||||||
}
|
}
|
||||||
]);
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -204,14 +225,14 @@ fn state_diff_change_with_unchanged() {
|
|||||||
storage: map![]
|
storage: map![]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
assert_eq!(pod_map_diff(&a, &b), map![
|
assert_eq!(pod_map_diff(&a, &b), StateDiff(map![
|
||||||
x!(1) => AccountDiff{
|
x!(1) => AccountDiff{
|
||||||
balance: Diff::Same,
|
balance: Diff::Same,
|
||||||
nonce: Diff::Changed(x!(0), x!(1)),
|
nonce: Diff::Changed(x!(0), x!(1)),
|
||||||
code: Diff::Same,
|
code: Diff::Same,
|
||||||
storage: map![],
|
storage: map![],
|
||||||
}
|
}
|
||||||
]);
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -50,7 +50,7 @@ impl Schedule {
|
|||||||
exceptional_failed_code_deposit: efcd,
|
exceptional_failed_code_deposit: efcd,
|
||||||
have_delegate_call: hdc,
|
have_delegate_call: hdc,
|
||||||
stack_limit: 1024,
|
stack_limit: 1024,
|
||||||
tier_step_gas: [0usize, 2, 3, 4, 5, 8, 10, 20],
|
tier_step_gas: [0, 2, 3, 5, 8, 10, 20, 0],
|
||||||
exp_gas: 10,
|
exp_gas: 10,
|
||||||
exp_byte_gas: 10,
|
exp_byte_gas: 10,
|
||||||
sha3_gas: 30,
|
sha3_gas: 30,
|
||||||
|
@ -56,7 +56,7 @@ fn do_json_test(json_data: &[u8]) -> Vec<String> {
|
|||||||
let our_post = s.to_pod_map();
|
let our_post = s.to_pod_map();
|
||||||
|
|
||||||
if fail_unless(s.root() == &post_state_root) {
|
if fail_unless(s.root() == &post_state_root) {
|
||||||
println!("DIFF:\n{:?}", pod_map_diff(&post, &our_post));
|
println!("DIFF:\n{}", pod_map_diff(&post, &our_post));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Compare logs.
|
// TODO: Compare logs.
|
||||||
|
Loading…
Reference in New Issue
Block a user