From 87c83c0d9f22b0f2b565d105bb4498241138d415 Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Tue, 24 Jan 2023 18:23:32 +0100 Subject: [PATCH 01/13] Fix migration test --- etc/tests/state-migration-test/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/tests/state-migration-test/src/lib.rs b/etc/tests/state-migration-test/src/lib.rs index 1e7ae6ccf..969dc84bf 100644 --- a/etc/tests/state-migration-test/src/lib.rs +++ b/etc/tests/state-migration-test/src/lib.rs @@ -3,7 +3,7 @@ extern crate alloc; use alloc::vec::Vec; -use aurora_engine::engine::{self, EngineState}; +use aurora_engine::state::{self, EngineState}; use aurora_engine_sdk::near_runtime::Runtime; use aurora_engine_sdk::io::{IO, StorageIntermediate}; use aurora_engine_types::storage; @@ -18,7 +18,7 @@ struct NewFancyState { #[no_mangle] pub extern "C" fn state_migration() { let mut io = Runtime; - let old_state = match engine::get_state(&io) { + let old_state = match state::get_state(&io) { Ok(state) => state, Err(e) => aurora_engine_sdk::panic_utf8(e.as_ref()), }; From 38f82168a11ee00f261a215784d2ff763cb624b5 Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Wed, 25 Jan 2023 10:26:36 +0100 Subject: [PATCH 02/13] chore: remove dynamic memory allocation while creating precompile flags (#661) --- engine/src/pausables.rs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/engine/src/pausables.rs b/engine/src/pausables.rs index 297c237c9..bce888ca6 100644 --- a/engine/src/pausables.rs +++ b/engine/src/pausables.rs @@ -116,17 +116,13 @@ impl EnginePrecompilesPauser { match self.io.read_storage(&Self::storage_key()) { None => PrecompileFlags::empty(), Some(bytes) => { - let int_length = core::mem::size_of::(); - let input = bytes.to_vec(); + const U32_SIZE: usize = core::mem::size_of::(); + assert_eq!(bytes.len(), U32_SIZE, "PrecompileFlags value is corrupted"); - if input.len() < int_length { - return PrecompileFlags::empty(); - } + let mut buffer = [0u8; U32_SIZE]; + bytes.copy_to_slice(&mut buffer); - let (int_bytes, _) = input.split_at(int_length); - PrecompileFlags::from_bits_truncate(u32::from_le_bytes( - int_bytes.try_into().unwrap(), - )) + PrecompileFlags::from_bits_truncate(u32::from_le_bytes(buffer)) } } } @@ -238,15 +234,13 @@ mod tests { } #[test] + #[should_panic] fn test_no_precompile_is_paused_if_storage_contains_too_few_bytes() { let key = EnginePrecompilesPauser::::storage_key(); let storage = RwLock::new(Storage::default()); let mut io = StoragePointer(&storage); io.write_storage(key.as_slice(), &[7u8]); let pauser = EnginePrecompilesPauser::from_io(io); - - let expected_paused = PrecompileFlags::empty(); - let actual_paused = pauser.paused(); - assert_eq!(expected_paused, actual_paused); + let _paused = pauser.paused(); // panic here !!! } } From a47fc46a344ee6813e8d582377402850211c64f0 Mon Sep 17 00:00:00 2001 From: Alexey Lapitsky Date: Thu, 26 Jan 2023 07:59:37 +0100 Subject: [PATCH 03/13] fix(eth-contracts): slither error for immutable admin (#666) --- .../contracts/AdminControlled.sol | 1 + etc/eth-contracts/res/EvmErc20.bin | Bin 6170 -> 6170 bytes etc/eth-contracts/res/EvmErc20.hex | 2 +- etc/eth-contracts/res/EvmErc20V2.bin | Bin 6199 -> 6199 bytes etc/eth-contracts/res/EvmErc20V2.hex | 2 +- 5 files changed, 3 insertions(+), 2 deletions(-) diff --git a/etc/eth-contracts/contracts/AdminControlled.sol b/etc/eth-contracts/contracts/AdminControlled.sol index 1b4361b2d..35090e8fd 100644 --- a/etc/eth-contracts/contracts/AdminControlled.sol +++ b/etc/eth-contracts/contracts/AdminControlled.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.0; contract AdminControlled { + // slither-disable-next-line immutable-states address public admin; uint public paused; diff --git a/etc/eth-contracts/res/EvmErc20.bin b/etc/eth-contracts/res/EvmErc20.bin index efce6657ff3ef6ddf8ba7c5991b6e735112532ef..2cfa548e2df50a328425f1ff87a0b1ae27eb90c0 100644 GIT binary patch delta 51 zcmbPbFw0=WdvWa=#p~+@X35W~vU#ZG-eD{fe)N_s&tHMq*X~w~aps19Qi}6)lARei H_!*1=Cq@%5 delta 51 zcmV-30L=fIFq$y1?-wg!dVe15B%gI*8 JLjVX505f(w7OemP diff --git a/etc/eth-contracts/res/EvmErc20.hex b/etc/eth-contracts/res/EvmErc20.hex index 8ba342b56..0c49d136b 100644 --- a/etc/eth-contracts/res/EvmErc20.hex +++ b/etc/eth-contracts/res/EvmErc20.hex @@ -1 +1 @@ -0x60806040523480156200001157600080fd5b506040516200181a3803806200181a833981016040819052620000349162000186565b80600085856003620000478382620002b9565b506004620000568282620002b9565b5050600580546001600160a01b0319166001600160a01b0394909416939093179092556006555060076200008b8582620002b9565b5060086200009a8482620002b9565b50506009805460ff191660ff9290921691909117905550620003859050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000e157600080fd5b81516001600160401b0380821115620000fe57620000fe620000b9565b604051601f8301601f19908116603f01168101908282118183101715620001295762000129620000b9565b816040528381526020925086838588010111156200014657600080fd5b600091505b838210156200016a57858201830151818301840152908201906200014b565b838211156200017c5760008385830101525b9695505050505050565b600080600080608085870312156200019d57600080fd5b84516001600160401b0380821115620001b557600080fd5b620001c388838901620000cf565b95506020870151915080821115620001da57600080fd5b50620001e987828801620000cf565b935050604085015160ff811681146200020157600080fd5b60608601519092506001600160a01b03811681146200021f57600080fd5b939692955090935050565b600181811c908216806200023f57607f821691505b6020821081036200026057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b457600081815260208120601f850160051c810160208610156200028f5750805b601f850160051c820191505b81811015620002b0578281556001016200029b565b5050505b505050565b81516001600160401b03811115620002d557620002d5620000b9565b620002ed81620002e684546200022a565b8462000266565b602080601f8311600181146200032557600084156200030c5750858301515b600019600386901b1c1916600185901b178555620002b0565b600085815260208120601f198616915b82811015620003565788860151825594840194600190910190840162000335565b5085821015620003755787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61148580620003956000396000f3fe6080604052600436106101755760003560e01c80636b351848116100cb578063a9059cbb1161007f578063dd62ed3e11610059578063dd62ed3e146103ec578063f48ab4e014610432578063f851a4401461043a57600080fd5b8063a9059cbb14610399578063b8e9744c146103b9578063be831a2e146103cc57600080fd5b80638d32caf4116100b05780638d32caf41461034457806395d89b4114610364578063a457c2d71461037957600080fd5b80636b351848146102ee57806370a082311461030e57600080fd5b8063313ce5671161012d57806340c10f191161010757806340c10f1914610298578063530208f2146102b85780635c975abb146102d857600080fd5b8063313ce5671461023657806337d2c2f414610258578063395093511461027857600080fd5b806318160ddd1161015e57806318160ddd146101d557806323b872dd146101f45780632692c59f1461021457600080fd5b806306fdde031461017a578063095ea7b3146101a5575b600080fd5b34801561018657600080fd5b5061018f610472565b60405161019c9190610f90565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004610fc2565b610504565b604051901515815260200161019c565b3480156101e157600080fd5b506002545b60405190815260200161019c565b34801561020057600080fd5b506101c561020f366004610fee565b61051c565b34801561022057600080fd5b5061023461022f36600461102f565b610540565b005b34801561024257600080fd5b5060095460405160ff909116815260200161019c565b34801561026457600080fd5b506102346102733660046110eb565b61055c565b34801561028457600080fd5b506101c5610293366004610fc2565b6105a5565b3480156102a457600080fd5b506102346102b3366004610fc2565b6105e4565b3480156102c457600080fd5b506102346102d3366004610fc2565b610609565b3480156102e457600080fd5b506101e660065481565b3480156102fa57600080fd5b50610234610309366004611169565b61065b565b34801561031a57600080fd5b506101e66103293660046111ae565b6001600160a01b031660009081526020819052604090205490565b34801561035057600080fd5b5061023461035f366004610fc2565b6106cb565b34801561037057600080fd5b5061018f610747565b34801561038557600080fd5b506101c5610394366004610fc2565b610756565b3480156103a557600080fd5b506101c56103b4366004610fc2565b610805565b61018f6103c73660046111cb565b610813565b3480156103d857600080fd5b506102346103e736600461121b565b61089f565b3480156103f857600080fd5b506101e661040736600461123d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102346108ba565b34801561044657600080fd5b5060055461045a906001600160a01b031681565b6040516001600160a01b03909116815260200161019c565b60606007805461048190611276565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90611276565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b6000336105128185856108d3565b5060019392505050565b60003361052a858285610a2b565b610535858585610abd565b506001949350505050565b6005546001600160a01b0316331461055757600080fd5b600655565b6005546001600160a01b0316331461057357600080fd5b600761057f84826112fe565b50600861058c83826112fe565b506009805460ff191660ff929092169190911790555050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061051290829086906105df9087906113d4565b6108d3565b6005546001600160a01b031633146105fb57600080fd5b6106058282610cd4565b5050565b6005546001600160a01b0316331461062057600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610656573d6000803e3d6000fd5b505050565b610666335b82610db3565b604051819060009061067e90839086906020016113ec565b604051602081830303815290604052905060008451602161069f91906113d4565b9050602060008260208501600073e9217bc70b7ed1f598ddd3199e80b093fa71124f5af1505050505050565b6106d433610660565b604051600160f81b602082015260218101829052606083901b6bffffffffffffffffffffffff1981166041830152829160009060550160408051601f198184030181529190529050603560206000828285018273b0bd02f6a392af548bdf1cfaee5dfa0eefcc8eab5af150505050505050565b60606008805461048190611276565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156107f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61053582868684036108d3565b600033610512818585610abd565b6005546060906001600160a01b0316331461082d57600080fd5b600080846001600160a01b031684604051610848919061141c565b600060405180830381855af49150503d8060008114610883576040519150601f19603f3d011682016040523d82523d6000602084013e610888565b606091505b50915091508161089757600080fd5b949350505050565b6005546001600160a01b031633146108b657600080fd5b9055565b6005546001600160a01b031633146108d157600080fd5b565b6001600160a01b03831661094e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b0382166109ca5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ab75781811015610aaa5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107ef565b610ab784848484036108d3565b50505050565b6001600160a01b038316610b395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b038216610bb55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b03831660009081526020819052604090205481811015610c445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610c7b9084906113d4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc791815260200190565b60405180910390a3610ab7565b6001600160a01b038216610d2a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060026000828254610d3c91906113d4565b90915550506001600160a01b03821660009081526020819052604081208054839290610d699084906113d4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610e2f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b03821660009081526020819052604090205481811015610ebe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610eed908490611438565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b83811015610f53578181015183820152602001610f3b565b83811115610ab75750506000910152565b60008151808452610f7c816020860160208601610f38565b601f01601f19169290920160200192915050565b602081526000610fa36020830184610f64565b9392505050565b6001600160a01b0381168114610fbf57600080fd5b50565b60008060408385031215610fd557600080fd5b8235610fe081610faa565b946020939093013593505050565b60008060006060848603121561100357600080fd5b833561100e81610faa565b9250602084013561101e81610faa565b929592945050506040919091013590565b60006020828403121561104157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261106f57600080fd5b813567ffffffffffffffff8082111561108a5761108a611048565b604051601f8301601f19908116603f011681019082821181831017156110b2576110b2611048565b816040528381528660208588010111156110cb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561110057600080fd5b833567ffffffffffffffff8082111561111857600080fd5b6111248783880161105e565b9450602086013591508082111561113a57600080fd5b506111478682870161105e565b925050604084013560ff8116811461115e57600080fd5b809150509250925092565b6000806040838503121561117c57600080fd5b823567ffffffffffffffff81111561119357600080fd5b61119f8582860161105e565b95602094909401359450505050565b6000602082840312156111c057600080fd5b8135610fa381610faa565b600080604083850312156111de57600080fd5b82356111e981610faa565b9150602083013567ffffffffffffffff81111561120557600080fd5b6112118582860161105e565b9150509250929050565b6000806040838503121561122e57600080fd5b50508035926020909101359150565b6000806040838503121561125057600080fd5b823561125b81610faa565b9150602083013561126b81610faa565b809150509250929050565b600181811c9082168061128a57607f821691505b6020821081036112aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561065657600081815260208120601f850160051c810160208610156112d75750805b601f850160051c820191505b818110156112f6578281556001016112e3565b505050505050565b815167ffffffffffffffff81111561131857611318611048565b61132c816113268454611276565b846112b0565b602080601f83116001811461136157600084156113495750858301515b600019600386901b1c1916600185901b1785556112f6565b600085815260208120601f198616915b8281101561139057888601518255948401946001909101908401611371565b50858210156113ae5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600082198211156113e7576113e76113be565b500190565b600160f81b81528260018201526000825161140e816021850160208701610f38565b919091016021019392505050565b6000825161142e818460208701610f38565b9190910192915050565b60008282101561144a5761144a6113be565b50039056fea2646970667358221220617a7f1eec249f7561e3da5140baf610622b0f51facf22dcb2c6ac53e0f73e4a64736f6c634300080f0033 \ No newline at end of file +0x60806040523480156200001157600080fd5b506040516200181a3803806200181a833981016040819052620000349162000186565b80600085856003620000478382620002b9565b506004620000568282620002b9565b5050600580546001600160a01b0319166001600160a01b0394909416939093179092556006555060076200008b8582620002b9565b5060086200009a8482620002b9565b50506009805460ff191660ff9290921691909117905550620003859050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000e157600080fd5b81516001600160401b0380821115620000fe57620000fe620000b9565b604051601f8301601f19908116603f01168101908282118183101715620001295762000129620000b9565b816040528381526020925086838588010111156200014657600080fd5b600091505b838210156200016a57858201830151818301840152908201906200014b565b838211156200017c5760008385830101525b9695505050505050565b600080600080608085870312156200019d57600080fd5b84516001600160401b0380821115620001b557600080fd5b620001c388838901620000cf565b95506020870151915080821115620001da57600080fd5b50620001e987828801620000cf565b935050604085015160ff811681146200020157600080fd5b60608601519092506001600160a01b03811681146200021f57600080fd5b939692955090935050565b600181811c908216806200023f57607f821691505b6020821081036200026057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b457600081815260208120601f850160051c810160208610156200028f5750805b601f850160051c820191505b81811015620002b0578281556001016200029b565b5050505b505050565b81516001600160401b03811115620002d557620002d5620000b9565b620002ed81620002e684546200022a565b8462000266565b602080601f8311600181146200032557600084156200030c5750858301515b600019600386901b1c1916600185901b178555620002b0565b600085815260208120601f198616915b82811015620003565788860151825594840194600190910190840162000335565b5085821015620003755787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61148580620003956000396000f3fe6080604052600436106101755760003560e01c80636b351848116100cb578063a9059cbb1161007f578063dd62ed3e11610059578063dd62ed3e146103ec578063f48ab4e014610432578063f851a4401461043a57600080fd5b8063a9059cbb14610399578063b8e9744c146103b9578063be831a2e146103cc57600080fd5b80638d32caf4116100b05780638d32caf41461034457806395d89b4114610364578063a457c2d71461037957600080fd5b80636b351848146102ee57806370a082311461030e57600080fd5b8063313ce5671161012d57806340c10f191161010757806340c10f1914610298578063530208f2146102b85780635c975abb146102d857600080fd5b8063313ce5671461023657806337d2c2f414610258578063395093511461027857600080fd5b806318160ddd1161015e57806318160ddd146101d557806323b872dd146101f45780632692c59f1461021457600080fd5b806306fdde031461017a578063095ea7b3146101a5575b600080fd5b34801561018657600080fd5b5061018f610472565b60405161019c9190610f90565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004610fc2565b610504565b604051901515815260200161019c565b3480156101e157600080fd5b506002545b60405190815260200161019c565b34801561020057600080fd5b506101c561020f366004610fee565b61051c565b34801561022057600080fd5b5061023461022f36600461102f565b610540565b005b34801561024257600080fd5b5060095460405160ff909116815260200161019c565b34801561026457600080fd5b506102346102733660046110eb565b61055c565b34801561028457600080fd5b506101c5610293366004610fc2565b6105a5565b3480156102a457600080fd5b506102346102b3366004610fc2565b6105e4565b3480156102c457600080fd5b506102346102d3366004610fc2565b610609565b3480156102e457600080fd5b506101e660065481565b3480156102fa57600080fd5b50610234610309366004611169565b61065b565b34801561031a57600080fd5b506101e66103293660046111ae565b6001600160a01b031660009081526020819052604090205490565b34801561035057600080fd5b5061023461035f366004610fc2565b6106cb565b34801561037057600080fd5b5061018f610747565b34801561038557600080fd5b506101c5610394366004610fc2565b610756565b3480156103a557600080fd5b506101c56103b4366004610fc2565b610805565b61018f6103c73660046111cb565b610813565b3480156103d857600080fd5b506102346103e736600461121b565b61089f565b3480156103f857600080fd5b506101e661040736600461123d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102346108ba565b34801561044657600080fd5b5060055461045a906001600160a01b031681565b6040516001600160a01b03909116815260200161019c565b60606007805461048190611276565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90611276565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b6000336105128185856108d3565b5060019392505050565b60003361052a858285610a2b565b610535858585610abd565b506001949350505050565b6005546001600160a01b0316331461055757600080fd5b600655565b6005546001600160a01b0316331461057357600080fd5b600761057f84826112fe565b50600861058c83826112fe565b506009805460ff191660ff929092169190911790555050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061051290829086906105df9087906113d4565b6108d3565b6005546001600160a01b031633146105fb57600080fd5b6106058282610cd4565b5050565b6005546001600160a01b0316331461062057600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610656573d6000803e3d6000fd5b505050565b610666335b82610db3565b604051819060009061067e90839086906020016113ec565b604051602081830303815290604052905060008451602161069f91906113d4565b9050602060008260208501600073e9217bc70b7ed1f598ddd3199e80b093fa71124f5af1505050505050565b6106d433610660565b604051600160f81b602082015260218101829052606083901b6bffffffffffffffffffffffff1981166041830152829160009060550160408051601f198184030181529190529050603560206000828285018273b0bd02f6a392af548bdf1cfaee5dfa0eefcc8eab5af150505050505050565b60606008805461048190611276565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156107f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61053582868684036108d3565b600033610512818585610abd565b6005546060906001600160a01b0316331461082d57600080fd5b600080846001600160a01b031684604051610848919061141c565b600060405180830381855af49150503d8060008114610883576040519150601f19603f3d011682016040523d82523d6000602084013e610888565b606091505b50915091508161089757600080fd5b949350505050565b6005546001600160a01b031633146108b657600080fd5b9055565b6005546001600160a01b031633146108d157600080fd5b565b6001600160a01b03831661094e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b0382166109ca5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ab75781811015610aaa5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107ef565b610ab784848484036108d3565b50505050565b6001600160a01b038316610b395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b038216610bb55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b03831660009081526020819052604090205481811015610c445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610c7b9084906113d4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc791815260200190565b60405180910390a3610ab7565b6001600160a01b038216610d2a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060026000828254610d3c91906113d4565b90915550506001600160a01b03821660009081526020819052604081208054839290610d699084906113d4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610e2f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b03821660009081526020819052604090205481811015610ebe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107ef565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610eed908490611438565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b83811015610f53578181015183820152602001610f3b565b83811115610ab75750506000910152565b60008151808452610f7c816020860160208601610f38565b601f01601f19169290920160200192915050565b602081526000610fa36020830184610f64565b9392505050565b6001600160a01b0381168114610fbf57600080fd5b50565b60008060408385031215610fd557600080fd5b8235610fe081610faa565b946020939093013593505050565b60008060006060848603121561100357600080fd5b833561100e81610faa565b9250602084013561101e81610faa565b929592945050506040919091013590565b60006020828403121561104157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261106f57600080fd5b813567ffffffffffffffff8082111561108a5761108a611048565b604051601f8301601f19908116603f011681019082821181831017156110b2576110b2611048565b816040528381528660208588010111156110cb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561110057600080fd5b833567ffffffffffffffff8082111561111857600080fd5b6111248783880161105e565b9450602086013591508082111561113a57600080fd5b506111478682870161105e565b925050604084013560ff8116811461115e57600080fd5b809150509250925092565b6000806040838503121561117c57600080fd5b823567ffffffffffffffff81111561119357600080fd5b61119f8582860161105e565b95602094909401359450505050565b6000602082840312156111c057600080fd5b8135610fa381610faa565b600080604083850312156111de57600080fd5b82356111e981610faa565b9150602083013567ffffffffffffffff81111561120557600080fd5b6112118582860161105e565b9150509250929050565b6000806040838503121561122e57600080fd5b50508035926020909101359150565b6000806040838503121561125057600080fd5b823561125b81610faa565b9150602083013561126b81610faa565b809150509250929050565b600181811c9082168061128a57607f821691505b6020821081036112aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561065657600081815260208120601f850160051c810160208610156112d75750805b601f850160051c820191505b818110156112f6578281556001016112e3565b505050505050565b815167ffffffffffffffff81111561131857611318611048565b61132c816113268454611276565b846112b0565b602080601f83116001811461136157600084156113495750858301515b600019600386901b1c1916600185901b1785556112f6565b600085815260208120601f198616915b8281101561139057888601518255948401946001909101908401611371565b50858210156113ae5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600082198211156113e7576113e76113be565b500190565b600160f81b81528260018201526000825161140e816021850160208701610f38565b919091016021019392505050565b6000825161142e818460208701610f38565b9190910192915050565b60008282101561144a5761144a6113be565b50039056fea26469706673582212207c21d7af109a1f9c7a3ce12a4788331457c5da1d0cfd105deb473a015e3731fc64736f6c634300080f0033 \ No newline at end of file diff --git a/etc/eth-contracts/res/EvmErc20V2.bin b/etc/eth-contracts/res/EvmErc20V2.bin index 17b1f2154dfccfbbe05c5027d393c376c28fc0d7..ed148de911e0c1c5b96e69c96d1a160a4769ac8c 100644 GIT binary patch delta 51 zcmV-30L=flFt;$U3>YigyRqmd%|k248 JLjVX505e~`6;uEK delta 51 zcmV-30L=flFt;$U3>Yh2$d?_t?!unM(3*-y-8B=z;$aJKnzq7nBUrY{fvbLGb8l>8 JLjVX505gis7a9Nn diff --git a/etc/eth-contracts/res/EvmErc20V2.hex b/etc/eth-contracts/res/EvmErc20V2.hex index 44ebc2bac..f797337fa 100644 --- a/etc/eth-contracts/res/EvmErc20V2.hex +++ b/etc/eth-contracts/res/EvmErc20V2.hex @@ -1 +1 @@ -0x60806040523480156200001157600080fd5b506040516200183738038062001837833981016040819052620000349162000186565b80600085856003620000478382620002b9565b506004620000568282620002b9565b5050600580546001600160a01b0319166001600160a01b0394909416939093179092556006555060076200008b8582620002b9565b5060086200009a8482620002b9565b50506009805460ff191660ff9290921691909117905550620003859050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000e157600080fd5b81516001600160401b0380821115620000fe57620000fe620000b9565b604051601f8301601f19908116603f01168101908282118183101715620001295762000129620000b9565b816040528381526020925086838588010111156200014657600080fd5b600091505b838210156200016a57858201830151818301840152908201906200014b565b838211156200017c5760008385830101525b9695505050505050565b600080600080608085870312156200019d57600080fd5b84516001600160401b0380821115620001b557600080fd5b620001c388838901620000cf565b95506020870151915080821115620001da57600080fd5b50620001e987828801620000cf565b935050604085015160ff811681146200020157600080fd5b60608601519092506001600160a01b03811681146200021f57600080fd5b939692955090935050565b600181811c908216806200023f57607f821691505b6020821081036200026057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b457600081815260208120601f850160051c810160208610156200028f5750805b601f850160051c820191505b81811015620002b0578281556001016200029b565b5050505b505050565b81516001600160401b03811115620002d557620002d5620000b9565b620002ed81620002e684546200022a565b8462000266565b602080601f8311600181146200032557600084156200030c5750858301515b600019600386901b1c1916600185901b178555620002b0565b600085815260208120601f198616915b82811015620003565788860151825594840194600190910190840162000335565b5085821015620003755787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6114a280620003956000396000f3fe6080604052600436106101755760003560e01c80636b351848116100cb578063a9059cbb1161007f578063dd62ed3e11610059578063dd62ed3e146103ec578063f48ab4e014610432578063f851a4401461043a57600080fd5b8063a9059cbb14610399578063b8e9744c146103b9578063be831a2e146103cc57600080fd5b80638d32caf4116100b05780638d32caf41461034457806395d89b4114610364578063a457c2d71461037957600080fd5b80636b351848146102ee57806370a082311461030e57600080fd5b8063313ce5671161012d57806340c10f191161010757806340c10f1914610298578063530208f2146102b85780635c975abb146102d857600080fd5b8063313ce5671461023657806337d2c2f414610258578063395093511461027857600080fd5b806318160ddd1161015e57806318160ddd146101d557806323b872dd146101f45780632692c59f1461021457600080fd5b806306fdde031461017a578063095ea7b3146101a5575b600080fd5b34801561018657600080fd5b5061018f610472565b60405161019c9190610f94565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004610fc6565b610504565b604051901515815260200161019c565b3480156101e157600080fd5b506002545b60405190815260200161019c565b34801561020057600080fd5b506101c561020f366004610ff2565b61051c565b34801561022057600080fd5b5061023461022f366004611033565b610540565b005b34801561024257600080fd5b5060095460405160ff909116815260200161019c565b34801561026457600080fd5b506102346102733660046110ef565b61055c565b34801561028457600080fd5b506101c5610293366004610fc6565b6105a5565b3480156102a457600080fd5b506102346102b3366004610fc6565b6105e4565b3480156102c457600080fd5b506102346102d3366004610fc6565b610609565b3480156102e457600080fd5b506101e660065481565b3480156102fa57600080fd5b5061023461030936600461116d565b61065b565b34801561031a57600080fd5b506101e66103293660046111b2565b6001600160a01b031660009081526020819052604090205490565b34801561035057600080fd5b5061023461035f366004610fc6565b6106ce565b34801561037057600080fd5b5061018f61074b565b34801561038557600080fd5b506101c5610394366004610fc6565b61075a565b3480156103a557600080fd5b506101c56103b4366004610fc6565b610809565b61018f6103c73660046111cf565b610817565b3480156103d857600080fd5b506102346103e736600461121f565b6108a3565b3480156103f857600080fd5b506101e6610407366004611241565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102346108be565b34801561044657600080fd5b5060055461045a906001600160a01b031681565b6040516001600160a01b03909116815260200161019c565b6060600780546104819061127a565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad9061127a565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b6000336105128185856108d7565b5060019392505050565b60003361052a858285610a2f565b610535858585610ac1565b506001949350505050565b6005546001600160a01b0316331461055757600080fd5b600655565b6005546001600160a01b0316331461057357600080fd5b600761057f8482611302565b50600861058c8382611302565b506009805460ff191660ff929092169190911790555050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061051290829086906105df9087906113d8565b6108d7565b6005546001600160a01b031633146105fb57600080fd5b6106058282610cd8565b5050565b6005546001600160a01b0316331461062057600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610656573d6000803e3d6000fd5b505050565b336106668183610db7565b6040518290600090610680908490849088906020016113f0565b60405160208183030381529060405290506000855160356106a191906113d8565b9050602060008260208501600073e9217bc70b7ed1f598ddd3199e80b093fa71124f5af150505050505050565b6106d83382610db7565b604051600160f81b602082015260218101829052606083901b6bffffffffffffffffffffffff1981166041830152829160009060550160408051601f198184030181529190529050603560206000828285018273b0bd02f6a392af548bdf1cfaee5dfa0eefcc8eab5af150505050505050565b6060600880546104819061127a565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156107fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61053582868684036108d7565b600033610512818585610ac1565b6005546060906001600160a01b0316331461083157600080fd5b600080846001600160a01b03168460405161084c9190611439565b600060405180830381855af49150503d8060008114610887576040519150601f19603f3d011682016040523d82523d6000602084013e61088c565b606091505b50915091508161089b57600080fd5b949350505050565b6005546001600160a01b031633146108ba57600080fd5b9055565b6005546001600160a01b031633146108d557600080fd5b565b6001600160a01b0383166109525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166109ce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610abb5781811015610aae5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107f3565b610abb84848484036108d7565b50505050565b6001600160a01b038316610b3d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03831660009081526020819052604090205481811015610c485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610c7f9084906113d8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ccb91815260200190565b60405180910390a3610abb565b6001600160a01b038216610d2e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107f3565b8060026000828254610d4091906113d8565b90915550506001600160a01b03821660009081526020819052604081208054839290610d6d9084906113d8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610e335760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03821660009081526020819052604090205481811015610ec25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610ef1908490611455565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b83811015610f57578181015183820152602001610f3f565b83811115610abb5750506000910152565b60008151808452610f80816020860160208601610f3c565b601f01601f19169290920160200192915050565b602081526000610fa76020830184610f68565b9392505050565b6001600160a01b0381168114610fc357600080fd5b50565b60008060408385031215610fd957600080fd5b8235610fe481610fae565b946020939093013593505050565b60008060006060848603121561100757600080fd5b833561101281610fae565b9250602084013561102281610fae565b929592945050506040919091013590565b60006020828403121561104557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261107357600080fd5b813567ffffffffffffffff8082111561108e5761108e61104c565b604051601f8301601f19908116603f011681019082821181831017156110b6576110b661104c565b816040528381528660208588010111156110cf57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561110457600080fd5b833567ffffffffffffffff8082111561111c57600080fd5b61112887838801611062565b9450602086013591508082111561113e57600080fd5b5061114b86828701611062565b925050604084013560ff8116811461116257600080fd5b809150509250925092565b6000806040838503121561118057600080fd5b823567ffffffffffffffff81111561119757600080fd5b6111a385828601611062565b95602094909401359450505050565b6000602082840312156111c457600080fd5b8135610fa781610fae565b600080604083850312156111e257600080fd5b82356111ed81610fae565b9150602083013567ffffffffffffffff81111561120957600080fd5b61121585828601611062565b9150509250929050565b6000806040838503121561123257600080fd5b50508035926020909101359150565b6000806040838503121561125457600080fd5b823561125f81610fae565b9150602083013561126f81610fae565b809150509250929050565b600181811c9082168061128e57607f821691505b6020821081036112ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561065657600081815260208120601f850160051c810160208610156112db5750805b601f850160051c820191505b818110156112fa578281556001016112e7565b505050505050565b815167ffffffffffffffff81111561131c5761131c61104c565b6113308161132a845461127a565b846112b4565b602080601f831160018114611365576000841561134d5750858301515b600019600386901b1c1916600185901b1785556112fa565b600085815260208120601f198616915b8281101561139457888601518255948401946001909101908401611375565b50858210156113b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600082198211156113eb576113eb6113c2565b500190565b600160f81b81526bffffffffffffffffffffffff198460601b1660018201528260158201526000825161142a816035850160208701610f3c565b91909101603501949350505050565b6000825161144b818460208701610f3c565b9190910192915050565b600082821015611467576114676113c2565b50039056fea26469706673582212205dc8971db9eec29ec5d09a8a46dd3513c1e2610b6f9ab6c2722358b6c981ab7e64736f6c634300080f0033 \ No newline at end of file +0x60806040523480156200001157600080fd5b506040516200183738038062001837833981016040819052620000349162000186565b80600085856003620000478382620002b9565b506004620000568282620002b9565b5050600580546001600160a01b0319166001600160a01b0394909416939093179092556006555060076200008b8582620002b9565b5060086200009a8482620002b9565b50506009805460ff191660ff9290921691909117905550620003859050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000e157600080fd5b81516001600160401b0380821115620000fe57620000fe620000b9565b604051601f8301601f19908116603f01168101908282118183101715620001295762000129620000b9565b816040528381526020925086838588010111156200014657600080fd5b600091505b838210156200016a57858201830151818301840152908201906200014b565b838211156200017c5760008385830101525b9695505050505050565b600080600080608085870312156200019d57600080fd5b84516001600160401b0380821115620001b557600080fd5b620001c388838901620000cf565b95506020870151915080821115620001da57600080fd5b50620001e987828801620000cf565b935050604085015160ff811681146200020157600080fd5b60608601519092506001600160a01b03811681146200021f57600080fd5b939692955090935050565b600181811c908216806200023f57607f821691505b6020821081036200026057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b457600081815260208120601f850160051c810160208610156200028f5750805b601f850160051c820191505b81811015620002b0578281556001016200029b565b5050505b505050565b81516001600160401b03811115620002d557620002d5620000b9565b620002ed81620002e684546200022a565b8462000266565b602080601f8311600181146200032557600084156200030c5750858301515b600019600386901b1c1916600185901b178555620002b0565b600085815260208120601f198616915b82811015620003565788860151825594840194600190910190840162000335565b5085821015620003755787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6114a280620003956000396000f3fe6080604052600436106101755760003560e01c80636b351848116100cb578063a9059cbb1161007f578063dd62ed3e11610059578063dd62ed3e146103ec578063f48ab4e014610432578063f851a4401461043a57600080fd5b8063a9059cbb14610399578063b8e9744c146103b9578063be831a2e146103cc57600080fd5b80638d32caf4116100b05780638d32caf41461034457806395d89b4114610364578063a457c2d71461037957600080fd5b80636b351848146102ee57806370a082311461030e57600080fd5b8063313ce5671161012d57806340c10f191161010757806340c10f1914610298578063530208f2146102b85780635c975abb146102d857600080fd5b8063313ce5671461023657806337d2c2f414610258578063395093511461027857600080fd5b806318160ddd1161015e57806318160ddd146101d557806323b872dd146101f45780632692c59f1461021457600080fd5b806306fdde031461017a578063095ea7b3146101a5575b600080fd5b34801561018657600080fd5b5061018f610472565b60405161019c9190610f94565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004610fc6565b610504565b604051901515815260200161019c565b3480156101e157600080fd5b506002545b60405190815260200161019c565b34801561020057600080fd5b506101c561020f366004610ff2565b61051c565b34801561022057600080fd5b5061023461022f366004611033565b610540565b005b34801561024257600080fd5b5060095460405160ff909116815260200161019c565b34801561026457600080fd5b506102346102733660046110ef565b61055c565b34801561028457600080fd5b506101c5610293366004610fc6565b6105a5565b3480156102a457600080fd5b506102346102b3366004610fc6565b6105e4565b3480156102c457600080fd5b506102346102d3366004610fc6565b610609565b3480156102e457600080fd5b506101e660065481565b3480156102fa57600080fd5b5061023461030936600461116d565b61065b565b34801561031a57600080fd5b506101e66103293660046111b2565b6001600160a01b031660009081526020819052604090205490565b34801561035057600080fd5b5061023461035f366004610fc6565b6106ce565b34801561037057600080fd5b5061018f61074b565b34801561038557600080fd5b506101c5610394366004610fc6565b61075a565b3480156103a557600080fd5b506101c56103b4366004610fc6565b610809565b61018f6103c73660046111cf565b610817565b3480156103d857600080fd5b506102346103e736600461121f565b6108a3565b3480156103f857600080fd5b506101e6610407366004611241565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102346108be565b34801561044657600080fd5b5060055461045a906001600160a01b031681565b6040516001600160a01b03909116815260200161019c565b6060600780546104819061127a565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad9061127a565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b6000336105128185856108d7565b5060019392505050565b60003361052a858285610a2f565b610535858585610ac1565b506001949350505050565b6005546001600160a01b0316331461055757600080fd5b600655565b6005546001600160a01b0316331461057357600080fd5b600761057f8482611302565b50600861058c8382611302565b506009805460ff191660ff929092169190911790555050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061051290829086906105df9087906113d8565b6108d7565b6005546001600160a01b031633146105fb57600080fd5b6106058282610cd8565b5050565b6005546001600160a01b0316331461062057600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610656573d6000803e3d6000fd5b505050565b336106668183610db7565b6040518290600090610680908490849088906020016113f0565b60405160208183030381529060405290506000855160356106a191906113d8565b9050602060008260208501600073e9217bc70b7ed1f598ddd3199e80b093fa71124f5af150505050505050565b6106d83382610db7565b604051600160f81b602082015260218101829052606083901b6bffffffffffffffffffffffff1981166041830152829160009060550160408051601f198184030181529190529050603560206000828285018273b0bd02f6a392af548bdf1cfaee5dfa0eefcc8eab5af150505050505050565b6060600880546104819061127a565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156107fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61053582868684036108d7565b600033610512818585610ac1565b6005546060906001600160a01b0316331461083157600080fd5b600080846001600160a01b03168460405161084c9190611439565b600060405180830381855af49150503d8060008114610887576040519150601f19603f3d011682016040523d82523d6000602084013e61088c565b606091505b50915091508161089b57600080fd5b949350505050565b6005546001600160a01b031633146108ba57600080fd5b9055565b6005546001600160a01b031633146108d557600080fd5b565b6001600160a01b0383166109525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166109ce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610abb5781811015610aae5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107f3565b610abb84848484036108d7565b50505050565b6001600160a01b038316610b3d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03831660009081526020819052604090205481811015610c485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610c7f9084906113d8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ccb91815260200190565b60405180910390a3610abb565b6001600160a01b038216610d2e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107f3565b8060026000828254610d4091906113d8565b90915550506001600160a01b03821660009081526020819052604081208054839290610d6d9084906113d8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610e335760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03821660009081526020819052604090205481811015610ec25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610ef1908490611455565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b83811015610f57578181015183820152602001610f3f565b83811115610abb5750506000910152565b60008151808452610f80816020860160208601610f3c565b601f01601f19169290920160200192915050565b602081526000610fa76020830184610f68565b9392505050565b6001600160a01b0381168114610fc357600080fd5b50565b60008060408385031215610fd957600080fd5b8235610fe481610fae565b946020939093013593505050565b60008060006060848603121561100757600080fd5b833561101281610fae565b9250602084013561102281610fae565b929592945050506040919091013590565b60006020828403121561104557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261107357600080fd5b813567ffffffffffffffff8082111561108e5761108e61104c565b604051601f8301601f19908116603f011681019082821181831017156110b6576110b661104c565b816040528381528660208588010111156110cf57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561110457600080fd5b833567ffffffffffffffff8082111561111c57600080fd5b61112887838801611062565b9450602086013591508082111561113e57600080fd5b5061114b86828701611062565b925050604084013560ff8116811461116257600080fd5b809150509250925092565b6000806040838503121561118057600080fd5b823567ffffffffffffffff81111561119757600080fd5b6111a385828601611062565b95602094909401359450505050565b6000602082840312156111c457600080fd5b8135610fa781610fae565b600080604083850312156111e257600080fd5b82356111ed81610fae565b9150602083013567ffffffffffffffff81111561120957600080fd5b61121585828601611062565b9150509250929050565b6000806040838503121561123257600080fd5b50508035926020909101359150565b6000806040838503121561125457600080fd5b823561125f81610fae565b9150602083013561126f81610fae565b809150509250929050565b600181811c9082168061128e57607f821691505b6020821081036112ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561065657600081815260208120601f850160051c810160208610156112db5750805b601f850160051c820191505b818110156112fa578281556001016112e7565b505050505050565b815167ffffffffffffffff81111561131c5761131c61104c565b6113308161132a845461127a565b846112b4565b602080601f831160018114611365576000841561134d5750858301515b600019600386901b1c1916600185901b1785556112fa565b600085815260208120601f198616915b8281101561139457888601518255948401946001909101908401611375565b50858210156113b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600082198211156113eb576113eb6113c2565b500190565b600160f81b81526bffffffffffffffffffffffff198460601b1660018201528260158201526000825161142a816035850160208701610f3c565b91909101603501949350505050565b6000825161144b818460208701610f3c565b9190910192915050565b600082821015611467576114676113c2565b50039056fea2646970667358221220dabbb1e826cd432bc7e41ccd3a33f475a52267161211c315b8e231bf499b8cb264736f6c634300080f0033 \ No newline at end of file From 1ab41270dba7b0275a8efa0e1779c412729e3142 Mon Sep 17 00:00:00 2001 From: Michael Birch Date: Thu, 26 Jan 2023 05:05:16 -0500 Subject: [PATCH 04/13] Chore: Relocate Engine parameter type definitions (#668) --- engine-types/Cargo.toml | 5 + engine-types/src/lib.rs | 7 +- engine-types/src/parameters/engine.rs | 227 +++++++++++++++++ .../src/{parameters.rs => parameters/mod.rs} | 2 + engine/src/engine.rs | 17 +- engine/src/errors.rs | 10 +- engine/src/parameters.rs | 239 +----------------- 7 files changed, 264 insertions(+), 243 deletions(-) create mode 100644 engine-types/src/parameters/engine.rs rename engine-types/src/{parameters.rs => parameters/mod.rs} (99%) diff --git a/engine-types/Cargo.toml b/engine-types/Cargo.toml index aee2ca266..53398d761 100644 --- a/engine-types/Cargo.toml +++ b/engine-types/Cargo.toml @@ -24,4 +24,9 @@ rand = "0.8.5" [features] default = ["std"] std = ["borsh/std", "hex/std", "primitive-types/std"] +# `primitive-types/std` is excluded because its `std` implementation includes a transitive +# dependency on `getrandom` which uses OS call to obtain entropy. Such calls are not +# available in Wasm, therefore we cannot use the `std` implementation of `primitive-types` +# in other Rust contracts. +contracts-std = ["borsh/std", "hex/std"] impl-serde = ["primitive-types/impl-serde", "serde"] diff --git a/engine-types/src/lib.rs b/engine-types/src/lib.rs index da10bbe53..fb1b5fb9a 100644 --- a/engine-types/src/lib.rs +++ b/engine-types/src/lib.rs @@ -1,5 +1,8 @@ -#![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(alloc_error_handler))] +#![cfg_attr(not(any(feature = "std", feature = "contracts-std")), no_std)] +#![cfg_attr( + not(any(feature = "std", feature = "contracts-std")), + feature(alloc_error_handler) +)] #![cfg_attr(feature = "log", feature(panic_info_message))] #![deny(clippy::as_conversions)] diff --git a/engine-types/src/parameters/engine.rs b/engine-types/src/parameters/engine.rs new file mode 100644 index 000000000..897b020ca --- /dev/null +++ b/engine-types/src/parameters/engine.rs @@ -0,0 +1,227 @@ +use crate::{ + account_id::AccountId, + types::{Address, RawH256, RawU256, WeiU256}, + Vec, +}; +use borsh::{BorshDeserialize, BorshSerialize}; + +#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct ResultLog { + pub address: Address, + pub topics: Vec, + pub data: Vec, +} + +/// The status of a transaction. +#[derive(Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub enum TransactionStatus { + Succeed(Vec), + Revert(Vec), + OutOfGas, + OutOfFund, + OutOfOffset, + CallTooDeep, +} + +impl TransactionStatus { + pub fn is_ok(&self) -> bool { + matches!(*self, TransactionStatus::Succeed(_)) + } + + pub fn is_revert(&self) -> bool { + matches!(*self, TransactionStatus::Revert(_)) + } + + pub fn is_fail(&self) -> bool { + *self == TransactionStatus::OutOfGas + || *self == TransactionStatus::OutOfFund + || *self == TransactionStatus::OutOfOffset + || *self == TransactionStatus::CallTooDeep + } +} + +impl AsRef<[u8]> for TransactionStatus { + fn as_ref(&self) -> &[u8] { + match self { + Self::Succeed(_) => b"SUCCESS", + Self::Revert(_) => errors::ERR_REVERT, + Self::OutOfFund => errors::ERR_OUT_OF_FUNDS, + Self::OutOfGas => errors::ERR_OUT_OF_GAS, + Self::OutOfOffset => errors::ERR_OUT_OF_OFFSET, + Self::CallTooDeep => errors::ERR_CALL_TOO_DEEP, + } + } +} + +/// Borsh-encoded parameters for the `call`, `call_with_args`, `deploy_code`, +/// and `deploy_with_input` methods. +#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct SubmitResult { + version: u8, + pub status: TransactionStatus, + pub gas_used: u64, + pub logs: Vec, +} + +impl SubmitResult { + /// Must be incremented when making breaking changes to the SubmitResult ABI. + /// The current value of 7 is chosen because previously a `TransactionStatus` object + /// was first in the serialization, which is an enum with less than 7 variants. + /// Therefore, no previous `SubmitResult` would have began with a leading 7 byte, + /// and this can be used to distinguish the new ABI (with version byte) from the old. + const VERSION: u8 = 7; + + pub fn new(status: TransactionStatus, gas_used: u64, logs: Vec) -> Self { + Self { + version: Self::VERSION, + status, + gas_used, + logs, + } + } +} + +/// Borsh-encoded parameters for the engine `call` function. +#[derive(BorshSerialize, BorshDeserialize, Debug, PartialEq, Eq, Clone)] +pub struct FunctionCallArgsV2 { + pub contract: Address, + /// Wei compatible Borsh-encoded value field to attach an ETH balance to the transaction + pub value: WeiU256, + pub input: Vec, +} + +/// Legacy Borsh-encoded parameters for the engine `call` function, to provide backward type compatibility +#[derive(BorshSerialize, BorshDeserialize, Debug, PartialEq, Eq, Clone)] +pub struct FunctionCallArgsV1 { + pub contract: Address, + pub input: Vec, +} + +/// Deserialized values from bytes to current or legacy Borsh-encoded parameters +/// for passing to the engine `call` function, and to provide backward type compatibility +#[derive(BorshSerialize, BorshDeserialize, Debug, PartialEq, Eq, Clone)] +pub enum CallArgs { + V2(FunctionCallArgsV2), + V1(FunctionCallArgsV1), +} + +impl CallArgs { + pub fn deserialize(bytes: &[u8]) -> Option { + // For handling new input format (wrapped into call args enum) - for data structures with new arguments, + // made for flexibility and extensibility. + if let Ok(value) = Self::try_from_slice(bytes) { + Some(value) + // Fallback, for handling old input format, + // i.e. input, formed as a raw (not wrapped into call args enum) data structure with legacy arguments, + // made for backward compatibility. + } else if let Ok(value) = FunctionCallArgsV1::try_from_slice(bytes) { + Some(Self::V1(value)) + // Dealing with unrecognized input should be handled and result as an exception in a call site. + } else { + None + } + } +} + +/// Borsh-encoded parameters for the `view` function. +#[derive(BorshSerialize, BorshDeserialize, Debug, Eq, PartialEq)] +pub struct ViewCallArgs { + pub sender: Address, + pub address: Address, + pub amount: RawU256, + pub input: Vec, +} + +/// Borsh-encoded parameters for `deploy_erc20_token` function. +#[derive(BorshSerialize, BorshDeserialize, Debug, Eq, PartialEq, Clone)] +pub struct DeployErc20TokenArgs { + pub nep141: AccountId, +} + +/// Borsh-encoded parameters for `get_erc20_from_nep141` function. +pub type GetErc20FromNep141CallArgs = DeployErc20TokenArgs; + +/// Borsh-encoded parameters for the `get_storage_at` function. +#[derive(BorshSerialize, BorshDeserialize)] +pub struct GetStorageAtArgs { + pub address: Address, + pub key: RawH256, +} + +pub mod errors { + pub const ERR_REVERT: &[u8; 10] = b"ERR_REVERT"; + pub const ERR_OUT_OF_FUNDS: &[u8; 16] = b"ERR_OUT_OF_FUNDS"; + pub const ERR_CALL_TOO_DEEP: &[u8; 17] = b"ERR_CALL_TOO_DEEP"; + pub const ERR_OUT_OF_OFFSET: &[u8; 17] = b"ERR_OUT_OF_OFFSET"; + pub const ERR_OUT_OF_GAS: &[u8; 14] = b"ERR_OUT_OF_GAS"; +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_view_call_fail() { + let bytes = [0; 71]; + let _ = ViewCallArgs::try_from_slice(&bytes).unwrap_err(); + } + + #[test] + fn test_roundtrip_view_call() { + let x = ViewCallArgs { + sender: Address::from_array([1; 20]), + address: Address::from_array([2; 20]), + amount: [3; 32], + input: vec![1, 2, 3], + }; + let bytes = x.try_to_vec().unwrap(); + let res = ViewCallArgs::try_from_slice(&bytes).unwrap(); + assert_eq!(x, res); + } + + #[test] + fn test_call_args_deserialize() { + let new_input = FunctionCallArgsV2 { + contract: Address::from_array([0u8; 20]), + value: WeiU256::default(), + input: Vec::new(), + }; + let legacy_input = FunctionCallArgsV1 { + contract: Address::from_array([0u8; 20]), + input: Vec::new(), + }; + + // Parsing bytes in a new input format - data structures (wrapped into call args enum) with new arguments, + // made for flexibility and extensibility. + + // Using new input format (wrapped into call args enum) and data structure with new argument (`value` field). + let input_bytes = CallArgs::V2(new_input.clone()).try_to_vec().unwrap(); + let parsed_data = CallArgs::deserialize(&input_bytes); + assert_eq!(parsed_data, Some(CallArgs::V2(new_input.clone()))); + + // Using new input format (wrapped into call args enum) and old data structure with legacy arguments, + // this is allowed for compatibility reason. + let input_bytes = CallArgs::V1(legacy_input.clone()).try_to_vec().unwrap(); + let parsed_data = CallArgs::deserialize(&input_bytes); + assert_eq!(parsed_data, Some(CallArgs::V1(legacy_input.clone()))); + + // Parsing bytes in an old input format - raw data structure (not wrapped into call args enum) with legacy arguments, + // made for backward compatibility. + + // Using old input format (not wrapped into call args enum) - raw data structure with legacy arguments. + let input_bytes = legacy_input.try_to_vec().unwrap(); + let parsed_data = CallArgs::deserialize(&input_bytes); + assert_eq!(parsed_data, Some(CallArgs::V1(legacy_input))); + + // Using old input format (not wrapped into call args enum) - raw data structure with new argument (`value` field). + // Data structures with new arguments allowed only in new input format for future extensibility reason. + // Raw data structure (old input format) allowed only with legacy arguments for backward compatibility reason. + // Unrecognized input should be handled and result as an exception in a call site. + let input_bytes = new_input.try_to_vec().unwrap(); + let parsed_data = CallArgs::deserialize(&input_bytes); + assert_eq!(parsed_data, None); + } +} diff --git a/engine-types/src/parameters.rs b/engine-types/src/parameters/mod.rs similarity index 99% rename from engine-types/src/parameters.rs rename to engine-types/src/parameters/mod.rs index 5cd6c9eb4..54ab9e946 100644 --- a/engine-types/src/parameters.rs +++ b/engine-types/src/parameters/mod.rs @@ -4,6 +4,8 @@ use crate::*; use borsh::maybestd::io; use borsh::{BorshDeserialize, BorshSerialize}; +pub mod engine; + #[must_use] #[derive(Debug, BorshSerialize, BorshDeserialize)] pub enum PromiseArgs { diff --git a/engine/src/engine.rs b/engine/src/engine.rs index 7901888c4..a023973ef 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -1442,7 +1442,7 @@ where // The exit precompiles do produce externally consumable logs in // addition to the promises. The external logs have a non-empty // `topics` field. - Some(log.into()) + Some(evm_log_to_result_log(log)) } } else if log.address == cross_contract_call::ADDRESS.raw() { if log.topics[0] == cross_contract_call::AMOUNT_TOPIC { @@ -1464,12 +1464,25 @@ where // do not pass on these "internal logs" to caller None } else { - Some(log.into()) + Some(evm_log_to_result_log(log)) } }) .collect() } +fn evm_log_to_result_log(log: Log) -> ResultLog { + let topics = log + .topics + .into_iter() + .map(|topic| topic.0) + .collect::>(); + ResultLog { + address: Address::new(log.address), + topics, + data: log.data, + } +} + unsafe fn schedule_promise( handler: &mut P, promise: &PromiseCreateArgs, diff --git a/engine/src/errors.rs b/engine/src/errors.rs index 57993de31..c1afdb66a 100644 --- a/engine/src/errors.rs +++ b/engine/src/errors.rs @@ -1,3 +1,7 @@ +pub use aurora_engine_types::parameters::engine::errors::{ + ERR_CALL_TOO_DEEP, ERR_OUT_OF_FUNDS, ERR_OUT_OF_GAS, ERR_OUT_OF_OFFSET, ERR_REVERT, +}; + pub const ERR_NOT_A_JSON_TYPE: &[u8; 19] = b"ERR_NOT_A_JSON_TYPE"; pub const ERR_JSON_MISSING_VALUE: &[u8; 22] = b"ERR_JSON_MISSING_VALUE"; pub const ERR_FAILED_PARSE_U8: &[u8; 19] = b"ERR_FAILED_PARSE_U8"; @@ -32,11 +36,8 @@ pub const ERR_STACK_OVERFLOW: &[u8; 18] = b"ERR_STACK_OVERFLOW"; pub const ERR_INVALID_JUMP: &[u8; 16] = b"ERR_INVALID_JUMP"; pub const ERR_INVALID_RANGE: &[u8; 17] = b"ERR_INVALID_RANGE"; pub const ERR_DESIGNATED_INVALID: &[u8; 22] = b"ERR_DESIGNATED_INVALID"; -pub const ERR_CALL_TOO_DEEP: &[u8; 17] = b"ERR_CALL_TOO_DEEP"; pub const ERR_CREATE_COLLISION: &[u8; 20] = b"ERR_CREATE_COLLISION"; pub const ERR_CREATE_CONTRACT_LIMIT: &[u8; 25] = b"ERR_CREATE_CONTRACT_LIMIT"; -pub const ERR_OUT_OF_OFFSET: &[u8; 17] = b"ERR_OUT_OF_OFFSET"; -pub const ERR_OUT_OF_GAS: &[u8; 14] = b"ERR_OUT_OF_GAS"; pub const ERR_OUT_OF_FUND: &[u8; 15] = b"ERR_OUT_OF_FUND"; pub const ERR_NOT_SUPPORTED: &[u8; 17] = b"ERR_NOT_SUPPORTED"; pub const ERR_UNHANDLED_INTERRUPT: &[u8; 23] = b"ERR_UNHANDLED_INTERRUPT"; @@ -84,6 +85,3 @@ pub const ERR_FAILED_UNREGISTER_ACCOUNT_POSITIVE_BALANCE: &[u8; 46] = b"ERR_FAILED_UNREGISTER_ACCOUNT_POSITIVE_BALANCE"; pub const ERR_ACCOUNTS_COUNTER_OVERFLOW: &str = "ERR_ACCOUNTS_COUNTER_OVERFLOW"; - -pub const ERR_REVERT: &[u8; 10] = b"ERR_REVERT"; -pub const ERR_OUT_OF_FUNDS: &[u8; 16] = b"ERR_OUT_OF_FUNDS"; diff --git a/engine/src/parameters.rs b/engine/src/parameters.rs index 4a6ecfa73..cd1181e52 100644 --- a/engine/src/parameters.rs +++ b/engine/src/parameters.rs @@ -1,15 +1,17 @@ use crate::admin_controlled::PausedMask; -use crate::errors; use crate::fungible_token::FungibleTokenMetadata; use crate::json::{JsonError, JsonValue}; use crate::prelude::account_id::AccountId; use crate::prelude::{ - format, Address, Balance, BorshDeserialize, BorshSerialize, RawH256, RawU256, String, Vec, - WeiU256, + format, Address, Balance, BorshDeserialize, BorshSerialize, RawU256, String, Vec, }; use crate::proof::Proof; +pub use aurora_engine_types::parameters::engine::{ + CallArgs, DeployErc20TokenArgs, FunctionCallArgsV1, FunctionCallArgsV2, + GetErc20FromNep141CallArgs, GetStorageAtArgs, ResultLog, SubmitResult, TransactionStatus, + ViewCallArgs, +}; use aurora_engine_types::types::{Fee, NEP141Wei, Yocto}; -use evm::backend::Log; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; @@ -28,168 +30,6 @@ pub struct NewCallArgs { pub upgrade_delay_blocks: u64, } -/// Borsh-encoded log for use in a `SubmitResult`. -#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct ResultLog { - pub address: Address, - pub topics: Vec, - pub data: Vec, -} - -impl From for ResultLog { - fn from(log: Log) -> Self { - let topics = log - .topics - .into_iter() - .map(|topic| topic.0) - .collect::>(); - ResultLog { - address: Address::new(log.address), - topics, - data: log.data, - } - } -} - -/// The status of a transaction. -#[derive(Debug, Clone, BorshSerialize, BorshDeserialize, PartialEq, Eq)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub enum TransactionStatus { - Succeed(Vec), - Revert(Vec), - OutOfGas, - OutOfFund, - OutOfOffset, - CallTooDeep, -} - -impl TransactionStatus { - pub fn is_ok(&self) -> bool { - matches!(*self, TransactionStatus::Succeed(_)) - } - - pub fn is_revert(&self) -> bool { - matches!(*self, TransactionStatus::Revert(_)) - } - - pub fn is_fail(&self) -> bool { - *self == TransactionStatus::OutOfGas - || *self == TransactionStatus::OutOfFund - || *self == TransactionStatus::OutOfOffset - || *self == TransactionStatus::CallTooDeep - } -} - -impl AsRef<[u8]> for TransactionStatus { - fn as_ref(&self) -> &[u8] { - match self { - Self::Succeed(_) => b"SUCCESS", - Self::Revert(_) => errors::ERR_REVERT, - Self::OutOfFund => errors::ERR_OUT_OF_FUNDS, - Self::OutOfGas => errors::ERR_OUT_OF_GAS, - Self::OutOfOffset => errors::ERR_OUT_OF_OFFSET, - Self::CallTooDeep => errors::ERR_CALL_TOO_DEEP, - } - } -} - -/// Borsh-encoded parameters for the `call`, `call_with_args`, `deploy_code`, -/// and `deploy_with_input` methods. -#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct SubmitResult { - version: u8, - pub status: TransactionStatus, - pub gas_used: u64, - pub logs: Vec, -} - -impl SubmitResult { - /// Must be incremented when making breaking changes to the SubmitResult ABI. - /// The current value of 7 is chosen because previously a `TransactionStatus` object - /// was first in the serialization, which is an enum with less than 7 variants. - /// Therefore, no previous `SubmitResult` would have began with a leading 7 byte, - /// and this can be used to distinguish the new ABI (with version byte) from the old. - const VERSION: u8 = 7; - - pub fn new(status: TransactionStatus, gas_used: u64, logs: Vec) -> Self { - Self { - version: Self::VERSION, - status, - gas_used, - logs, - } - } -} - -/// Borsh-encoded parameters for the engine `call` function. -#[derive(BorshSerialize, BorshDeserialize, Debug, PartialEq, Eq, Clone)] -pub struct FunctionCallArgsV2 { - pub contract: Address, - /// Wei compatible Borsh-encoded value field to attach an ETH balance to the transaction - pub value: WeiU256, - pub input: Vec, -} - -/// Legacy Borsh-encoded parameters for the engine `call` function, to provide backward type compatibility -#[derive(BorshSerialize, BorshDeserialize, Debug, PartialEq, Eq, Clone)] -pub struct FunctionCallArgsV1 { - pub contract: Address, - pub input: Vec, -} - -/// Deserialized values from bytes to current or legacy Borsh-encoded parameters -/// for passing to the engine `call` function, and to provide backward type compatibility -#[derive(BorshSerialize, BorshDeserialize, Debug, PartialEq, Eq, Clone)] -pub enum CallArgs { - V2(FunctionCallArgsV2), - V1(FunctionCallArgsV1), -} - -impl CallArgs { - pub fn deserialize(bytes: &[u8]) -> Option { - // For handling new input format (wrapped into call args enum) - for data structures with new arguments, - // made for flexibility and extensibility. - if let Ok(value) = Self::try_from_slice(bytes) { - Some(value) - // Fallback, for handling old input format, - // i.e. input, formed as a raw (not wrapped into call args enum) data structure with legacy arguments, - // made for backward compatibility. - } else if let Ok(value) = FunctionCallArgsV1::try_from_slice(bytes) { - Some(Self::V1(value)) - // Dealing with unrecognized input should be handled and result as an exception in a call site. - } else { - None - } - } -} - -/// Borsh-encoded parameters for the `view` function. -#[derive(BorshSerialize, BorshDeserialize, Debug, Eq, PartialEq)] -pub struct ViewCallArgs { - pub sender: Address, - pub address: Address, - pub amount: RawU256, - pub input: Vec, -} - -/// Borsh-encoded parameters for `deploy_erc20_token` function. -#[derive(BorshSerialize, BorshDeserialize, Debug, Eq, PartialEq, Clone)] -pub struct DeployErc20TokenArgs { - pub nep141: AccountId, -} - -/// Borsh-encoded parameters for `get_erc20_from_nep141` function. -pub type GetErc20FromNep141CallArgs = DeployErc20TokenArgs; - -/// Borsh-encoded parameters for the `get_storage_at` function. -#[derive(BorshSerialize, BorshDeserialize)] -pub struct GetStorageAtArgs { - pub address: Address, - pub key: RawH256, -} - /// Borsh-encoded (genesis) account balance used by the `begin_chain` function. #[cfg(feature = "evm_bully")] #[derive(BorshSerialize, BorshDeserialize)] @@ -525,70 +365,3 @@ pub mod error { } } } - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_view_call_fail() { - let bytes = [0; 71]; - let _ = ViewCallArgs::try_from_slice(&bytes).unwrap_err(); - } - - #[test] - fn test_roundtrip_view_call() { - let x = ViewCallArgs { - sender: Address::from_array([1; 20]), - address: Address::from_array([2; 20]), - amount: [3; 32], - input: vec![1, 2, 3], - }; - let bytes = x.try_to_vec().unwrap(); - let res = ViewCallArgs::try_from_slice(&bytes).unwrap(); - assert_eq!(x, res); - } - - #[test] - fn test_call_args_deserialize() { - let new_input = FunctionCallArgsV2 { - contract: Address::from_array([0u8; 20]), - value: WeiU256::default(), - input: Vec::new(), - }; - let legacy_input = FunctionCallArgsV1 { - contract: Address::from_array([0u8; 20]), - input: Vec::new(), - }; - - // Parsing bytes in a new input format - data structures (wrapped into call args enum) with new arguments, - // made for flexibility and extensibility. - - // Using new input format (wrapped into call args enum) and data structure with new argument (`value` field). - let input_bytes = CallArgs::V2(new_input.clone()).try_to_vec().unwrap(); - let parsed_data = CallArgs::deserialize(&input_bytes); - assert_eq!(parsed_data, Some(CallArgs::V2(new_input.clone()))); - - // Using new input format (wrapped into call args enum) and old data structure with legacy arguments, - // this is allowed for compatibility reason. - let input_bytes = CallArgs::V1(legacy_input.clone()).try_to_vec().unwrap(); - let parsed_data = CallArgs::deserialize(&input_bytes); - assert_eq!(parsed_data, Some(CallArgs::V1(legacy_input.clone()))); - - // Parsing bytes in an old input format - raw data structure (not wrapped into call args enum) with legacy arguments, - // made for backward compatibility. - - // Using old input format (not wrapped into call args enum) - raw data structure with legacy arguments. - let input_bytes = legacy_input.try_to_vec().unwrap(); - let parsed_data = CallArgs::deserialize(&input_bytes); - assert_eq!(parsed_data, Some(CallArgs::V1(legacy_input))); - - // Using old input format (not wrapped into call args enum) - raw data structure with new argument (`value` field). - // Data structures with new arguments allowed only in new input format for future extensibility reason. - // Raw data structure (old input format) allowed only with legacy arguments for backward compatibility reason. - // Unrecognized input should be handled and result as an exception in a call site. - let input_bytes = new_input.try_to_vec().unwrap(); - let parsed_data = CallArgs::deserialize(&input_bytes); - assert_eq!(parsed_data, None); - } -} From 19d63c247cbdb35dc76394a5388225d56387cfc5 Mon Sep 17 00:00:00 2001 From: Alexey Lapitsky Date: Thu, 26 Jan 2023 11:06:19 +0100 Subject: [PATCH 05/13] chore(lint): switch from solium to solhint (#667) --- etc/eth-contracts/.solhint.json | 8 + etc/eth-contracts/.solhintignore | 1 + etc/eth-contracts/package.json | 6 +- etc/eth-contracts/yarn.lock | 1155 +++++++++++++----------------- 4 files changed, 514 insertions(+), 656 deletions(-) create mode 100644 etc/eth-contracts/.solhint.json create mode 100644 etc/eth-contracts/.solhintignore diff --git a/etc/eth-contracts/.solhint.json b/etc/eth-contracts/.solhint.json new file mode 100644 index 000000000..ce11a730f --- /dev/null +++ b/etc/eth-contracts/.solhint.json @@ -0,0 +1,8 @@ +{ + "extends": "solhint:recommended", + "rules": { + "compiler-version": ["error", "^0.8.0"], + "func-visibility": ["warn", { "ignoreConstructors": true }], + "not-rely-on-time": false + } +} diff --git a/etc/eth-contracts/.solhintignore b/etc/eth-contracts/.solhintignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/etc/eth-contracts/.solhintignore @@ -0,0 +1 @@ +node_modules diff --git a/etc/eth-contracts/package.json b/etc/eth-contracts/package.json index da735939d..fe1caf98e 100644 --- a/etc/eth-contracts/package.json +++ b/etc/eth-contracts/package.json @@ -22,8 +22,8 @@ "hardhat-storage-layout": "^0.1.6", "rainbow-bridge-lib": "^3.0.0", "solc": "0.8.15", + "solhint": "^3.3.8", "solidity-coverage": "^0.7.21", - "solium": "^1.2.5", "typescript": ">=3.7.0" }, "scripts": { @@ -33,8 +33,8 @@ "coverage": "hardhat coverage", "lint:js": "eslint .", "lint:js:fix": "eslint . --fix", - "lint:sol": "solium -d .", - "lint:sol:fix": "solium -d . --fix", + "lint:sol": "solhint 'contracts/**/*.sol'", + "lint:sol:fix": "solhint --fix 'contracts/**/*.sol'", "lint": "yarn lint:js && yarn lint:sol", "lint:fix": "yarn lint:js:fix && yarn lint:sol:fix" } diff --git a/etc/eth-contracts/yarn.lock b/etc/eth-contracts/yarn.lock index 2e425e2e9..b3c013f20 100644 --- a/etc/eth-contracts/yarn.lock +++ b/etc/eth-contracts/yarn.lock @@ -2,6 +2,27 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@ensdomains/ens@^0.4.4": version "0.4.5" resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" @@ -1401,6 +1422,13 @@ dependencies: antlr4ts "^0.5.0-alpha.4" +"@solidity-parser/parser@^0.14.5": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -1683,11 +1711,16 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.3.2: +acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn@^6.0.7: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^8.7.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" @@ -1728,17 +1761,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^5.2.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1763,6 +1786,11 @@ ansi-colors@4.1.1, ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1773,12 +1801,12 @@ ansi-escapes@^4.3.0: ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: version "4.1.0" @@ -1814,6 +1842,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +antlr4@4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" + integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== + antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" @@ -1824,14 +1857,6 @@ any-promise@1.3.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -1852,19 +1877,12 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -1872,7 +1890,7 @@ arr-flatten@^1.0.1, arr-flatten@^1.1.0: arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== array-back@^1.0.3, array-back@^1.0.4: version "1.0.4" @@ -1914,15 +1932,10 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.flat@^1.2.5: version "1.3.0" @@ -1969,12 +1982,17 @@ assertion-error@^1.1.0: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -async-each@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +ast-parents@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" + integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: version "0.2.4" @@ -2619,23 +2637,11 @@ bignumber.js@^9.0.0: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bip39@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" @@ -2721,15 +2727,6 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -2768,11 +2765,6 @@ browser-level@^1.0.1: module-error "^1.0.2" run-parallel-limit "^1.1.0" -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -3000,6 +2992,25 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -3018,11 +3029,6 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3086,7 +3092,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3129,6 +3135,11 @@ change-case@^4.1.1: snake-case "^3.0.4" tslib "^2.0.3" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + "charenc@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -3176,22 +3187,6 @@ chokidar@3.5.3: optionalDependencies: fsevents "~2.3.2" -chokidar@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chokidar@^3.4.0: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" @@ -3267,6 +3262,13 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + cli-table3@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" @@ -3277,6 +3279,11 @@ cli-table3@^0.5.0: optionalDependencies: colors "^1.1.2" +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -3286,15 +3293,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -3325,20 +3323,15 @@ clone@2.1.2, clone@^2.0.0: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -3393,17 +3386,17 @@ command-line-args@^4.0.7: find-replace "^1.0.3" typical "^2.6.1" -commander@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== +commander@2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== commander@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.8.1, commander@^2.9.0: +commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3512,7 +3505,7 @@ cookiejar@^2.1.1: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-pure@^3.0.1: version "3.11.2" @@ -3524,11 +3517,16 @@ core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.1: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -3537,6 +3535,16 @@ cors@^2.8.1: object-assign "^4" vary "^1" +cosmiconfig@^5.0.7: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + crc-32@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" @@ -3584,15 +3592,6 @@ cross-fetch@^2.1.0, cross-fetch@^2.1.1: node-fetch "^2.6.7" whatwg-fetch "^2.0.4" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3667,13 +3666,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3688,7 +3680,7 @@ debug@4, debug@^4.1.1: dependencies: ms "2.1.2" -debug@4.3.4, debug@^4.3.2, debug@^4.3.3: +debug@4.3.4, debug@^4.0.1, debug@^4.3.2, debug@^4.3.3: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3713,9 +3705,9 @@ decamelize@^4.0.0: integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== decompress-response@^3.2.0, decompress-response@^3.3.0: version "3.3.0" @@ -3844,14 +3836,14 @@ define-properties@^1.1.4: define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" @@ -3911,12 +3903,7 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" -diff@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" - integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== - -diff@3.5.0, diff@^3.5.0: +diff@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== @@ -4094,11 +4081,6 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -eol@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" - integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== - errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -4106,7 +4088,7 @@ errno@~0.1.1: dependencies: prr "~1.0.1" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -4334,6 +4316,14 @@ eslint-plugin-promise@^6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" @@ -4342,6 +4332,13 @@ eslint-scope@^7.1.1: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-utils@^1.3.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -4356,7 +4353,7 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -4371,6 +4368,48 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint@^5.6.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + eslint@^8.18.0: version "8.18.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" @@ -4412,6 +4451,15 @@ eslint@^8.18.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + espree@^9.3.2: version "9.3.2" resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" @@ -4431,14 +4479,14 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.0.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" -esrecurse@^4.3.0: +esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -4450,6 +4498,11 @@ estraverse@^1.9.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" @@ -5062,35 +5115,15 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -5100,13 +5133,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - express@^4.14.0: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -5153,14 +5179,14 @@ ext@^1.1.2: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -5170,12 +5196,14 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: - is-extglob "^1.0.0" + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" extglob@^2.0.4: version "2.0.4" @@ -5208,16 +5236,16 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^3.0.3: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" @@ -5261,6 +5289,20 @@ fetch-ponyfill@^4.0.0: dependencies: node-fetch "~1.7.1" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5283,31 +5325,10 @@ file-type@^6.1.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -5368,7 +5389,7 @@ find-up@^1.0.0: find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" @@ -5387,6 +5408,15 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5407,6 +5437,11 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + flatted@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" @@ -5429,17 +5464,10 @@ for-each@^0.3.3, for-each@~0.3.3: dependencies: is-callable "^1.1.3" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== foreach@^2.0.5: version "2.0.5" @@ -5496,7 +5524,7 @@ fp-ts@^1.0.0: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" @@ -5565,14 +5593,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^1.0.0: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@~2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" @@ -5694,7 +5714,7 @@ get-stream@^2.2.0: get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== get-stream@^4.1.0: version "4.1.0" @@ -5721,7 +5741,7 @@ get-symbol-description@^1.0.0: get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== getpass@^0.1.1: version "0.1.7" @@ -5738,21 +5758,6 @@ ghost-testrpc@^0.0.2: chalk "^2.4.2" node-emoji "^1.10.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - glob-parent@^5.1.0, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -5767,18 +5772,6 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -5862,6 +5855,11 @@ global@~4.4.0: min-document "^2.19.0" process "^0.11.10" +globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globals@^13.15.0: version "13.15.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" @@ -5925,15 +5923,15 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -growl@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" - integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== +graceful-fs@^4.1.11: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== growl@1.10.5: version "1.10.5" @@ -6050,11 +6048,6 @@ has-flag@^1.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6104,7 +6097,7 @@ has-tostringtag@^1.0.0: has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -6113,7 +6106,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -6122,12 +6115,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -6164,11 +6157,6 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -6286,7 +6274,7 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -6312,6 +6300,11 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + ignore@^5.1.1: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" @@ -6337,6 +6330,14 @@ immutable@^4.0.0-rc.12: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -6378,6 +6379,25 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -6402,7 +6422,7 @@ invariant@^2.2.2: invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== io-ts@1.10.4: version "1.10.4" @@ -6419,7 +6439,7 @@ ipaddr.js@1.9.1: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -6447,13 +6467,6 @@ is-bigint@^1.0.1: resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -6512,7 +6525,7 @@ is-core-module@^2.8.1, is-core-module@^2.9.0: is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -6546,27 +6559,20 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" @@ -6575,11 +6581,6 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -6598,14 +6599,14 @@ is-fn@^1.0.0: is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -6622,13 +6623,6 @@ is-generator-function@^1.0.7: resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -6668,25 +6662,13 @@ is-number-object@^1.0.4: resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -6719,16 +6701,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-regex@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" @@ -6854,24 +6826,24 @@ isarray@0.0.1: isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isstream@~0.1.2: version "0.1.2" @@ -6901,12 +6873,7 @@ js-sha3@0.8.0, js-sha3@^0.8.0: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= - -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -6924,7 +6891,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.x: +js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -6959,6 +6926,11 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: version "3.8.0" resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" @@ -6983,11 +6955,6 @@ json-rpc-random-id@^1.0.0: resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -7088,14 +7055,14 @@ keyv@^3.0.0: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" @@ -7126,7 +7093,7 @@ klaw@^1.0.0: lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== dependencies: invert-kv "^1.0.0" @@ -7291,6 +7258,14 @@ levelup@^1.2.1: semver "~5.4.1" xtend "~4.0.0" +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7299,14 +7274,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -7321,7 +7288,7 @@ load-json-file@^1.0.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -7361,7 +7328,7 @@ lodash@4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^4.14.2, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7436,14 +7403,6 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -7483,12 +7442,12 @@ make-dir@^3.0.0: map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" @@ -7497,11 +7456,6 @@ markdown-table@^1.1.3: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - mcl-wasm@^0.7.1: version "0.7.6" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.6.tgz#c1789ebda5565d49b77d2ee195ff3e4d282f1554" @@ -7521,13 +7475,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - memdown@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" @@ -7608,26 +7555,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7706,7 +7634,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -7720,18 +7648,13 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -7777,13 +7700,6 @@ mkdirp@*: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -7825,22 +7741,6 @@ mocha@^10.0.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -mocha@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" - integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA== - dependencies: - browser-stdout "1.3.0" - commander "2.11.0" - debug "3.1.0" - diff "3.3.1" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.3" - he "1.1.1" - mkdirp "0.5.1" - supports-color "4.4.0" - mocha@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" @@ -7884,7 +7784,7 @@ module-error@^1.0.1, module-error@^1.0.2: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.1: version "2.1.1" @@ -7946,7 +7846,12 @@ mustache@^4.0.0: resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== -nan@^2.12.1, nan@^2.14.0: +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +nan@^2.14.0: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== @@ -8095,13 +8000,6 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -8112,17 +8010,10 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== number-to-bn@1.7.0: version "1.7.0" @@ -8152,7 +8043,7 @@ object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1 object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -8194,7 +8085,7 @@ object-keys@~0.4.0: object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" @@ -8227,18 +8118,10 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1 define-properties "^1.1.3" es-abstract "^1.18.0-next.2" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" @@ -8284,6 +8167,13 @@ once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -8292,7 +8182,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -8328,15 +8218,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -8355,7 +8236,7 @@ p-cancelable@^1.0.0: p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^1.1.0: version "1.3.0" @@ -8381,7 +8262,7 @@ p-limit@^3.0.2: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -8416,7 +8297,7 @@ p-timeout@^1.1.1: p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" @@ -8454,16 +8335,6 @@ parse-cache-control@^1.0.1: resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" integrity sha1-juqz5U+laSD+Fro493+iGqzC104= -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-headers@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" @@ -8476,6 +8347,14 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -8492,7 +8371,7 @@ pascal-case@^3.1.2: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== patch-package@6.2.2: version "6.2.2" @@ -8554,7 +8433,7 @@ path-exists@^2.0.0: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -8566,7 +8445,12 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.0, path-key@^2.0.1: +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -8616,11 +8500,6 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -pegjs@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" - integrity sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0= - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -8666,7 +8545,7 @@ pinkie@^2.0.0: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postinstall-postinstall@^2.1.0: version "2.1.0" @@ -8698,10 +8577,10 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +prettier@^1.14.3: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== prettier@^2.1.2: version "2.3.2" @@ -8728,6 +8607,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" @@ -8761,7 +8645,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.1, pseudomap@^1.0.2: +pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= @@ -8913,15 +8797,6 @@ rainbow-bridge-lib@^3.0.0: tweetnacl "^1.0.3" web3 "=1.2.6" -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -8989,7 +8864,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9021,15 +8896,6 @@ readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -9084,13 +8950,6 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -9116,6 +8975,11 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + regexpp@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -9147,20 +9011,15 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - repeat-element@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== repeating@^2.0.0: version "2.0.1" @@ -9228,7 +9087,7 @@ request@^2.79.0, request@^2.85.0, request@^2.88.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^1.1.0: version "1.2.1" @@ -9243,7 +9102,7 @@ require-from-string@^2.0.0: require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== require-main-filename@^2.0.0: version "2.0.0" @@ -9263,7 +9122,7 @@ resolve-from@^4.0.0: resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== resolve@1.1.x: version "1.1.7" @@ -9310,6 +9169,14 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" @@ -9327,6 +9194,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rimraf@^2.2.8, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -9356,6 +9230,11 @@ rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^4.11.1" +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" @@ -9375,6 +9254,13 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -9395,7 +9281,7 @@ safe-event-emitter@^1.0.1: safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" @@ -9477,7 +9363,7 @@ semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9565,7 +9451,7 @@ servify@^0.1.12: set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-immediate-shim@^1.0.1: version "1.0.1" @@ -9621,7 +9507,7 @@ sha1@^1.1.1: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -9635,7 +9521,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -9660,7 +9546,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -9699,6 +9585,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + snake-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" @@ -9737,16 +9632,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sol-digger@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/sol-digger/-/sol-digger-0.0.2.tgz#406c4a9d31e269e7f88eb1c2ea101318e5e09025" - integrity sha1-QGxKnTHiaef4jrHC6hATGOXgkCU= - -sol-explore@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.1.tgz#b59f073c69fe332560d5a10c32ba8ca7f2986cfb" - integrity sha1-tZ8HPGn+MyVg1aEMMrqMp/KYbPs= - solc@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" @@ -9800,6 +9685,28 @@ solc@^0.6.3: semver "^5.5.0" tmp "0.0.33" +solhint@^3.3.8: + version "3.3.8" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.8.tgz#b1773c881cfaf0b5008c78ad658a69603d3fa051" + integrity sha512-TkYyJ6uUJCaiqRKuhHhFuoAoyco9Ia+RDKhl3usjG/rkaNk8/LdLRla2Xln7MVdBTaPKNAU8ezTRSit50Yy4qw== + dependencies: + "@solidity-parser/parser" "^0.14.5" + ajv "^6.6.1" + antlr4 "4.7.1" + ast-parents "0.0.1" + chalk "^2.4.2" + commander "2.18.0" + cosmiconfig "^5.0.7" + eslint "^5.6.0" + fast-diff "^1.1.2" + glob "^7.1.3" + ignore "^4.0.6" + js-yaml "^3.12.0" + lodash "^4.17.11" + semver "^6.3.0" + optionalDependencies: + prettier "^1.14.3" + solidity-coverage@^0.7.21: version "0.7.21" resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.21.tgz#20c5615a3a543086b243c2ca36e2951a75316b40" @@ -9824,39 +9731,6 @@ solidity-coverage@^0.7.21: shelljs "^0.8.3" web3-utils "^1.3.0" -solium-plugin-security@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/solium-plugin-security/-/solium-plugin-security-0.1.1.tgz#2a87bcf8f8c3abf7d198e292e4ac080284e3f3f6" - integrity sha512-kpLirBwIq4mhxk0Y/nn5cQ6qdJTI+U1LO3gpoNIcqNaW+sI058moXBe2UiHs+9wvF9IzYD49jcKhFTxcR9u9SQ== - -solium@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/solium/-/solium-1.2.5.tgz#d036c30e2901e22137bbf342f106b17529ff22a8" - integrity sha512-NuNrm7fp8JcDN/P+SAdM5TVa4wYDtwVtLY/rG4eBOZrC5qItsUhmQKR/YhjszaEW4c8tNUYhkhQcwOsS25znpw== - dependencies: - ajv "^5.2.2" - chokidar "^1.6.0" - colors "^1.1.2" - commander "^2.9.0" - diff "^3.5.0" - eol "^0.9.1" - js-string-escape "^1.0.1" - lodash "^4.14.2" - sol-digger "0.0.2" - sol-explore "1.6.1" - solium-plugin-security "0.1.1" - solparse "2.2.8" - text-table "^0.2.0" - -solparse@2.2.8: - version "2.2.8" - resolved "https://registry.yarnpkg.com/solparse/-/solparse-2.2.8.tgz#d13e42dbed95ce32f43894f5ec53f00d14cf9f11" - integrity sha512-Tm6hdfG72DOxD40SD+T5ddbekWglNWjzDRSNq7ZDIOHVsyaJSeeunUuWNj4DE7uDrJK3tGQuX0ZTDZWNYsGPMA== - dependencies: - mocha "^4.0.1" - pegjs "^0.10.0" - yargs "^10.0.3" - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -9976,7 +9850,7 @@ stacktrace-parser@^0.1.10: static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -10007,13 +9881,13 @@ strict-uri-encode@^1.0.0: string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10113,14 +9987,14 @@ string_decoder@~1.1.1: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -10164,11 +10038,6 @@ strip-dirs@^2.0.0: dependencies: is-natural-number "^4.0.1" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -10176,7 +10045,7 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@2.0.1: +strip-json-comments@2.0.1, strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -10186,13 +10055,6 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== - dependencies: - has-flag "^2.0.0" - supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -10289,6 +10151,16 @@ sync-rpc@^1.2.1: dependencies: get-port "^3.1.0" +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + tape@^4.6.3: version "4.13.3" resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278" @@ -10357,7 +10229,7 @@ text-encoding-utf-8@^1.0.2: text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== then-request@^6.0.0: version "6.0.2" @@ -10384,7 +10256,7 @@ through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.8, through@~2.3.4, through@~2.3.8: +through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10421,7 +10293,7 @@ to-fast-properties@^1.0.3: to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" @@ -10433,7 +10305,7 @@ to-readable-stream@^1.0.0: to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -10513,7 +10385,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.9.3: +tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -10747,7 +10619,7 @@ unpipe@1.0.0, unpipe@~1.0.0: unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -10776,7 +10648,7 @@ uri-js@^4.2.2: urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== url-parse-lax@^1.0.0: version "1.0.0" @@ -10830,7 +10702,7 @@ utf8@3.0.0, utf8@^3.0.0: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@^1.0.0: version "1.1.1" @@ -11730,7 +11602,7 @@ which-module@^1.0.0: which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== which-typed-array@^1.1.2: version "1.1.4" @@ -11789,7 +11661,7 @@ workerpool@6.2.1: wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -11815,7 +11687,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: version "3.0.3" @@ -11827,6 +11699,13 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -11932,11 +11811,6 @@ yaeti@^0.0.6: resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -11973,13 +11847,6 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== - dependencies: - camelcase "^4.1.0" - yargs-unparser@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" @@ -12028,24 +11895,6 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.1.0" - yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" From 5501ef3c5e5de6cec249f91427de6b81dee85adf Mon Sep 17 00:00:00 2001 From: "Joshua J. Bouw" Date: Thu, 26 Jan 2023 18:06:55 +0700 Subject: [PATCH 06/13] chore(state): refactor state into module (#670) --- .../src/relayer_db/mod.rs | 18 +-- engine-standalone-storage/src/sync/mod.rs | 18 +-- .../src/test_utils/standalone/mocks/mod.rs | 4 +- engine-tests/src/tests/sanity.rs | 2 +- engine-tests/src/tests/standalone/sanity.rs | 4 +- engine/src/engine.rs | 116 +++-------------- engine/src/lib.rs | 41 +++--- engine/src/state.rs | 121 ++++++++++++++++++ etc/tests/self-contained-5bEgfRQ/src/lib.rs | 2 +- etc/tests/state-migration-test/src/lib.rs | 6 +- 10 files changed, 184 insertions(+), 148 deletions(-) create mode 100644 engine/src/state.rs diff --git a/engine-standalone-storage/src/relayer_db/mod.rs b/engine-standalone-storage/src/relayer_db/mod.rs index 80fefca95..a528982ce 100644 --- a/engine-standalone-storage/src/relayer_db/mod.rs +++ b/engine-standalone-storage/src/relayer_db/mod.rs @@ -1,4 +1,4 @@ -use aurora_engine::engine; +use aurora_engine::{engine, state}; use aurora_engine_sdk::env::{self, Env, DEFAULT_PREPAID_GAS}; use aurora_engine_transactions::EthTransactionKind; use aurora_engine_types::account_id::AccountId; @@ -63,7 +63,7 @@ where pub fn initialize_transactions( storage: &mut Storage, mut rows: I, - engine_state: engine::EngineState, + engine_state: state::EngineState, ) -> Result<(), error::Error> where I: FallibleIterator, @@ -159,13 +159,13 @@ where } pub mod error { - use aurora_engine::engine; + use aurora_engine::{engine, state}; #[derive(Debug)] pub enum Error { Storage(crate::Error), Postgres(postgres::Error), - EngineState(engine::EngineStateError), + EngineState(state::EngineStateError), Engine(engine::EngineError), } @@ -181,8 +181,8 @@ pub mod error { } } - impl From for Error { - fn from(e: engine::EngineStateError) -> Self { + impl From for Error { + fn from(e: state::EngineStateError) -> Self { Self::EngineState(e) } } @@ -198,7 +198,7 @@ pub mod error { mod test { use super::FallibleIterator; use crate::sync::types::{TransactionKind, TransactionMessage}; - use aurora_engine::{connector, engine, parameters}; + use aurora_engine::{connector, parameters, state}; use aurora_engine_types::H256; /// Requires a running postgres server to work. A snapshot of the DB can be @@ -210,7 +210,7 @@ mod test { fn test_fill_db() { let mut storage = crate::Storage::open("rocks_tmp/").unwrap(); let mut connection = super::connect_without_tls(&Default::default()).unwrap(); - let engine_state = engine::EngineState { + let engine_state = state::EngineState { chain_id: aurora_engine_types::types::u256_to_arr(&1313161555.into()), owner_id: "aurora".parse().unwrap(), bridge_prover_id: "prover.bridge.near".parse().unwrap(), @@ -231,7 +231,7 @@ mod test { .unwrap(); let result = storage.with_engine_access(block_height, 0, &[], |io| { let mut local_io = io; - engine::set_state(&mut local_io, engine_state.clone()); + state::set_state(&mut local_io, engine_state.clone()).unwrap(); connector::EthConnectorContract::create_contract( io, engine_state.owner_id.clone(), diff --git a/engine-standalone-storage/src/sync/mod.rs b/engine-standalone-storage/src/sync/mod.rs index 9142e6b86..006d1aaba 100644 --- a/engine-standalone-storage/src/sync/mod.rs +++ b/engine-standalone-storage/src/sync/mod.rs @@ -1,7 +1,7 @@ use aurora_engine::pausables::{ EnginePrecompilesPauser, PausedPrecompilesManager, PrecompileFlags, }; -use aurora_engine::{connector, engine, parameters::SubmitResult, xcc}; +use aurora_engine::{connector, engine, parameters::SubmitResult, state, xcc}; use aurora_engine_sdk::env::{self, Env, DEFAULT_PREPAID_GAS}; use aurora_engine_types::{ account_id::AccountId, @@ -137,7 +137,7 @@ fn execute_transaction<'db>( let transaction_bytes: Vec = tx.into(); let tx_hash = aurora_engine_sdk::keccak(&transaction_bytes); - let result = engine::get_state(&io) + let result = state::get_state(&io) .map(|engine_state| { let submit_result = engine::submit( io, @@ -335,12 +335,12 @@ fn non_submit_execute<'db>( } TransactionKind::RefundOnError(maybe_args) => { - let result: Result, engine::EngineStateError> = + let result: Result, state::EngineStateError> = maybe_args .clone() .map(|args| { let mut handler = crate::promise::NoScheduler { promise_data }; - let engine_state = engine::get_state(&io)?; + let engine_state = state::get_state(&io)?; let result = engine::refund_on_error(io, &env, engine_state, args, &mut handler); Ok(TransactionExecutionResult::Submit(result)) @@ -367,7 +367,7 @@ fn non_submit_execute<'db>( None } TransactionKind::NewEngine(args) => { - engine::set_state(&mut io, args.clone().into()); + state::set_state(&mut io, args.clone().into())?; None } @@ -434,11 +434,11 @@ pub enum TransactionExecutionResult { } pub mod error { - use aurora_engine::{connector, engine, fungible_token}; + use aurora_engine::{connector, engine, fungible_token, state}; #[derive(Debug)] pub enum Error { - EngineState(engine::EngineStateError), + EngineState(state::EngineStateError), Engine(engine::EngineError), DeployErc20(engine::DeployErc20Error), FtOnTransfer(connector::error::FtTransferCallError), @@ -452,8 +452,8 @@ pub mod error { ConnectorStorage(connector::error::StorageReadError), } - impl From for Error { - fn from(e: engine::EngineStateError) -> Self { + impl From for Error { + fn from(e: state::EngineStateError) -> Self { Self::EngineState(e) } } diff --git a/engine-tests/src/test_utils/standalone/mocks/mod.rs b/engine-tests/src/test_utils/standalone/mocks/mod.rs index 990ae733f..cfb5ec29d 100644 --- a/engine-tests/src/test_utils/standalone/mocks/mod.rs +++ b/engine-tests/src/test_utils/standalone/mocks/mod.rs @@ -1,9 +1,9 @@ use crate::test_utils; -use aurora_engine::engine; use aurora_engine::fungible_token::FungibleTokenMetadata; use aurora_engine::parameters::{ FinishDepositCallArgs, InitCallArgs, NEP141FtOnTransferArgs, NewCallArgs, }; +use aurora_engine::{engine, state}; use aurora_engine_sdk::env::{Env, DEFAULT_PREPAID_GAS}; use aurora_engine_sdk::io::IO; use aurora_engine_types::types::{Address, Balance, NEP141Wei, NearGas, Wei}; @@ -56,7 +56,7 @@ pub fn init_evm(mut io: I, env: &E, chain_id: u64) { upgrade_delay_blocks: 1, }; - engine::set_state(&mut io, new_args.into()); + state::set_state(&mut io, new_args.into()).unwrap(); let connector_args = InitCallArgs { prover_account: test_utils::str_to_account_id("prover.near"), diff --git a/engine-tests/src/tests/sanity.rs b/engine-tests/src/tests/sanity.rs index fb51786bd..f4f9d95cb 100644 --- a/engine-tests/src/tests/sanity.rs +++ b/engine-tests/src/tests/sanity.rs @@ -139,7 +139,7 @@ fn test_state_format() { bridge_prover_id: "prover_mcprovy_face".parse().unwrap(), upgrade_delay_blocks: 3, }; - let state: aurora_engine::engine::EngineState = args.into(); + let state: aurora_engine::state::EngineState = args.into(); let expected_hex: String = [ "000000000000000000000000000000000000000000000000000000000000029a", "04000000626f7373", diff --git a/engine-tests/src/tests/standalone/sanity.rs b/engine-tests/src/tests/standalone/sanity.rs index 26197c6a3..86ba63c09 100644 --- a/engine-tests/src/tests/standalone/sanity.rs +++ b/engine-tests/src/tests/standalone/sanity.rs @@ -1,4 +1,4 @@ -use aurora_engine::engine; +use aurora_engine::{engine, state}; use aurora_engine_sdk::env::DEFAULT_PREPAID_GAS; use aurora_engine_test_doubles::io::{Storage, StoragePointer}; use aurora_engine_test_doubles::promise::PromiseTracker; @@ -15,7 +15,7 @@ fn test_deploy_code() { buf }; let owner_id: AccountId = "aurora".parse().unwrap(); - let state = engine::EngineState { + let state = state::EngineState { chain_id, owner_id: owner_id.clone(), bridge_prover_id: "mr_the_prover".parse().unwrap(), diff --git a/engine/src/engine.rs b/engine/src/engine.rs index a023973ef..c76b760bf 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -5,15 +5,15 @@ use evm::executor; use evm::{Config, CreateScheme, ExitError, ExitFatal, ExitReason}; use crate::connector::EthConnectorContract; -use crate::errors; use crate::map::BijectionMap; +use crate::{errors, state}; use aurora_engine_sdk::caching::FullCache; use aurora_engine_sdk::env::Env; use aurora_engine_sdk::io::{StorageIntermediate, IO}; use aurora_engine_sdk::promise::{PromiseHandler, PromiseId, ReadOnlyPromiseHandler}; use crate::accounting; -use crate::parameters::{DeployErc20TokenArgs, NewCallArgs, TransactionStatus}; +use crate::parameters::{DeployErc20TokenArgs, TransactionStatus}; use crate::pausables::{ EngineAuthorizer, EnginePrecompilesPauser, PausedPrecompilesChecker, PrecompileFlags, }; @@ -24,9 +24,10 @@ use crate::prelude::precompiles::Precompiles; use crate::prelude::transactions::{EthTransactionKind, NormalizedEthTransaction}; use crate::prelude::{ address_to_key, bytes_to_key, sdk, storage_to_key, u256_to_arr, vec, AccountId, Address, - BTreeMap, BorshDeserialize, BorshSerialize, KeyPrefix, PromiseArgs, PromiseCreateArgs, - ToString, Vec, Wei, Yocto, ERC20_MINT_SELECTOR, H160, H256, U256, + BTreeMap, BorshDeserialize, KeyPrefix, PromiseArgs, PromiseCreateArgs, ToString, Vec, Wei, + Yocto, ERC20_MINT_SELECTOR, H160, H256, U256, }; +use crate::state::EngineState; use aurora_engine_precompiles::PrecompileConstructorContext; use core::cell::RefCell; use core::iter::once; @@ -230,7 +231,7 @@ impl From for GasPaymentError { #[derive(Debug)] pub enum DeployErc20Error { - State(EngineStateError), + State(state::EngineStateError), Failed(TransactionStatus), Engine(EngineError), Register(RegisterTokenError), @@ -337,21 +338,6 @@ impl AsRef<[u8]> for RegisterTokenError { } } -#[derive(Debug)] -pub enum EngineStateError { - NotFound, - DeserializationFailed, -} - -impl AsRef<[u8]> for EngineStateError { - fn as_ref(&self) -> &[u8] { - match self { - Self::NotFound => errors::ERR_STATE_NOT_FOUND, - Self::DeserializationFailed => errors::ERR_STATE_CORRUPTED, - } - } -} - pub struct StackExecutorParams<'a, I, E, H> { precompiles: Precompiles<'a, I, E, H>, gas_limit: u64, @@ -387,33 +373,6 @@ pub struct GasPaymentResult { pub priority_fee_per_gas: U256, } -/// Engine internal state, mostly configuration. -/// Should not contain anything large or enumerable. -#[derive(BorshSerialize, BorshDeserialize, Default, Clone, PartialEq, Eq, Debug)] -pub struct EngineState { - /// Chain id, according to the EIP-155 / ethereum-lists spec. - pub chain_id: [u8; 32], - /// Account which can upgrade this contract. - /// Use empty to disable updatability. - pub owner_id: AccountId, - /// Account of the bridge prover. - /// Use empty to not use base token as bridged asset. - pub bridge_prover_id: AccountId, - /// How many blocks after staging upgrade can deploy it. - pub upgrade_delay_blocks: u64, -} - -impl From for EngineState { - fn from(args: NewCallArgs) -> Self { - EngineState { - chain_id: args.chain_id, - owner_id: args.owner_id, - bridge_prover_id: args.bridge_prover_id, - upgrade_delay_blocks: args.upgrade_delay_blocks, - } - } -} - pub struct Engine<'env, I: IO, E: Env> { state: EngineState, origin: Address, @@ -429,17 +388,15 @@ pub struct Engine<'env, I: IO, E: Env> { pub(crate) const CONFIG: &Config = &Config::london(); -/// Key for storing the state of the engine. -const STATE_KEY: &[u8; 5] = b"STATE"; - impl<'env, I: IO + Copy, E: Env> Engine<'env, I, E> { pub fn new( origin: Address, current_account_id: AccountId, io: I, env: &'env E, - ) -> Result { - get_state(&io).map(|state| Self::new_with_state(state, origin, current_account_id, io, env)) + ) -> Result { + state::get_state(&io) + .map(|state| Self::new_with_state(state, origin, current_account_id, io, env)) } pub fn new_with_state( @@ -1092,22 +1049,6 @@ pub fn compute_block_hash(chain_id: [u8; 32], block_height: u64, account_id: &[u sdk::sha256(&data) } -pub fn get_state(io: &I) -> Result { - match io.read_storage(&bytes_to_key(KeyPrefix::Config, STATE_KEY)) { - None => Err(EngineStateError::NotFound), - Some(bytes) => EngineState::try_from_slice(&bytes.to_vec()) - .map_err(|_| EngineStateError::DeserializationFailed), - } -} - -/// Saves state into the storage. -pub fn set_state(io: &mut I, state: EngineState) { - io.write_storage( - &bytes_to_key(KeyPrefix::Config, STATE_KEY), - &state.try_to_vec().expect("ERR_SER"), - ); -} - pub fn get_authorizer() -> EngineAuthorizer { // TODO: a temporary account until the engine adapts std with near-plugins let account = AccountId::new("aurora").expect("Failed to parse account from string"); @@ -2045,7 +1986,7 @@ mod tests { let storage = RwLock::new(storage); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); - set_state(&mut io, EngineState::default()); + state::set_state(&mut io, EngineState::default()).unwrap(); let nep141_token = AccountId::new("testcoin").unwrap(); let mut handler = Noop; @@ -2180,7 +2121,7 @@ mod tests { let storage = RwLock::new(storage); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); - set_state(&mut io, expected_state.clone()); + state::set_state(&mut io, expected_state.clone()).unwrap(); let engine = Engine::new(origin, current_account_id, io, &env).unwrap(); let actual_state = engine.state; @@ -2197,7 +2138,7 @@ mod tests { let expected_state = EngineState::default(); let refund_amount = Wei::new_u64(1000); add_balance(&mut io, &exit_to_near::ADDRESS, refund_amount).unwrap(); - set_state(&mut io, expected_state.clone()); + state::set_state(&mut io, expected_state.clone()).unwrap(); let args = RefundCallArgs { recipient_address, erc20_address: None, @@ -2219,7 +2160,7 @@ mod tests { let storage = RwLock::new(storage); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); - set_state(&mut io, expected_state.clone()); + state::set_state(&mut io, expected_state.clone()).unwrap(); let value = Wei::new_u64(1000); let args = RefundCallArgs { recipient_address: Default::default(), @@ -2241,7 +2182,7 @@ mod tests { let storage = RwLock::new(storage); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); - set_state(&mut io, expected_state); + state::set_state(&mut io, expected_state).unwrap(); let relayer = make_address(1, 1); let gas_result = GasPaymentResult { prepaid_amount: Default::default(), @@ -2259,7 +2200,7 @@ mod tests { let storage = RwLock::new(storage); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); - set_state(&mut io, expected_state); + state::set_state(&mut io, expected_state).unwrap(); let relayer = make_address(1, 1); let gas_result = GasPaymentResult { prepaid_amount: Wei::new_u64(8000), @@ -2315,33 +2256,6 @@ mod tests { ); } - #[test] - fn test_missing_engine_state_is_not_found() { - let storage = Storage::default(); - let storage = RwLock::new(storage); - let io = StoragePointer(&storage); - - let actual_error = get_state(&io).unwrap_err(); - let actual_error = std::str::from_utf8(actual_error.as_ref()).unwrap(); - let expected_error = std::str::from_utf8(errors::ERR_STATE_NOT_FOUND).unwrap(); - - assert_eq!(expected_error, actual_error); - } - - #[test] - fn test_empty_engine_state_is_corrupted() { - let storage = Storage::default(); - let storage = RwLock::new(storage); - let mut io = StoragePointer(&storage); - - io.write_storage(&bytes_to_key(KeyPrefix::Config, STATE_KEY), &[]); - let actual_error = get_state(&io).unwrap_err(); - let actual_error = std::str::from_utf8(actual_error.as_ref()).unwrap(); - let expected_error = std::str::from_utf8(errors::ERR_STATE_CORRUPTED).unwrap(); - - assert_eq!(expected_error, actual_error); - } - #[test] fn test_filtering_promises_from_logs_with_none_keeps_all() { let storage = Storage::default(); diff --git a/engine/src/lib.rs b/engine/src/lib.rs index ff133643a..c056cc262 100644 --- a/engine/src/lib.rs +++ b/engine/src/lib.rs @@ -29,6 +29,7 @@ pub mod json; pub mod log_entry; pub mod pausables; mod prelude; +pub mod state; pub mod xcc; #[cfg(target_arch = "wasm32")] @@ -71,7 +72,7 @@ mod contract { use borsh::{BorshDeserialize, BorshSerialize}; use crate::connector::{self, EthConnectorContract}; - use crate::engine::{self, Engine, EngineState}; + use crate::engine::{self, Engine}; use crate::fungible_token::FungibleTokenMetadata; use crate::json::parse_json; use crate::parameters::{ @@ -96,7 +97,7 @@ mod contract { use crate::prelude::{ sdk, u256_to_arr, Address, PromiseResult, ToString, Yocto, ERR_FAILED_PARSE, H256, }; - use crate::{errors, pausables}; + use crate::{errors, pausables, state}; use aurora_engine_sdk::env::Env; use aurora_engine_sdk::io::{StorageIntermediate, IO}; use aurora_engine_sdk::near_runtime::{Runtime, ViewEnv}; @@ -117,12 +118,12 @@ mod contract { #[no_mangle] pub extern "C" fn new() { let mut io = Runtime; - if let Ok(state) = engine::get_state(&io) { + if let Ok(state) = state::get_state(&io) { require_owner_only(&state, &io.predecessor_account_id()); } let args: NewCallArgs = io.read_input_borsh().sdk_unwrap(); - engine::set_state(&mut io, args.into()); + state::set_state(&mut io, args.into()).sdk_unwrap(); } /// Get version of the contract. @@ -140,7 +141,7 @@ mod contract { #[no_mangle] pub extern "C" fn get_owner() { let mut io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); io.return_output(state.owner_id.as_bytes()); } @@ -156,13 +157,13 @@ mod contract { #[no_mangle] pub extern "C" fn get_chain_id() { let mut io = Runtime; - io.return_output(&engine::get_state(&io).sdk_unwrap().chain_id) + io.return_output(&state::get_state(&io).sdk_unwrap().chain_id) } #[no_mangle] pub extern "C" fn get_upgrade_index() { let mut io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); let index = internal_get_upgrade_index(); io.return_output(&(index + state.upgrade_delay_blocks).to_le_bytes()) } @@ -171,7 +172,7 @@ mod contract { #[no_mangle] pub extern "C" fn stage_upgrade() { let mut io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); let block_height = io.block_height(); require_owner_only(&state, &io.predecessor_account_id()); io.read_input_and_store(&bytes_to_key(KeyPrefix::Config, CODE_KEY)); @@ -185,7 +186,7 @@ mod contract { #[no_mangle] pub extern "C" fn deploy_upgrade() { let io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); require_owner_only(&state, &io.predecessor_account_id()); let index = internal_get_upgrade_index(); if io.block_height() <= index + state.upgrade_delay_blocks { @@ -208,7 +209,7 @@ mod contract { #[no_mangle] pub extern "C" fn resume_precompiles() { let io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); let predecessor_account_id = io.predecessor_account_id(); require_owner_only(&state, &predecessor_account_id); @@ -295,7 +296,7 @@ mod contract { let io = Runtime; let input = io.read_input().to_vec(); let current_account_id = io.current_account_id(); - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); let relayer_address = predecessor_address(&io.predecessor_account_id()); let result = engine::submit( io, @@ -338,7 +339,7 @@ mod contract { #[no_mangle] pub extern "C" fn factory_update() { let mut io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); require_owner_only(&state, &io.predecessor_account_id()); let bytes = io.read_input().to_vec(); let router_bytecode = crate::xcc::RouterCode::new(bytes); @@ -366,7 +367,7 @@ mod contract { #[no_mangle] pub extern "C" fn factory_set_wnear_address() { let mut io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); require_owner_only(&state, &io.predecessor_account_id()); let address = io.read_input_arr20().sdk_unwrap(); crate::xcc::set_wnear_address(&mut io, &Address::from_array(address)); @@ -447,7 +448,7 @@ mod contract { } else { // Exit call failed; need to refund tokens let args: RefundCallArgs = io.read_input_borsh().sdk_unwrap(); - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); let refund_result = engine::refund_on_error(io, &io, state, args, &mut Runtime).sdk_unwrap(); @@ -476,7 +477,7 @@ mod contract { let mut io = Runtime; let block_height = io.read_input_borsh().sdk_unwrap(); let account_id = io.current_account_id(); - let chain_id = engine::get_state(&io) + let chain_id = state::get_state(&io) .map(|state| state.chain_id) .sdk_unwrap(); let block_hash = @@ -526,11 +527,11 @@ mod contract { pub extern "C" fn begin_chain() { use crate::prelude::U256; let mut io = Runtime; - let mut state = engine::get_state(&io).sdk_unwrap(); + let mut state = state::get_state(&io).sdk_unwrap(); require_owner_only(&state, &io.predecessor_account_id()); let args: BeginChainArgs = io.read_input_borsh().sdk_unwrap(); state.chain_id = args.chain_id; - engine::set_state(&mut io, state); + state::set_state(&mut io, state).sdk_unwrap(); // set genesis block balances for account_balance in args.genesis_alloc { engine::set_balance( @@ -540,14 +541,14 @@ mod contract { ) } // return new chain ID - io.return_output(&engine::get_state(&io).sdk_unwrap().chain_id) + io.return_output(&state::get_state(&io).sdk_unwrap().chain_id) } #[cfg(feature = "evm_bully")] #[no_mangle] pub extern "C" fn begin_block() { let io = Runtime; - let state = engine::get_state(&io).sdk_unwrap(); + let state = state::get_state(&io).sdk_unwrap(); require_owner_only(&state, &io.predecessor_account_id()); let _args: BeginBlockArgs = io.read_input_borsh().sdk_unwrap(); // TODO: https://github.com/aurora-is-near/aurora-engine/issues/2 @@ -984,7 +985,7 @@ mod contract { } } - fn require_owner_only(state: &EngineState, predecessor_account_id: &AccountId) { + fn require_owner_only(state: &state::EngineState, predecessor_account_id: &AccountId) { if &state.owner_id != predecessor_account_id { sdk::panic_utf8(errors::ERR_NOT_ALLOWED); } diff --git a/engine/src/state.rs b/engine/src/state.rs new file mode 100644 index 000000000..f9613a72d --- /dev/null +++ b/engine/src/state.rs @@ -0,0 +1,121 @@ +use crate::parameters::NewCallArgs; +use aurora_engine_sdk::io::{StorageIntermediate, IO}; +use aurora_engine_types::account_id::AccountId; +use aurora_engine_types::storage::{bytes_to_key, KeyPrefix}; +use borsh::{BorshDeserialize, BorshSerialize}; + +pub use error::EngineStateError; + +/// Key for storing the state of the engine. +const STATE_KEY: &[u8; 5] = b"STATE"; + +/// Engine internal state, mostly configuration. +/// Should not contain anything large or enumerable. +#[derive(BorshSerialize, BorshDeserialize, Default, Clone, PartialEq, Eq, Debug)] +pub struct EngineState { + /// Chain id, according to the EIP-155 / ethereum-lists spec. + pub chain_id: [u8; 32], + /// Account which can upgrade this contract. + /// Use empty to disable updatability. + pub owner_id: AccountId, + /// Account of the bridge prover. + /// Use empty to not use base token as bridged asset. + pub bridge_prover_id: AccountId, + /// How many blocks after staging upgrade can deploy it. + pub upgrade_delay_blocks: u64, +} + +impl From for EngineState { + fn from(args: NewCallArgs) -> Self { + EngineState { + chain_id: args.chain_id, + owner_id: args.owner_id, + bridge_prover_id: args.bridge_prover_id, + upgrade_delay_blocks: args.upgrade_delay_blocks, + } + } +} + +/// Gets the state from storage, if it exists otherwise it will error. +pub fn get_state(io: &I) -> Result { + match io.read_storage(&bytes_to_key(KeyPrefix::Config, STATE_KEY)) { + None => Err(error::EngineStateError::NotFound), + Some(bytes) => EngineState::try_from_slice(&bytes.to_vec()) + .map_err(|_| error::EngineStateError::DeserializationFailed), + } +} + +/// Saves state into the storage. Does not return the previous state. +pub fn set_state(io: &mut I, state: EngineState) -> Result<(), error::EngineStateError> { + io.write_storage( + &bytes_to_key(KeyPrefix::Config, STATE_KEY), + &state + .try_to_vec() + .map_err(|_| error::EngineStateError::SerializationFailed)?, + ); + + Ok(()) +} + +/// Engine state error module. +pub mod error { + pub const ERR_STATE_NOT_FOUND: &[u8; 19] = b"ERR_STATE_NOT_FOUND"; + pub const ERR_STATE_SERIALIZATION_FAILED: &[u8; 26] = b"ERR_STATE_SERIALIZE_FAILED"; + pub const ERR_STATE_CORRUPTED: &[u8; 19] = b"ERR_STATE_CORRUPTED"; + + #[derive(Debug)] + /// Engine state error kinds. + pub enum EngineStateError { + /// The engine state is missing from storage, need to initialize with contract `new` method. + NotFound, + /// The engine state serialized had failed. + SerializationFailed, + /// The state of the engine is corrupted, possibly due to failed state migration. + DeserializationFailed, + } + + impl AsRef<[u8]> for EngineStateError { + fn as_ref(&self) -> &[u8] { + match self { + Self::NotFound => ERR_STATE_NOT_FOUND, + Self::SerializationFailed => ERR_STATE_SERIALIZATION_FAILED, + Self::DeserializationFailed => ERR_STATE_CORRUPTED, + } + } + } +} + +#[cfg(test)] +#[cfg(feature = "std")] +mod tests { + use super::*; + use aurora_engine_test_doubles::io::{Storage, StoragePointer}; + use std::sync::RwLock; + + #[test] + fn test_missing_engine_state_is_not_found() { + let storage = Storage::default(); + let storage = RwLock::new(storage); + let io = StoragePointer(&storage); + + let actual_error = get_state(&io).unwrap_err(); + let actual_error = std::str::from_utf8(actual_error.as_ref()).unwrap(); + let expected_error = std::str::from_utf8(error::ERR_STATE_NOT_FOUND).unwrap(); + + assert_eq!(expected_error, actual_error); + } + + #[test] + fn test_empty_engine_state_is_corrupted() { + let storage = Storage::default(); + let storage = RwLock::new(storage); + let mut io = StoragePointer(&storage); + + io.write_storage(&bytes_to_key(KeyPrefix::Config, STATE_KEY), &[]); + let actual_error = get_state(&io).unwrap_err(); + let actual_error = std::str::from_utf8(actual_error.as_ref()).unwrap(); + let expected_error = std::str::from_utf8(error::ERR_STATE_CORRUPTED).unwrap(); + + assert_eq!(expected_error, actual_error); + } +} diff --git a/etc/tests/self-contained-5bEgfRQ/src/lib.rs b/etc/tests/self-contained-5bEgfRQ/src/lib.rs index e146a6487..16bd4a956 100644 --- a/etc/tests/self-contained-5bEgfRQ/src/lib.rs +++ b/etc/tests/self-contained-5bEgfRQ/src/lib.rs @@ -39,7 +39,7 @@ pub extern "C" fn run() { let state = BTreeMap::try_from_slice(STATE).unwrap(); let in_mem_io = InMemIO::new(&state, INPUT); - let engine_state = aurora_engine::engine::get_state(&in_mem_io).unwrap(); + let engine_state = aurora_engine::state::get_state(&in_mem_io).unwrap(); let relayer_address = aurora_engine_sdk::types::near_account_to_evm_address( local_env.predecessor_account_id.as_bytes(), ); diff --git a/etc/tests/state-migration-test/src/lib.rs b/etc/tests/state-migration-test/src/lib.rs index 1e7ae6ccf..08b82b09e 100644 --- a/etc/tests/state-migration-test/src/lib.rs +++ b/etc/tests/state-migration-test/src/lib.rs @@ -3,7 +3,7 @@ extern crate alloc; use alloc::vec::Vec; -use aurora_engine::engine::{self, EngineState}; +use aurora_engine::state; use aurora_engine_sdk::near_runtime::Runtime; use aurora_engine_sdk::io::{IO, StorageIntermediate}; use aurora_engine_types::storage; @@ -11,14 +11,14 @@ use borsh::{BorshDeserialize, BorshSerialize}; #[derive(BorshDeserialize, BorshSerialize)] struct NewFancyState { - old_state: EngineState, + old_state: state::EngineState, some_other_numbers: [u32; 7], } #[no_mangle] pub extern "C" fn state_migration() { let mut io = Runtime; - let old_state = match engine::get_state(&io) { + let old_state = match state::get_state(&io) { Ok(state) => state, Err(e) => aurora_engine_sdk::panic_utf8(e.as_ref()), }; From cf8ead222ef25c92e634ba8f7e1ed58179f67c3c Mon Sep 17 00:00:00 2001 From: "Joshua J. Bouw" Date: Thu, 26 Jan 2023 15:31:47 +0400 Subject: [PATCH 07/13] fix: post merge --- engine/src/engine.rs | 12 ++++++++---- engine/src/lib.rs | 1 - engine/src/state.rs | 2 ++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/engine/src/engine.rs b/engine/src/engine.rs index d03e27b7f..8104c9be6 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -1,13 +1,14 @@ use crate::connector::EthConnectorContract; use crate::map::BijectionMap; -use crate::{errors, state}; +use crate::{errors, gas_token, state}; use aurora_engine_sdk::caching::FullCache; use aurora_engine_sdk::env::Env; use aurora_engine_sdk::io::{StorageIntermediate, IO}; use aurora_engine_sdk::promise::{PromiseHandler, PromiseId, ReadOnlyPromiseHandler}; use crate::accounting; -use crate::parameters::{DeployErc20TokenArgs, TransactionStatus}; +use crate::gas_token::GasToken; +use crate::parameters::{DeployErc20TokenArgs, NEP141FtOnTransferArgs, TransactionStatus}; use crate::pausables::{ EngineAuthorizer, EnginePrecompilesPauser, PausedPrecompilesChecker, PrecompileFlags, }; @@ -20,7 +21,9 @@ use crate::prelude::{ Yocto, ERC20_MINT_SELECTOR, H160, H256, U256, }; use crate::state::EngineState; -use aurora_engine_precompiles::PrecompileConstructorContext; +use aurora_engine_precompiles::{Precompile, PrecompileConstructorContext}; +use aurora_engine_types::parameters::engine::{CallArgs, ResultLog, SubmitResult, ViewCallArgs}; +use aurora_engine_types::types::EthGas; use core::cell::RefCell; use core::iter::once; use core::mem; @@ -958,7 +961,7 @@ pub fn submit( let tx_status = TransactionStatus::Succeed(vec![]); let mut result_logs = Vec::new(); for log in v.logs { - result_logs.push(log.into()); + result_logs.push(evm_log_to_result_log(log)); } Ok(SubmitResult::new(tx_status, v.cost.as_u64(), result_logs)) } @@ -1813,6 +1816,7 @@ mod tests { use super::*; use crate::parameters::{FunctionCallArgsV1, FunctionCallArgsV2}; use aurora_engine_precompiles::make_address; + use aurora_engine_precompiles::native::exit_to_near; use aurora_engine_sdk::env::Fixed; use aurora_engine_sdk::promise::Noop; use aurora_engine_test_doubles::io::{Storage, StoragePointer}; diff --git a/engine/src/lib.rs b/engine/src/lib.rs index 66794958d..0c95abcec 100644 --- a/engine/src/lib.rs +++ b/engine/src/lib.rs @@ -106,7 +106,6 @@ mod contract { #[cfg(feature = "integration-test")] use crate::prelude::NearGas; - use crate::state::EngineState; const CODE_KEY: &[u8; 4] = b"CODE"; const CODE_STAGE_KEY: &[u8; 10] = b"CODE_STAGE"; diff --git a/engine/src/state.rs b/engine/src/state.rs index 571c7a31a..afadeb25c 100644 --- a/engine/src/state.rs +++ b/engine/src/state.rs @@ -5,6 +5,8 @@ use aurora_engine_types::account_id::AccountId; use aurora_engine_types::storage::{bytes_to_key, KeyPrefix}; use borsh::{BorshDeserialize, BorshSerialize}; +pub use error::EngineStateError; + /// Key for storing the state of the engine. const STATE_KEY: &[u8; 5] = b"STATE"; From 85e2e235a078ea03869f34158dfa0dfa564435af Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Thu, 26 Jan 2023 12:35:31 +0100 Subject: [PATCH 08/13] chore: replace RwLock for RefCell in storage for tests (#665) --- engine-test-doubles/src/io.rs | 23 +++---- engine-tests/src/tests/standalone/sanity.rs | 4 +- engine/src/connector.rs | 2 +- engine/src/engine.rs | 69 +++++++-------------- engine/src/lib.rs | 1 - engine/src/map.rs | 4 +- engine/src/pausables.rs | 8 +-- engine/src/state.rs | 8 +-- 8 files changed, 45 insertions(+), 74 deletions(-) diff --git a/engine-test-doubles/src/io.rs b/engine-test-doubles/src/io.rs index adb066c41..d50375e86 100644 --- a/engine-test-doubles/src/io.rs +++ b/engine-test-doubles/src/io.rs @@ -1,6 +1,6 @@ use aurora_engine_sdk::io::{StorageIntermediate, IO}; +use std::cell::RefCell; use std::collections::HashMap; -use std::sync::RwLock; pub struct Value(Vec); @@ -27,37 +27,32 @@ pub struct Storage { /// In-memory implementation of [IO]. #[derive(Debug, Clone, Copy)] -pub struct StoragePointer<'a>(pub &'a RwLock); +pub struct StoragePointer<'a>(pub &'a RefCell); impl<'a> IO for StoragePointer<'a> { type StorageValue = Value; fn read_input(&self) -> Self::StorageValue { - Value(self.0.read().unwrap().input.clone()) + Value(self.0.borrow().input.clone()) } fn return_output(&mut self, value: &[u8]) { - let mut storage = self.0.write().unwrap(); + let mut storage = self.0.borrow_mut(); storage.output = value.to_vec(); } fn read_storage(&self, key: &[u8]) -> Option { - self.0 - .read() - .unwrap() - .kv_store - .get(key) - .map(|v| Value(v.clone())) + self.0.borrow().kv_store.get(key).map(|v| Value(v.clone())) } fn storage_has_key(&self, key: &[u8]) -> bool { - self.0.read().unwrap().kv_store.contains_key(key) + self.0.borrow().kv_store.contains_key(key) } fn write_storage(&mut self, key: &[u8], value: &[u8]) -> Option { let key = key.to_vec(); let value = value.to_vec(); - let mut storage = self.0.write().unwrap(); + let mut storage = self.0.borrow_mut(); storage.kv_store.insert(key, value).map(Value) } @@ -67,12 +62,12 @@ impl<'a> IO for StoragePointer<'a> { value: Self::StorageValue, ) -> Option { let key = key.to_vec(); - let mut storage = self.0.write().unwrap(); + let mut storage = self.0.borrow_mut(); storage.kv_store.insert(key, value.0).map(Value) } fn remove_storage(&mut self, key: &[u8]) -> Option { - let mut storage = self.0.write().unwrap(); + let mut storage = self.0.borrow_mut(); storage.kv_store.remove(key).map(Value) } } diff --git a/engine-tests/src/tests/standalone/sanity.rs b/engine-tests/src/tests/standalone/sanity.rs index 86ba63c09..bc9566a83 100644 --- a/engine-tests/src/tests/standalone/sanity.rs +++ b/engine-tests/src/tests/standalone/sanity.rs @@ -4,7 +4,7 @@ use aurora_engine_test_doubles::io::{Storage, StoragePointer}; use aurora_engine_test_doubles::promise::PromiseTracker; use aurora_engine_types::types::{Address, Wei}; use aurora_engine_types::{account_id::AccountId, H160, H256, U256}; -use std::sync::RwLock; +use std::cell::RefCell; #[test] fn test_deploy_code() { @@ -22,7 +22,7 @@ fn test_deploy_code() { upgrade_delay_blocks: 0, }; let origin = Address::new(H160([0u8; 20])); - let storage = RwLock::new(Storage::default()); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let env = aurora_engine_sdk::env::Fixed { signer_account_id: owner_id.clone(), diff --git a/engine/src/connector.rs b/engine/src/connector.rs index 60bcc141d..21b359643 100644 --- a/engine/src/connector.rs +++ b/engine/src/connector.rs @@ -713,7 +713,7 @@ pub fn set_contract_data( Ok(contract_data) } -/// Return metdata +/// Return metadata pub fn get_metadata(io: &I) -> Option { io.read_storage(&construct_contract_key( &EthConnectorStorageId::FungibleTokenMetadata, diff --git a/engine/src/engine.rs b/engine/src/engine.rs index c76b760bf..cf444ab9a 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -1745,15 +1745,14 @@ mod tests { use aurora_engine_test_doubles::io::{Storage, StoragePointer}; use aurora_engine_test_doubles::promise::PromiseTracker; use aurora_engine_types::types::RawU256; - use std::sync::RwLock; + use std::cell::RefCell; #[test] fn test_view_call_to_empty_contract_without_input_returns_empty_data() { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); let engine = @@ -1779,8 +1778,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let mut engine = Engine::new_with_state(EngineState::default(), origin, current_account_id, io, &env); @@ -1805,8 +1803,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); let mut engine = @@ -1837,8 +1834,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let mut engine = Engine::new_with_state(EngineState::default(), origin, current_account_id, io, &env); @@ -1867,8 +1863,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); let mut engine = @@ -1896,8 +1891,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); let mut engine = @@ -1923,8 +1917,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); let mut engine = @@ -1943,8 +1936,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); set_balance(&mut io, &origin, &Wei::new_u64(22000)); let mut engine = Engine::new_with_state( @@ -1969,9 +1961,9 @@ mod tests { .unwrap(); engine.receive_erc20_tokens(&nep141_token, &args, ¤t_account_id, &mut handler); - let storage_read = storage.read().unwrap(); - let actual_output = std::str::from_utf8(storage_read.output.as_slice()).unwrap(); - let expected_output = "\"0\""; + let storage = storage.borrow(); + let actual_output = storage.output.as_slice(); + let expected_output = b"\"0\""; assert_eq!(expected_output, actual_output); } @@ -1982,8 +1974,7 @@ mod tests { let origin = aurora_engine_sdk::types::near_account_to_evm_address( env.predecessor_account_id().as_bytes(), ); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); state::set_state(&mut io, EngineState::default()).unwrap(); @@ -2005,8 +1996,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); add_balance(&mut io, &origin, Wei::new_u64(22000)).unwrap(); let mut engine = @@ -2097,8 +2087,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); let engine = Engine::new_with_state(EngineState::default(), origin, current_account_id, io, &env); @@ -2117,8 +2106,7 @@ mod tests { let origin = Address::zero(); let current_account_id = AccountId::default(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); state::set_state(&mut io, expected_state.clone()).unwrap(); @@ -2132,8 +2120,7 @@ mod tests { fn test_refund_transfer_eth_back_from_precompile_address() { let recipient_address = make_address(1, 1); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); let refund_amount = Wei::new_u64(1000); @@ -2156,8 +2143,7 @@ mod tests { fn test_refund_remint_burned_erc20_tokens() { let origin = Address::zero(); let env = Fixed::default(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); state::set_state(&mut io, expected_state.clone()).unwrap(); @@ -2178,8 +2164,7 @@ mod tests { #[test] fn test_refund_free_effective_gas_does_nothing() { let origin = Address::zero(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); state::set_state(&mut io, expected_state).unwrap(); @@ -2196,8 +2181,7 @@ mod tests { #[test] fn test_refund_gas_pays_expected_amount() { let origin = Address::zero(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); let expected_state = EngineState::default(); state::set_state(&mut io, expected_state).unwrap(); @@ -2220,8 +2204,7 @@ mod tests { #[test] fn test_check_nonce_with_increment_succeeds() { let origin = Address::zero(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); increment_nonce(&mut io, &origin); @@ -2231,16 +2214,13 @@ mod tests { #[test] fn test_check_nonce_without_increment_fails() { let origin = Address::zero(); - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); increment_nonce(&mut io, &origin); let actual_error_kind = check_nonce(&io, &origin, &U256::from(0u64)).unwrap_err(); - let actual_error_kind = std::str::from_utf8(actual_error_kind.as_bytes()).unwrap(); - let expected_error_kind = std::str::from_utf8(errors::ERR_INCORRECT_NONCE).unwrap(); - assert_eq!(expected_error_kind, actual_error_kind); + assert_eq!(actual_error_kind.as_bytes(), errors::ERR_INCORRECT_NONCE); } #[test] @@ -2258,8 +2238,7 @@ mod tests { #[test] fn test_filtering_promises_from_logs_with_none_keeps_all() { - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let current_account_id = AccountId::default(); let mut handler = Noop; diff --git a/engine/src/lib.rs b/engine/src/lib.rs index c056cc262..f8c62d246 100644 --- a/engine/src/lib.rs +++ b/engine/src/lib.rs @@ -577,7 +577,6 @@ mod contract { } #[no_mangle] - pub extern "C" fn withdraw() { let io = Runtime; io.assert_one_yocto().sdk_unwrap(); diff --git a/engine/src/map.rs b/engine/src/map.rs index 464f73f81..5544e60cc 100644 --- a/engine/src/map.rs +++ b/engine/src/map.rs @@ -66,9 +66,9 @@ mod tests { use aurora_engine_test_doubles::io::{Storage, StoragePointer}; use aurora_engine_types::account_id::AccountId; use aurora_engine_types::types::Address; - use std::sync::RwLock; + use std::cell::RefCell; - let storage = RwLock::new(Storage::default()); + let storage = RefCell::new(Storage::default()); let storage = StoragePointer(&storage); let left_prefix = KeyPrefix::Nep141Erc20Map; let right_prefix = KeyPrefix::Erc20Nep141Map; diff --git a/engine/src/pausables.rs b/engine/src/pausables.rs index bce888ca6..779063c58 100644 --- a/engine/src/pausables.rs +++ b/engine/src/pausables.rs @@ -171,8 +171,8 @@ impl PausedPrecompilesManager for EnginePrecompilesPauser { mod tests { use super::*; use aurora_engine_test_doubles::io::{Storage, StoragePointer}; + use std::cell::RefCell; use std::iter::once; - use std::sync::RwLock; use test_case::test_case; #[test_case(PrecompileFlags::EXIT_TO_ETHEREUM, exit_to_ethereum::ADDRESS)] @@ -194,7 +194,7 @@ mod tests { #[test] fn test_pausing_precompile_marks_it_as_paused() { - let storage = RwLock::new(Storage::default()); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let mut pauser = EnginePrecompilesPauser::from_io(io); let flags = PrecompileFlags::EXIT_TO_NEAR; @@ -206,7 +206,7 @@ mod tests { #[test] fn test_resuming_precompile_removes_its_mark_as_paused() { - let storage = RwLock::new(Storage::default()); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let mut pauser = EnginePrecompilesPauser::from_io(io); let flags = PrecompileFlags::EXIT_TO_NEAR; @@ -237,7 +237,7 @@ mod tests { #[should_panic] fn test_no_precompile_is_paused_if_storage_contains_too_few_bytes() { let key = EnginePrecompilesPauser::::storage_key(); - let storage = RwLock::new(Storage::default()); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); io.write_storage(key.as_slice(), &[7u8]); let pauser = EnginePrecompilesPauser::from_io(io); diff --git a/engine/src/state.rs b/engine/src/state.rs index f9613a72d..6023f4338 100644 --- a/engine/src/state.rs +++ b/engine/src/state.rs @@ -90,12 +90,11 @@ pub mod error { mod tests { use super::*; use aurora_engine_test_doubles::io::{Storage, StoragePointer}; - use std::sync::RwLock; + use std::cell::RefCell; #[test] fn test_missing_engine_state_is_not_found() { - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let io = StoragePointer(&storage); let actual_error = get_state(&io).unwrap_err(); @@ -107,8 +106,7 @@ mod tests { #[test] fn test_empty_engine_state_is_corrupted() { - let storage = Storage::default(); - let storage = RwLock::new(storage); + let storage = RefCell::new(Storage::default()); let mut io = StoragePointer(&storage); io.write_storage(&bytes_to_key(KeyPrefix::Config, STATE_KEY), &[]); From df11f1486ffe2456749858aa817fedcd83205b85 Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Thu, 26 Jan 2023 13:14:53 +0100 Subject: [PATCH 09/13] Update engine.rs --- engine/src/engine.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/src/engine.rs b/engine/src/engine.rs index f5ccc6a49..e58b27617 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -2319,7 +2319,7 @@ mod tests { #[test] fn test_filtering_promises_from_logs_with_none_keeps_all() { let storage = RefCell::new(Storage::default()); - let io = StoragePointer(&storage); + let mut io = StoragePointer(&storage); let current_account_id = AccountId::default(); let mut handler = Noop; let logs = vec![Log { From 5416ffc790f6c98421756f9d06993be4a55875bb Mon Sep 17 00:00:00 2001 From: Michael Birch Date: Thu, 26 Jan 2023 11:34:04 -0500 Subject: [PATCH 10/13] Remove unused alloc_error_handler feature (#672) --- engine-sdk/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/engine-sdk/src/lib.rs b/engine-sdk/src/lib.rs index 2c93b7088..e667f6670 100644 --- a/engine-sdk/src/lib.rs +++ b/engine-sdk/src/lib.rs @@ -1,5 +1,4 @@ #![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(alloc_error_handler))] #[cfg(feature = "contract")] use crate::prelude::{Address, Vec, U256}; From 772794bd555e21f2b806f6eb3aead484d051d417 Mon Sep 17 00:00:00 2001 From: "Joshua J. Bouw" Date: Wed, 1 Feb 2023 14:11:18 +0400 Subject: [PATCH 11/13] fix: rollback increment_nonce fix --- engine/src/engine.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/engine/src/engine.rs b/engine/src/engine.rs index e58b27617..371fd0a9f 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -924,6 +924,7 @@ pub fn submit( let prepaid_amount = match engine.charge_gas(&sender, &transaction, GasToken::Base) { Ok(gas_result) => gas_result, Err(GasPaymentError::OutOfFund) => { + increment_nonce(&mut io, &sender); let result = SubmitResult::new(TransactionStatus::OutOfFund, 0, vec![]); return Ok(result); } From 8d66ae6dd316bf348c1f3a9cd2ec49bd96ff1f10 Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Wed, 1 Feb 2023 11:20:13 +0100 Subject: [PATCH 12/13] chore: update some rust dependencies (#673) --- Cargo.lock | 591 ++++++++++-------- engine-sdk/Cargo.toml | 10 +- engine-sdk/src/base64.rs | 13 + engine-sdk/src/lib.rs | 1 + engine-standalone-storage/Cargo.toml | 3 +- .../src/json_snapshot/mod.rs | 12 +- engine-standalone-storage/src/lib.rs | 6 +- engine-tests/Cargo.toml | 3 +- engine-tests/src/test_utils/mod.rs | 4 +- .../src/tests/standalone/json_snapshot.rs | 12 +- engine/Cargo.toml | 3 +- engine/src/fungible_token.rs | 2 +- 12 files changed, 364 insertions(+), 296 deletions(-) create mode 100644 engine-sdk/src/base64.rs diff --git a/Cargo.lock b/Cargo.lock index 048634d5a..df7c5d7a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,7 +14,16 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "gimli", + "gimli 0.26.2", +] + +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli 0.27.1", ] [[package]] @@ -36,9 +45,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] @@ -60,9 +69,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" [[package]] name = "arrayref" @@ -105,9 +114,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.58" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" +checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" dependencies = [ "proc-macro2", "quote", @@ -120,7 +129,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -134,11 +143,10 @@ dependencies = [ "aurora-engine-test-doubles", "aurora-engine-transactions", "aurora-engine-types", - "base64", "bitflags", "borsh", "byte-slice-cast", - "digest 0.10.5", + "digest 0.10.6", "ethabi", "evm", "hex", @@ -177,6 +185,7 @@ name = "aurora-engine-sdk" version = "1.0.0" dependencies = [ "aurora-engine-types", + "base64 0.21.0", "borsh", "sha2 0.10.6", "sha3", @@ -203,7 +212,6 @@ dependencies = [ "aurora-engine-test-doubles", "aurora-engine-transactions", "aurora-engine-types", - "base64", "borsh", "bstr", "byte-slice-cast", @@ -278,16 +286,16 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" dependencies = [ - "addr2line", + "addr2line 0.19.0", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.29.0", + "object 0.30.3", "rustc-demangle", ] @@ -297,6 +305,12 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + [[package]] name = "bincode" version = "1.3.3" @@ -440,9 +454,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca0852af221f458706eb0725c03e4ed6c46af9ac98e6a689d5e634215d594dd" +checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b" dependencies = [ "memchr", "once_cell", @@ -452,9 +466,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byte-slice-cast" @@ -491,9 +505,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "bytesize" @@ -533,9 +547,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.74" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" dependencies = [ "jobserver", ] @@ -563,16 +577,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" dependencies = [ "iana-time-zone", "js-sys", "num-integer", "num-traits", "serde", - "time 0.1.44", + "time 0.1.45", "wasm-bindgen", "winapi", ] @@ -737,11 +751,11 @@ dependencies = [ "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli", + "gimli 0.26.2", "log", "regalloc2", "smallvec", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", ] [[package]] @@ -777,7 +791,7 @@ dependencies = [ "cranelift-codegen", "log", "smallvec", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", ] [[package]] @@ -788,7 +802,7 @@ checksum = "bba027cc41bf1d0eee2ddf16caba2ee1be682d0214520fff0129d2c6557fda89" dependencies = [ "cranelift-codegen", "libc", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", ] [[package]] @@ -889,22 +903,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.11" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", - "memoffset", + "memoffset 0.7.1", "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -912,9 +926,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if 1.0.0", ] @@ -960,9 +974,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.80" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7d4e43b25d3c994662706a1d4fcfc32aaa6afd287502c111b237093bb23f3a" +checksum = "322296e2f2e5af4270b54df9e85a02ff037e271af20ba3e7fe1575515dc840b8" dependencies = [ "cc", "cxxbridge-flags", @@ -972,9 +986,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.80" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f8829ddc213e2c1368e51a2564c552b65a8cb6a28f31e576270ac81d5e5827" +checksum = "017a1385b05d631e7875b1f151c9f012d37b53491e2a87f65bff5c262b2111d8" dependencies = [ "cc", "codespan-reporting", @@ -987,15 +1001,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.80" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e72537424b474af1460806647c41d4b6d35d09ef7fe031c5c2fa5766047cc56a" +checksum = "c26bbb078acf09bc1ecda02d4223f03bdd28bd4874edcb0379138efc499ce971" [[package]] name = "cxxbridge-macro" -version = "1.0.80" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "309e4fb93eed90e1e14bea0da16b209f81813ba9fc7830c20ed151dd7bc0a4d7" +checksum = "357f40d1f06a24b60ae1fe122542c1fb05d28d32acb2aed064e84bc2ad1e252e" dependencies = [ "proc-macro2", "quote", @@ -1069,9 +1083,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ "block-buffer 0.10.3", "crypto-common", @@ -1112,9 +1126,9 @@ checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" [[package]] name = "ed25519" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ "signature", ] @@ -1135,9 +1149,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "elastic-array" @@ -1157,7 +1171,6 @@ dependencies = [ "aurora-engine-sdk", "aurora-engine-transactions", "aurora-engine-types", - "base64", "borsh", "evm-core", "hex", @@ -1182,18 +1195,18 @@ dependencies = [ [[package]] name = "enum-map" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a56d54c8dd9b3ad34752ed197a4eb2a6601bc010808eb097a04a58ae4c43e1" +checksum = "50c25992259941eb7e57b936157961b217a4fc8597829ddef0596d6c3cd86e1a" dependencies = [ "enum-map-derive", ] [[package]] name = "enum-map-derive" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9045e2676cd5af83c3b167d917b0a5c90a4d8e266e2683d6631b235c457fc27" +checksum = "2a4da76b3b6116d758c7ba93f7ec6a35d2e2cf24feda76c6e38a375f4d5c59f2" dependencies = [ "proc-macro2", "quote", @@ -1223,9 +1236,9 @@ dependencies = [ [[package]] name = "environmental" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" [[package]] name = "errno" @@ -1300,9 +1313,9 @@ dependencies = [ [[package]] name = "ethereum-types" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81224dc661606574f5a0f28c9947d0ee1d93ff11c5f1c4e7272f52e8c0b5483c" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ "ethbloom", "fixed-hash 0.8.0", @@ -1455,9 +1468,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" dependencies = [ "futures-channel", "futures-core", @@ -1469,9 +1482,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" dependencies = [ "futures-core", "futures-sink", @@ -1479,15 +1492,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" dependencies = [ "futures-core", "futures-task", @@ -1496,15 +1509,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" dependencies = [ "proc-macro2", "quote", @@ -1513,21 +1526,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" dependencies = [ "futures-channel", "futures-core", @@ -1602,11 +1615,17 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" + [[package]] name = "git2" -version = "0.15.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1" +checksum = "ccf7f68c2995f392c49fffb4f95ae2c873297830eb25c6bc4c114ce8f4562acc" dependencies = [ "bitflags", "libc", @@ -1619,9 +1638,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" @@ -1714,6 +1733,15 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + [[package]] name = "hex" version = "0.4.3" @@ -1739,7 +1767,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -1789,9 +1817,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.22" +version = "0.14.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfba89e19b959ca163c7752ba59d737c1ceea53a5d31a149c805446fc958064" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" dependencies = [ "bytes", "futures-channel", @@ -1909,9 +1937,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown 0.12.3", @@ -1944,9 +1972,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "jobserver" @@ -1968,15 +1996,18 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" +checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +dependencies = [ + "cpufeatures", +] [[package]] name = "lazy-static-include" -version = "3.1.2" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e559d5071cbb9743796593a892d96a7cc411d90aad711f57cc7dcbbf3893c10c" +checksum = "b1c2e13f42790900c1a0736b66f8bfbf99d02ee9fb9c54571c9f2d1d4891bfb0" dependencies = [ "lazy_static", "manifest-dir-macros", @@ -2006,15 +2037,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.137" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libgit2-sys" -version = "0.14.0+1.5.0" +version = "0.14.2+1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a00859c70c8a4f7218e6d1cc32875c4b55f6799445b842b0d8ed5e4c3d959b" +checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4" dependencies = [ "cc", "libc", @@ -2026,9 +2057,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if 1.0.0", "winapi", @@ -2057,7 +2088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ "arrayref", - "base64", + "base64 0.13.1", "digest 0.9.0", "hmac-drbg", "libsecp256k1-core", @@ -2126,9 +2157,9 @@ dependencies = [ [[package]] name = "link-cplusplus" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" dependencies = [ "cc", ] @@ -2232,7 +2263,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -2253,9 +2284,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" +checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" dependencies = [ "libc", ] @@ -2269,6 +2300,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "memory_units" version = "0.4.0" @@ -2283,9 +2323,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.4" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" dependencies = [ "adler", ] @@ -2443,7 +2483,7 @@ name = "near-primitives-core" version = "0.0.0" source = "git+https://github.com/birchmd/nearcore.git?rev=6033903be2037d67510188450f289b2d6e033f04#6033903be2037d67510188450f289b2d6e033f04" dependencies = [ - "base64", + "base64 0.13.1", "borsh", "bs58", "derive_more", @@ -2480,7 +2520,7 @@ name = "near-sdk" version = "3.1.0" source = "git+https://github.com/aurora-is-near/near-sdk-rs.git?rev=a4634850023fd115053970f17e10861779d5167d#a4634850023fd115053970f17e10861779d5167d" dependencies = [ - "base64", + "base64 0.13.1", "borsh", "bs58", "near-primitives-core", @@ -2610,7 +2650,7 @@ dependencies = [ "anyhow", "borsh", "loupe", - "memoffset", + "memoffset 0.6.5", "near-cache", "near-primitives", "near-stable-hasher", @@ -2678,14 +2718,23 @@ dependencies = [ [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] +[[package]] +name = "nom8" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" +dependencies = [ + "memchr", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2734,9 +2783,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" dependencies = [ "num-traits", ] @@ -2798,20 +2847,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.6" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ + "hermit-abi 0.2.6", "libc", ] @@ -2829,18 +2869,18 @@ dependencies = [ [[package]] name = "object" -version = "0.29.0" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "oorandom" @@ -2862,9 +2902,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.77" +version = "0.9.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" +checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" dependencies = [ "autocfg", "cc", @@ -2923,9 +2963,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.3.1" +version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3baf96e39c5359d2eb0dd6ccb42c62b91d9678aa68160d261b9e0ccbf9e9dea9" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" [[package]] name = "overload" @@ -2945,9 +2985,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" +checksum = "c3840933452adf7b3b9145e27086a5a3376c619dca1a21b1e5a5af0d54979bed" dependencies = [ "arrayvec 0.7.2", "bitvec", @@ -2959,11 +2999,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" +checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" dependencies = [ - "proc-macro-crate 1.2.1", + "proc-macro-crate 1.3.0", "proc-macro2", "quote", "syn", @@ -2988,7 +3028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" dependencies = [ "lock_api 0.3.4", - "parking_lot_core 0.7.2", + "parking_lot_core 0.7.3", ] [[package]] @@ -2998,14 +3038,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api 0.4.9", - "parking_lot_core 0.9.4", + "parking_lot_core 0.9.6", ] [[package]] name = "parking_lot_core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" +checksum = "b93f386bb233083c799e6e642a9d73db98c24a5deeb95ffc85bf281255dffc98" dependencies = [ "cfg-if 0.1.10", "cloudabi", @@ -3017,9 +3057,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.4" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" dependencies = [ "cfg-if 1.0.0", "libc", @@ -3030,9 +3070,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" +checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" [[package]] name = "peeking_take_while" @@ -3160,7 +3200,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "878c6cbf956e03af9aa8204b407b9cbf47c072164800aa918c516cd4b056c50c" dependencies = [ - "base64", + "base64 0.13.1", "byteorder", "bytes", "fallible-iterator", @@ -3185,9 +3225,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "primitive-types" @@ -3224,13 +3264,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" dependencies = [ "once_cell", - "thiserror", - "toml", + "toml_edit", ] [[package]] @@ -3259,9 +3298,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" dependencies = [ "unicode-ident", ] @@ -3382,9 +3421,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -3468,21 +3507,19 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -3528,9 +3565,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -3548,9 +3585,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "region" @@ -3600,7 +3637,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -3707,7 +3744,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.14", + "semver 1.0.16", ] [[package]] @@ -3726,15 +3763,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "same-file" @@ -3747,9 +3784,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d8a765117b237ef233705cc2cc4c6a27fccd46eea6ef0c8c6dae5f3ef407f8" +checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608" dependencies = [ "bitvec", "cfg-if 1.0.0", @@ -3760,11 +3797,11 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcd47b380d8c4541044e341dcd9475f55ba37ddc50c908d945fc036a8642496" +checksum = "303959cf613a6f6efd19ed4b4ad5bf79966a13352716299ad532cfb115f4205c" dependencies = [ - "proc-macro-crate 1.2.1", + "proc-macro-crate 1.3.0", "proc-macro2", "quote", "syn", @@ -3778,9 +3815,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" +checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" [[package]] name = "seahash" @@ -3790,9 +3827,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "secp256k1" -version = "0.24.1" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff55dc09d460954e9ef2fa8a7ced735a964be9981fd50e870b2b3b0705e14964" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" dependencies = [ "rand 0.8.5", "secp256k1-sys", @@ -3818,9 +3855,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" [[package]] name = "semver-parser" @@ -3830,9 +3867,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.147" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] @@ -3849,18 +3886,18 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.7" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" +checksum = "718dc5fff5b36f99093fc49b280cfc96ce6fc824317783bff5a1fed0c7a64819" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -3869,9 +3906,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.87" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ "itoa", "ryu", @@ -3880,9 +3917,9 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" +checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e" dependencies = [ "proc-macro2", "quote", @@ -3910,7 +3947,7 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -3919,7 +3956,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", "keccak", ] @@ -4065,9 +4102,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.103" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", @@ -4100,9 +4137,9 @@ checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" [[package]] name = "target-lexicon" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1" +checksum = "9410d0f6853b1d94f0e519fb95df60f29d2c1eff2d921ffdf01a4c8a3b54f12d" [[package]] name = "tempfile" @@ -4120,9 +4157,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] @@ -4157,18 +4194,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -4197,9 +4234,9 @@ dependencies = [ [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -4208,13 +4245,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fab5c8b9980850e06d92ddbe3ab839c062c801f3927c0fb8abd6fc8e918fbca" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ "itoa", - "libc", - "num_threads", "serde", "time-core", "time-macros", @@ -4228,9 +4263,9 @@ checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" [[package]] name = "time-macros" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bb801831d812c562ae7d2bfb531f26e66e4e1f6b17307ba4149c5064710e5b" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" dependencies = [ "time-core", ] @@ -4271,9 +4306,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.2" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" dependencies = [ "autocfg", "bytes", @@ -4286,7 +4321,7 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "winapi", + "windows-sys", ] [[package]] @@ -4301,9 +4336,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.8.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" dependencies = [ "proc-macro2", "quote", @@ -4375,13 +4410,30 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" + +[[package]] +name = "toml_edit" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" +dependencies = [ + "indexmap", + "nom8", + "toml_datetime", +] + [[package]] name = "tonic" version = "0.6.2" @@ -4390,7 +4442,7 @@ checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" dependencies = [ "async-stream", "async-trait", - "base64", + "base64 0.13.1", "bytes", "futures-core", "futures-util", @@ -4477,7 +4529,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" dependencies = [ "crossbeam-channel", - "time 0.3.16", + "time 0.3.17", "tracing-subscriber", ] @@ -4567,21 +4619,21 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "uint" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", "crunchy", @@ -4591,15 +4643,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-normalization" @@ -4791,7 +4843,7 @@ dependencies = [ "enumset", "rkyv", "smallvec", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", "thiserror", "wasmer-types-near", "wasmer-vm-near", @@ -4808,7 +4860,7 @@ dependencies = [ "dynasm", "dynasmrt", "lazy_static", - "memoffset", + "memoffset 0.6.5", "more-asserts", "rayon", "smallvec", @@ -4829,7 +4881,7 @@ dependencies = [ "memmap2", "more-asserts", "rustc-demangle", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", "thiserror", "wasmer-compiler-near", "wasmer-types-near", @@ -4941,7 +4993,7 @@ dependencies = [ "cfg-if 1.0.0", "indexmap", "libc", - "memoffset", + "memoffset 0.6.5", "more-asserts", "region 3.0.0", "rkyv", @@ -4997,7 +5049,7 @@ dependencies = [ "psm", "region 2.2.0", "serde", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", "wasmparser 0.84.0", "wasmtime-cranelift", "wasmtime-environ", @@ -5018,11 +5070,11 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli", + "gimli 0.26.2", "log", "more-asserts", "object 0.28.4", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", "thiserror", "wasmparser 0.84.0", "wasmtime-environ", @@ -5036,13 +5088,13 @@ checksum = "4201389132ec467981980549574b33fc70d493b40f2c045c8ce5c7b54fbad97e" dependencies = [ "anyhow", "cranelift-entity", - "gimli", + "gimli 0.26.2", "indexmap", "log", "more-asserts", "object 0.28.4", "serde", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", "thiserror", "wasmparser 0.84.0", "wasmtime-types", @@ -5054,19 +5106,19 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1587ca7752d00862faa540d00fd28e5ccf1ac61ba19756449193f1153cb2b127" dependencies = [ - "addr2line", + "addr2line 0.17.0", "anyhow", "bincode", "cfg-if 1.0.0", "cpp_demangle", - "gimli", + "gimli 0.26.2", "log", "object 0.28.4", "region 2.2.0", "rustc-demangle", "rustix", "serde", - "target-lexicon 0.12.4", + "target-lexicon 0.12.5", "thiserror", "wasmtime-environ", "wasmtime-runtime", @@ -5096,7 +5148,7 @@ dependencies = [ "libc", "log", "mach", - "memoffset", + "memoffset 0.6.5", "more-asserts", "rand 0.8.5", "region 2.2.0", @@ -5143,9 +5195,9 @@ dependencies = [ [[package]] name = "which" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" dependencies = [ "either", "libc", @@ -5200,51 +5252,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "wyz" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" dependencies = [ "tap", ] @@ -5260,9 +5312,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.2" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" dependencies = [ "proc-macro2", "quote", @@ -5286,10 +5338,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.1+zstd.1.5.2" +version = "2.0.5+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596" dependencies = [ "cc", "libc", + "pkg-config", ] diff --git a/engine-sdk/Cargo.toml b/engine-sdk/Cargo.toml index 11aaef8bf..20b5c9690 100644 --- a/engine-sdk/Cargo.toml +++ b/engine-sdk/Cargo.toml @@ -14,12 +14,14 @@ autobenches = false [dependencies] aurora-engine-types = { path = "../engine-types", default-features = false } -borsh = { version = "0.9.3", default-features = false } -sha3 = { version = "0.10.2", default-features = false } -sha2 = { version = "0.10.2", default-features = false } + +base64 = { version = "0.21", default-features = false, features = [ "alloc" ] } +borsh = { version = "0.9", default-features = false } +sha2 = { version = "0.10", default-features = false } +sha3 = { version = "0.10", default-features = false } [features] -std = ["aurora-engine-types/std", "borsh/std", "sha3/std", "sha2/std"] +std = ["aurora-engine-types/std", "borsh/std", "sha3/std", "sha2/std", "base64/std" ] contract = [] log = [] all-promise-actions = [] diff --git a/engine-sdk/src/base64.rs b/engine-sdk/src/base64.rs new file mode 100644 index 000000000..c8e444f02 --- /dev/null +++ b/engine-sdk/src/base64.rs @@ -0,0 +1,13 @@ +use aurora_engine_types::{String, Vec}; +pub use base64::DecodeError; +use base64::Engine; + +/// Encode arbitrary octets as base64 using the standard `base64::Engine`. +pub fn encode>(input: T) -> String { + base64::engine::general_purpose::STANDARD.encode(input) +} + +/// Decode from string reference as octets using the standard `base64::Engine`. +pub fn decode>(input: T) -> Result, DecodeError> { + base64::engine::general_purpose::STANDARD.decode(input) +} diff --git a/engine-sdk/src/lib.rs b/engine-sdk/src/lib.rs index e667f6670..2e651914d 100644 --- a/engine-sdk/src/lib.rs +++ b/engine-sdk/src/lib.rs @@ -5,6 +5,7 @@ use crate::prelude::{Address, Vec, U256}; use crate::prelude::{H256, STORAGE_PRICE_PER_BYTE}; pub use types::keccak; +pub mod base64; pub mod caching; pub mod env; pub mod error; diff --git a/engine-standalone-storage/Cargo.toml b/engine-standalone-storage/Cargo.toml index e50a29144..1c0e60c19 100644 --- a/engine-standalone-storage/Cargo.toml +++ b/engine-standalone-storage/Cargo.toml @@ -19,14 +19,13 @@ aurora-engine-types = { path = "../engine-types", default-features = false, feat aurora-engine-sdk = { path = "../engine-sdk", default-features = false, features = ["std"] } aurora-engine-transactions = { path = "../engine-transactions", default-features = false, features = ["std"] } aurora-engine-precompiles = { path = "../engine-precompiles", default-features = false, features = ["std"] } -borsh = { version = "0.9.3" } +borsh = "0.9" evm-core = { git = "https://github.com/aurora-is-near/sputnikvm.git", tag = "v0.37.4-aurora", default-features = false } hex = "0.4.3" rocksdb = { version = "0.19.0", default-features = false } postgres = "0.19.2" serde = "1.0.130" serde_json = "1.0.72" -base64 = "0.13.0" [features] default = ["snappy", "lz4", "zstd", "zlib"] diff --git a/engine-standalone-storage/src/json_snapshot/mod.rs b/engine-standalone-storage/src/json_snapshot/mod.rs index 24ce4367f..e01a82000 100644 --- a/engine-standalone-storage/src/json_snapshot/mod.rs +++ b/engine-standalone-storage/src/json_snapshot/mod.rs @@ -14,8 +14,8 @@ pub fn initialize_engine_state( let mut batch = rocksdb::WriteBatch::default(); for entry in snapshot.result.values { - let key = base64::decode(entry.key)?; - let value = base64::decode(entry.value)?; + let key = aurora_engine_sdk::base64::decode(entry.key)?; + let value = aurora_engine_sdk::base64::decode(entry.value)?; let storage_key = crate::construct_engine_key(&key, block_height, transaction_position); let storage_value = crate::diff::DiffValue::Modified(value); batch.put(storage_key, storage_value.try_to_bytes()?); @@ -26,15 +26,17 @@ pub fn initialize_engine_state( } pub mod error { + use aurora_engine_sdk::base64::DecodeError; + #[derive(Debug)] pub enum Error { - Base64(base64::DecodeError), + Base64(DecodeError), Rocksdb(rocksdb::Error), Borsh(std::io::Error), } - impl From for Error { - fn from(e: base64::DecodeError) -> Self { + impl From for Error { + fn from(e: DecodeError) -> Self { Self::Base64(e) } } diff --git a/engine-standalone-storage/src/lib.rs b/engine-standalone-storage/src/lib.rs index 0f536c09b..a1be495f7 100644 --- a/engine-standalone-storage/src/lib.rs +++ b/engine-standalone-storage/src/lib.rs @@ -315,11 +315,11 @@ impl Storage { let value = if iter.valid() { let bytes = iter.value().unwrap(); - diff::DiffValue::try_from_bytes(bytes).unwrap_or_else(|e| { + DiffValue::try_from_bytes(bytes).unwrap_or_else(|e| { panic!( "Could not deserialize key={} value={} error={:?}", - base64::encode(&db_key), - base64::encode(bytes), + aurora_engine_sdk::base64::encode(&db_key), + aurora_engine_sdk::base64::encode(bytes), e, ) }) diff --git a/engine-tests/Cargo.toml b/engine-tests/Cargo.toml index eb5daaf76..7b32f0ff0 100644 --- a/engine-tests/Cargo.toml +++ b/engine-tests/Cargo.toml @@ -29,7 +29,6 @@ evm = { git = "https://github.com/aurora-is-near/sputnikvm.git", tag = "v0.37.4- evm-runtime = { git = "https://github.com/aurora-is-near/sputnikvm.git", tag = "v0.37.4-aurora", default-features = false, features = ["std", "tracing"] } evm-gasometer = { git = "https://github.com/aurora-is-near/sputnikvm.git", tag = "v0.37.4-aurora", default-features = false, features = ["std", "tracing"] } rlp = { version = "0.5.0", default-features = false } -base64 = "0.13.0" bstr = "1.0.1" byte-slice-cast = { version = "1.0", default-features = false } ethabi = "18.0" @@ -47,7 +46,7 @@ near-primitives = { git = "https://github.com/birchmd/nearcore.git", rev = "6033 libsecp256k1 = { version = "0.7.0", default-features = false } rand = "0.8.5" criterion = "0.4.0" -git2 = "0.15" +git2 = "0.16" tempfile = "3.2.0" walrus = "0.19" diff --git a/engine-tests/src/test_utils/mod.rs b/engine-tests/src/test_utils/mod.rs index 881124cf3..8ae831e4e 100644 --- a/engine-tests/src/test_utils/mod.rs +++ b/engine-tests/src/test_utils/mod.rs @@ -248,8 +248,8 @@ impl AuroraRunner { ) { let trie = &mut self.ext.underlying.fake_trie; for entry in snapshot.result.values { - let key = base64::decode(entry.key).unwrap(); - let value = base64::decode(entry.value).unwrap(); + let key = aurora_engine_sdk::base64::decode(entry.key).unwrap(); + let value = aurora_engine_sdk::base64::decode(entry.value).unwrap(); trie.insert(key, value); } } diff --git a/engine-tests/src/tests/standalone/json_snapshot.rs b/engine-tests/src/tests/standalone/json_snapshot.rs index 764ddef0b..4e0050f45 100644 --- a/engine-tests/src/tests/standalone/json_snapshot.rs +++ b/engine-tests/src/tests/standalone/json_snapshot.rs @@ -19,8 +19,8 @@ fn test_consume_snapshot() { // check accounts to see they were written properly runner.env.block_height = snapshot.result.block_height + 1; for entry in snapshot.result.values { - let key = base64::decode(entry.key).unwrap(); - let value = base64::decode(entry.value).unwrap(); + let key = aurora_engine_sdk::base64::decode(entry.key).unwrap(); + let value = aurora_engine_sdk::base64::decode(entry.value).unwrap(); if key.as_slice().starts_with(&NONCE_PREFIX) { let address = address_from_key(&key); let nonce = U256::from_big_endian(&value); @@ -80,8 +80,8 @@ fn test_produce_snapshot() { // Computed snapshot should exactly the same keys from initial snapshot for entry in snapshot.result.values.iter() { - let key = base64::decode(&entry.key).unwrap(); - let value = base64::decode(&entry.value).unwrap(); + let key = aurora_engine_sdk::base64::decode(&entry.key).unwrap(); + let value = aurora_engine_sdk::base64::decode(&entry.value).unwrap(); assert_eq!(computed_snapshot.remove(&key).unwrap(), value); } assert!(computed_snapshot.is_empty()); @@ -94,12 +94,12 @@ fn test_produce_snapshot() { // New snapshot should still contain all keys from initial snapshot for entry in snapshot.result.values { - let key = base64::decode(entry.key).unwrap(); + let key = aurora_engine_sdk::base64::decode(entry.key).unwrap(); // skip the eth-connector keys; they were changed by minting the new account if key[0..3] == [7, 6, 1] { continue; } - let value = base64::decode(entry.value).unwrap(); + let value = aurora_engine_sdk::base64::decode(entry.value).unwrap(); assert_eq!(computed_snapshot.get(&key).unwrap(), &value); } diff --git a/engine/Cargo.toml b/engine/Cargo.toml index 982d22228..629f8ffe1 100644 --- a/engine/Cargo.toml +++ b/engine/Cargo.toml @@ -20,7 +20,6 @@ aurora-engine-types = { path = "../engine-types", default-features = false } aurora-engine-sdk = { path = "../engine-sdk", default-features = false } aurora-engine-precompiles = { path = "../engine-precompiles", default-features = false } aurora-engine-transactions = { path = "../engine-transactions", default-features = false } -base64 = { version = "0.13.0", default-features = false, features = ["alloc"] } bitflags = { version = "1.3", default-features = false } borsh = { version = "0.9.3", default-features = false } byte-slice-cast = { version = "1.0", default-features = false } @@ -42,7 +41,7 @@ digest = "0.10" [features] default = ["std"] -std = ["aurora-engine-types/std", "aurora-engine-sdk/std", "aurora-engine-precompiles/std", "aurora-engine-transactions/std", "base64/std", "borsh/std", "byte-slice-cast/std", "ethabi/std", "evm/std", "hex/std", "rjson/std", "rlp/std"] +std = ["aurora-engine-types/std", "aurora-engine-sdk/std", "aurora-engine-precompiles/std", "aurora-engine-transactions/std", "borsh/std", "byte-slice-cast/std", "ethabi/std", "evm/std", "hex/std", "rjson/std", "rlp/std"] contract = ["aurora-engine-sdk/contract", "aurora-engine-precompiles/contract"] evm_bully = [] log = ["aurora-engine-sdk/log", "aurora-engine-precompiles/log"] diff --git a/engine/src/fungible_token.rs b/engine/src/fungible_token.rs index 045e68aec..9cd33bf40 100644 --- a/engine/src/fungible_token.rs +++ b/engine/src/fungible_token.rs @@ -63,7 +63,7 @@ pub struct FungibleReferenceHash([u8; 32]); impl FungibleReferenceHash { /// Encode to base64-encoded string pub fn encode(&self) -> String { - base64::encode(self) + aurora_engine_sdk::base64::encode(self) } } From 60165ade1f8c725181cb85149c1d1633590e8094 Mon Sep 17 00:00:00 2001 From: "Joshua J. Bouw" Date: Wed, 1 Feb 2023 20:56:38 +0700 Subject: [PATCH 13/13] fix: incremented nonce on out of fund failure (#671) --- engine-tests/src/tests/sanity.rs | 60 +++++++++++++++++--------------- engine/src/engine.rs | 29 ++------------- 2 files changed, 34 insertions(+), 55 deletions(-) diff --git a/engine-tests/src/tests/sanity.rs b/engine-tests/src/tests/sanity.rs index f4f9d95cb..0ad4fd6b7 100644 --- a/engine-tests/src/tests/sanity.rs +++ b/engine-tests/src/tests/sanity.rs @@ -150,19 +150,19 @@ fn test_state_format() { assert_eq!(hex::encode(state.try_to_vec().unwrap()), expected_hex); } +fn generate_code(len: usize) -> Vec { + let mut rng = rand::thread_rng(); + let mut buf = vec![0u8; len]; + rng.fill_bytes(&mut buf); + buf +} + #[test] fn test_deploy_contract() { let (mut runner, mut signer, _) = initialize_transfer(); // Randomly generate some "contract code" - const LEN: usize = 567; - let code: Vec = { - let mut rng = rand::thread_rng(); - let mut buf = vec![0u8; LEN]; - rng.fill_bytes(&mut buf); - buf - }; - + let code = generate_code(567); // Deploy that code let result = runner .submit_with_signer(&mut signer, |nonce| { @@ -183,12 +183,7 @@ fn test_deploy_largest_contract() { let (mut runner, mut signer, _) = initialize_transfer(); let len = evm::Config::berlin().create_contract_limit.unwrap(); - let code: Vec = { - let mut rng = rand::thread_rng(); - let mut buf = vec![0u8; len]; - rng.fill_bytes(&mut buf); - buf - }; + let code = generate_code(len); // Deploy that code let (result, profile) = runner @@ -352,9 +347,7 @@ fn test_solidity_pure_bench() { ); // Pure rust version of the same contract - let base_path = std::path::Path::new("../etc") - .join("tests") - .join("benchmark-contract"); + let base_path = Path::new("../etc").join("tests").join("benchmark-contract"); let output_path = base_path.join("target/wasm32-unknown-unknown/release/benchmark_contract.wasm"); test_utils::rust::compile(base_path); @@ -404,7 +397,7 @@ fn test_revert_during_contract_deploy() { .submit_transaction(&signer.secret_key, deploy_tx) .unwrap(); - let revert_bytes = crate::test_utils::unwrap_revert(submit_result); + let revert_bytes = test_utils::unwrap_revert(submit_result); // First 4 bytes is a function selector with signature `Error(string)` assert_eq!(&revert_bytes[0..4], &[8, 195, 121, 160]); // Remaining data is an ABI-encoded string @@ -562,9 +555,7 @@ fn test_override_state() { )) .unwrap(); match result { - crate::prelude::parameters::TransactionStatus::Succeed(bytes) => { - Address::try_from_slice(&bytes[12..32]).unwrap() - } + TransactionStatus::Succeed(bytes) => Address::try_from_slice(&bytes[12..32]).unwrap(), _ => panic!("tx failed"), } }; @@ -808,6 +799,8 @@ fn test_transfer_charging_gas_success() { #[test] fn test_eth_transfer_charging_gas_not_enough_balance() { + use near_vm_errors::{FunctionCallError, HostError, VMError}; + let (mut runner, mut source_account, dest_address) = initialize_transfer(); let source_address = test_utils::address_from_secret_key(&source_account.secret_key); let transaction = |nonce| { @@ -829,10 +822,13 @@ fn test_eth_transfer_charging_gas_not_enough_balance() { test_utils::validate_address_balance_and_nonce(&runner, dest_address, Wei::zero(), 0.into()); // attempt transfer - let result = runner + let error = runner .submit_with_signer(&mut source_account, transaction) - .unwrap(); - assert_eq!(result.status, TransactionStatus::OutOfFund); + .unwrap_err(); + assert!(matches!(error, VMError::FunctionCallError( + FunctionCallError::HostError( + HostError::GuestPanic { panic_msg })) if panic_msg == "ERR_OUT_OF_FUND" + )); // validate post-state let relayer = sdk::types::near_account_to_evm_address( @@ -843,8 +839,8 @@ fn test_eth_transfer_charging_gas_not_enough_balance() { &runner, source_address, INITIAL_BALANCE, - // nonce is still incremented since the transaction was otherwise valid - (INITIAL_NONCE + 1).into(), + // nonce is still not incremented since the transaction was invalid + INITIAL_NONCE.into(), ); test_utils::validate_address_balance_and_nonce(&runner, dest_address, Wei::zero(), 0.into()); test_utils::validate_address_balance_and_nonce(&runner, relayer, Wei::zero(), 0.into()); @@ -996,6 +992,8 @@ fn test_eth_transfer_insufficient_balance_sim() { // Same as `test_eth_transfer_charging_gas_not_enough_balance` but run through `near-sdk-sim`. #[test] fn test_eth_transfer_charging_gas_not_enough_balance_sim() { + use near_primitives::{errors::TxExecutionError, transaction::ExecutionStatus}; + let (aurora, mut signer, address) = initialize_evm_sim(); // Run transaction which will fail (not enough balance to cover gas) @@ -1009,13 +1007,17 @@ fn test_eth_transfer_charging_gas_not_enough_balance_sim() { &signer.secret_key, ); let call_result = aurora.call("submit", rlp::encode(&signed_tx).as_ref()); - let result: SubmitResult = call_result.unwrap_borsh(); - assert_eq!(result.status, TransactionStatus::OutOfFund); + let outcome = call_result.outcome(); + assert!(matches!( + &outcome.status, + ExecutionStatus::Failure( + TxExecutionError::ActionError(e)) if e.to_string().contains("ERR_OUT_OF_FUND") + )); // validate post-state assert_eq!( query_address_sim(&address, "get_nonce", &aurora), - U256::from(INITIAL_NONCE + 1), + INITIAL_NONCE.into(), // nonce hasn't been changed because an error occurs ); assert_eq!( query_address_sim(&address, "get_balance", &aurora), diff --git a/engine/src/engine.rs b/engine/src/engine.rs index cf444ab9a..35d2c64a2 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -111,13 +111,6 @@ pub enum EngineErrorKind { } impl EngineErrorKind { - pub fn with_gas_used(self, gas_used: u64) -> EngineError { - EngineError { - kind: self, - gas_used, - } - } - pub fn as_bytes(&self) -> &[u8] { use EngineErrorKind::*; match self { @@ -490,13 +483,7 @@ impl<'env, I: IO + Copy, E: Env> Engine<'env, I, E> { }; let used_gas = executor.used_gas(); - let status = match exit_reason.into_result(result) { - Ok(status) => status, - Err(e) => { - increment_nonce(&mut self.io, &origin); - return Err(e.with_gas_used(used_gas)); - } - }; + let status = exit_reason.into_result(result)?; let (values, logs) = executor.into_state().deconstruct(); let logs = filter_promises_from_logs(&self.io, handler, logs, &self.current_account_id); @@ -571,13 +558,7 @@ impl<'env, I: IO + Copy, E: Env> Engine<'env, I, E> { ); let used_gas = executor.used_gas(); - let status = match exit_reason.into_result(result) { - Ok(status) => status, - Err(e) => { - increment_nonce(&mut self.io, origin); - return Err(e.with_gas_used(used_gas)); - } - }; + let status = exit_reason.into_result(result)?; let (values, logs) = executor.into_state().deconstruct(); let logs = filter_promises_from_logs(&self.io, handler, logs, &self.current_account_id); @@ -903,11 +884,6 @@ pub fn submit( let mut engine = Engine::new_with_state(state, sender, current_account_id, io, env); let prepaid_amount = match engine.charge_gas(&sender, &transaction) { Ok(gas_result) => gas_result, - Err(GasPaymentError::OutOfFund) => { - increment_nonce(&mut io, &sender); - let result = SubmitResult::new(TransactionStatus::OutOfFund, 0, vec![]); - return Ok(result); - } Err(err) => { return Err(EngineErrorKind::GasPayment(err).into()); } @@ -1208,6 +1184,7 @@ pub fn get_nonce(io: &I, address: &Address) -> U256 { .unwrap_or_else(|_| U256::zero()) } +#[cfg(test)] pub fn increment_nonce(io: &mut I, address: &Address) { let account_nonce = get_nonce(io, address); let new_nonce = account_nonce.saturating_add(U256::one());