difftreelog
Merge pull request #961 from UniqueNetwork/test/send_value_to_contract_with_evm_call
in: master
Send value to contract with evm call
3 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2777,7 +2777,7 @@
[[package]]
name = "fc-consensus"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"async-trait",
"fc-db",
@@ -2794,7 +2794,7 @@
[[package]]
name = "fc-db"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"fp-storage",
"kvdb-rocksdb",
@@ -2813,7 +2813,7 @@
[[package]]
name = "fc-mapping-sync"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"fc-db",
"fc-storage",
@@ -2834,7 +2834,7 @@
[[package]]
name = "fc-rpc"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"ethereum-types",
@@ -2883,7 +2883,7 @@
[[package]]
name = "fc-rpc-core"
version = "1.1.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"ethereum-types",
@@ -2896,7 +2896,7 @@
[[package]]
name = "fc-storage"
version = "1.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"ethereum-types",
@@ -3048,7 +3048,7 @@
[[package]]
name = "fp-account"
version = "1.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"hex",
"impl-serde",
@@ -3066,7 +3066,7 @@
[[package]]
name = "fp-consensus"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"parity-scale-codec",
@@ -3078,7 +3078,7 @@
[[package]]
name = "fp-ethereum"
version = "1.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"ethereum-types",
@@ -3092,7 +3092,7 @@
[[package]]
name = "fp-evm"
version = "3.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"evm",
"frame-support",
@@ -3108,7 +3108,7 @@
[[package]]
name = "fp-rpc"
version = "3.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"ethereum-types",
@@ -3125,7 +3125,7 @@
[[package]]
name = "fp-self-contained"
version = "1.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"frame-support",
"parity-scale-codec",
@@ -3137,7 +3137,7 @@
[[package]]
name = "fp-storage"
version = "2.0.0"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"parity-scale-codec",
"serde",
@@ -6278,7 +6278,7 @@
[[package]]
name = "pallet-base-fee"
version = "1.0.0"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"fp-evm",
"frame-support",
@@ -6542,7 +6542,7 @@
[[package]]
name = "pallet-ethereum"
version = "4.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"ethereum",
"ethereum-types",
@@ -6565,7 +6565,7 @@
[[package]]
name = "pallet-evm"
version = "6.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"environmental",
"evm",
@@ -6644,7 +6644,7 @@
[[package]]
name = "pallet-evm-precompile-simple"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42#4f7a610defd7623aa147d83c83cbc42f907ce8bb"
+source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.42-1#cf3f4f309c7b053c29a619b78fd27b744cbe020a"
dependencies = [
"fp-evm",
"ripemd",
Cargo.tomldiffbeforeafterboth65unique-runtime = { path = "runtime/unique" }65unique-runtime = { path = "runtime/unique" }666667# Frontier (Unique patches over the Parity version)67# Frontier (Unique patches over the Parity version)68fc-consensus = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }68fc-consensus = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }69fc-db = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }69fc-db = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }70fc-mapping-sync = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }70fc-mapping-sync = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }71fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }71fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }72fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }72fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }73fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }73fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }74fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }74fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }75fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }75fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }76fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }76fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }77pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }77pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }78pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }78pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }79pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }79pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }80pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42" }80pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.42-1" }818182# Parity82# Parity83codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2.2" }83codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2.2" }tests/src/eth/transferValue.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/eth/transferValue.test.ts
@@ -0,0 +1,64 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import {IKeyringPair} from '@polkadot/types/types';
+import {itEth, usingEthPlaygrounds} from './util';
+import {expect} from 'chai';
+
+describe('Send value to contract', () => {
+ let donor: IKeyringPair;
+
+ before(async () => {
+ await usingEthPlaygrounds(async (_helper, privateKey) => {
+ donor = await privateKey({url: import.meta.url});
+ });
+ });
+
+ itEth('Send to and from contract', async ({helper}) => {
+ const contractOwner = await helper.eth.createAccountWithBalance(donor, 600n);
+ const [buyer, receiver] = await helper.arrange.createAccounts([600n, 600n], donor);
+ const receiverMirror = helper.address.substrateToEth(receiver.address);
+ const contract = await helper.ethContract.deployByCode(
+ contractOwner,
+ 'Test',
+ `
+ // SPDX-License-Identifier: UNLICENSED
+ pragma solidity 0.8.17;
+
+ contract Test {
+ function send() public payable {
+ if (msg.value < 1000000000000000000)
+ revert("Not enough gold");
+ }
+
+ function withdraw(address to) public {
+ payable(to).transfer(1000000000000000000);
+ }
+ }
+ `,
+ );
+
+ const balanceBefore = await helper.balance.getSubstrate(buyer.address);
+ await helper.eth.sendEVM(buyer, contract.options.address, contract.methods.send().encodeABI(), '2000000000000000000');
+ const balanceAfter = await helper.balance.getSubstrate(buyer.address);
+ expect(balanceBefore - balanceAfter > 2000000000000000000n).to.be.true;
+ expect(await helper.balance.getEthereum(contract.options.address)).to.be.equal(2000000000000000000n);
+
+ await helper.eth.sendEVM(buyer, contract.options.address, contract.methods.withdraw(receiverMirror).encodeABI(), '0');
+ expect(await helper.balance.getEthereum(receiverMirror)).to.be.equal(1000000000000000000n);
+ expect(await helper.balance.getEthereum(contract.options.address)).to.be.equal(1000000000000000000n);
+ });
+});
\ No newline at end of file