diff --git a/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transaction.ex b/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transaction.ex index 6e67db3dda..3cd8a67b87 100644 --- a/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transaction.ex +++ b/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transaction.ex @@ -56,15 +56,52 @@ defmodule EthereumJSONRPC.Transaction do index: non_neg_integer(), input: String.t(), nonce: non_neg_integer(), - public_key: String.t(), r: non_neg_integer(), s: non_neg_integer(), - standard_v: 0 | 1, to_address_hash: EthereumJSONRPC.address(), v: non_neg_integer(), value: non_neg_integer() } + @doc """ + Geth `elixir` can be converted to `params`. Geth does not supply `"publicKey"` or `"standardV"`, unlike Parity. + + iex> EthereumJSONRPC.Transaction.elixir_to_params( + ...> %{ + ...> "blockHash" => "0x4e3a3754410177e6937ef1f84bba68ea139e8d1a2258c5f85db9f1cd715a1bdd", + ...> "blockNumber" => 46147, + ...> "from" => "0xa1e4380a3b1f749673e270229993ee55f35663b4", + ...> "gas" => 21000, + ...> "gasPrice" => 50000000000000, + ...> "hash" => "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060", + ...> "input" => "0x", + ...> "nonce" => 0, + ...> "r" => 61965845294689009770156372156374760022787886965323743865986648153755601564112, + ...> "s" => 31606574786494953692291101914709926755545765281581808821704454381804773090106, + ...> "to" => "0x5df9b87991262f6ba471f09758cde1c0fc1de734", + ...> "transactionIndex" => 0, + ...> "v" => 28, + ...> "value" => 31337 + ...> } + ...> ) + %{ + block_hash: "0x4e3a3754410177e6937ef1f84bba68ea139e8d1a2258c5f85db9f1cd715a1bdd", + block_number: 46147, + from_address_hash: "0xa1e4380a3b1f749673e270229993ee55f35663b4", + gas: 21000, + gas_price: 50000000000000, + hash: "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060", + index: 0, + input: "0x", + nonce: 0, + r: 61965845294689009770156372156374760022787886965323743865986648153755601564112, + s: 31606574786494953692291101914709926755545765281581808821704454381804773090106, + to_address_hash: "0x5df9b87991262f6ba471f09758cde1c0fc1de734", + v: 28, + value: 31337 + } + + """ @spec elixir_to_params(elixir) :: params def elixir_to_params(%{ "blockHash" => block_hash, @@ -75,10 +112,8 @@ defmodule EthereumJSONRPC.Transaction do "hash" => hash, "input" => input, "nonce" => nonce, - "publicKey" => public_key, "r" => r, "s" => s, - "standardV" => standard_v, "to" => to_address_hash, "transactionIndex" => index, "v" => v, @@ -94,10 +129,8 @@ defmodule EthereumJSONRPC.Transaction do index: index, input: input, nonce: nonce, - public_key: public_key, r: r, s: s, - standard_v: standard_v, to_address_hash: to_address_hash, v: v, value: value @@ -117,10 +150,8 @@ defmodule EthereumJSONRPC.Transaction do ...> index: 0, ...> input: "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a72305820a9c628775efbfbc17477a472413c01ee9b33881f550c59d21bee9928835c854b0029", ...> nonce: 0, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: "0xAD3733DF250C87556335FFE46C23E34DBAFFDE93097EF92F52C88632A40F0C75", ...> s: "0x72caddc0371451a58de2ca6ab64e0f586ccdb9465ff54e1c82564940e89291e3", - ...> standard_v: 0, ...> v: "0x8d", ...> value: 0 ...> } diff --git a/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transactions.ex b/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transactions.ex index bedd4215ef..d3cae4a83b 100644 --- a/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transactions.ex +++ b/apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/transactions.ex @@ -50,10 +50,8 @@ defmodule EthereumJSONRPC.Transactions do index: 0, input: "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a72305820a9c628775efbfbc17477a472413c01ee9b33881f550c59d21bee9928835c854b0029", nonce: 0, - public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", r: "0xad3733df250c87556335ffe46c23e34dbaffde93097ef92f52c88632a40f0c75", s: "0x72caddc0371451a58de2ca6ab64e0f586ccdb9465ff54e1c82564940e89291e3", - standard_v: "0x0", to_address_hash: nil, v: "0xbd", value: 0 diff --git a/apps/explorer/lib/explorer/chain.ex b/apps/explorer/lib/explorer/chain.ex index 10d817b1bc..5a16e4b389 100644 --- a/apps/explorer/lib/explorer/chain.ex +++ b/apps/explorer/lib/explorer/chain.ex @@ -804,10 +804,8 @@ defmodule Explorer.Chain do ...> index: 0, ...> input: "0x10855269000000000000000000000000862d67cb0773ee3f8ce7ea89b328ffea861ab3ef", ...> nonce: 4, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: 0xa7f8f45cce375bb7af8750416e1b03e0473f93c256da2285d1134fc97a700e01, ...> s: 0x1f87a076f13824f4be8963e3dffd7300dae64d5f23c9a062af0c6ead347c135f, - ...> standard_v: 1, ...> status: :ok, ...> to_address_hash: "0x8bf38d4764929064f2d4d3a56520a76ab3df415b", ...> v: 0xbe, @@ -965,10 +963,8 @@ defmodule Explorer.Chain do ...> index: 0, ...> input: "0x10855269000000000000000000000000862d67cb0773ee3f8ce7ea89b328ffea861ab3ef", ...> nonce: 4, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: 0xa7f8f45cce375bb7af8750416e1b03e0473f93c256da2285d1134fc97a700e01, ...> s: 0x1f87a076f13824f4be8963e3dffd7300dae64d5f23c9a062af0c6ead347c135f, - ...> standard_v: 1, ...> to_address_hash: "0x8bf38d4764929064f2d4d3a56520a76ab3df415b", ...> v: 0xbe, ...> value: 0 @@ -1713,10 +1709,8 @@ defmodule Explorer.Chain do | :index | :input | :nonce - | :public_key | :r | :s - | :standard_v | :to_address_hash | :v | :value diff --git a/apps/explorer/lib/explorer/chain/transaction.ex b/apps/explorer/lib/explorer/chain/transaction.ex index 51188cdb59..ccc658596f 100644 --- a/apps/explorer/lib/explorer/chain/transaction.ex +++ b/apps/explorer/lib/explorer/chain/transaction.ex @@ -9,12 +9,7 @@ defmodule Explorer.Chain.Transaction do @optional_attrs ~w(block_hash block_number cumulative_gas_used from_address_hash gas_used index internal_transactions_indexed_at status to_address_hash)a - @required_attrs ~w(gas gas_price hash input nonce public_key r s standard_v v value)a - - @typedoc """ - The full public key of the signer of the transaction. - """ - @type public_key :: Data.t() + @required_attrs ~w(gas gas_price hash input nonce r s v value)a @typedoc """ X coordinate module n in @@ -30,28 +25,6 @@ defmodule Explorer.Chain.Transaction do """ @type s :: Decimal.t() - @typedoc """ - For message signatures, we use a trick called public key recovery. The fact is that if you have the full R point - (not just its X coordinate) and `t:s/0`, and a message, you can compute for which public key this would be a valid - signature. What this allows is to 'verify' a message with an address, without needing to know the full key (we just to - public key recovery on the signature, and then hash the recovered key and compare it with the address). - - However, this means we need the full R coordinates. There can be up to 4 different points with a given - "X coordinate modulo n". (2 because each X coordinate has two possible Y coordinates, and 2 because r+n may still be a - valid X coordinate). That number between 0 and 3 is standard_v. - - | `standard_v` | X | Y | - |---------------|--------|------| - | `0` | lower | even | - | `1` | lower | odd | - | `2` | higher | even | - | `3` | higher | odd | - - **Note: that `2` and `3` are exceedingly rarely, and will in practice only ever be seen in specifically generated - examples.** - """ - @type standard_v :: 0..3 - @typedoc """ The index of the transaction in its block. """ @@ -96,12 +69,10 @@ defmodule Explorer.Chain.Transaction do * `internal_transactions_indexed_at` - when `internal_transactions` were fetched by `Explorer.Indexer`. * `logs` - events that occurred while mining the `transaction`. * `nonce` - the number of transaction made by the sender prior to this one - * `public_key` - public key of the signer of the transaction * `r` - the R field of the signature. The (r, s) is the normal output of an ECDSA signature, where r is computed as the X coordinate of a point R, modulo the curve order n. * `s` - The S field of the signature. The (r, s) is the normal output of an ECDSA signature, where r is computed as the X coordinate of a point R, modulo the curve order n. - * `standard_v` - The standardized V field of the signature * `status` - whether the transaction was successfully mined or failed. `nil` when transaction is pending. * `to_address` - sink of `value` * `to_address_hash` - `to_address` foreign key @@ -125,10 +96,8 @@ defmodule Explorer.Chain.Transaction do internal_transactions_indexed_at: DateTime.t(), logs: %Ecto.Association.NotLoaded{} | [Log.t()], nonce: non_neg_integer(), - public_key: public_key(), r: r(), s: s(), - standard_v: standard_v(), status: Status.t() | nil, to_address: %Ecto.Association.NotLoaded{} | Address.t(), to_address_hash: Hash.Address.t(), @@ -147,10 +116,8 @@ defmodule Explorer.Chain.Transaction do field(:internal_transactions_indexed_at, :utc_datetime) field(:input, Data) field(:nonce, :integer) - field(:public_key, Data) field(:r, :decimal) field(:s, :decimal) - field(:standard_v, :integer) field(:status, Status) field(:v, :integer) field(:value, Wei) @@ -191,10 +158,8 @@ defmodule Explorer.Chain.Transaction do ...> hash: "0x3a3eb134e6792ce9403ea4188e5e79693de9e4c94e499db132be086400da79e6", ...> input: "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a72305820a9c628775efbfbc17477a472413c01ee9b33881f550c59d21bee9928835c854b0029", ...> nonce: 0, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: 0xAD3733DF250C87556335FFE46C23E34DBAFFDE93097EF92F52C88632A40F0C75, ...> s: 0x72caddc0371451a58de2ca6ab64e0f586ccdb9465ff54e1c82564940e89291e3, - ...> standard_v: 0x0, ...> v: 0x8d, ...> value: 0 ...> } @@ -217,10 +182,8 @@ defmodule Explorer.Chain.Transaction do ...> index: 0, ...> input: "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a72305820a9c628775efbfbc17477a472413c01ee9b33881f550c59d21bee9928835c854b0029", ...> nonce: 0, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: 0xAD3733DF250C87556335FFE46C23E34DBAFFDE93097EF92F52C88632A40F0C75, ...> s: 0x72caddc0371451a58de2ca6ab64e0f586ccdb9465ff54e1c82564940e89291e3, - ...> standard_v: 0x0, ...> status: :ok, ...> v: 0x8d, ...> value: 0 @@ -254,10 +217,8 @@ defmodule Explorer.Chain.Transaction do ...> index: 0, ...> input: "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a72305820a9c628775efbfbc17477a472413c01ee9b33881f550c59d21bee9928835c854b0029", ...> nonce: 0, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: 0xAD3733DF250C87556335FFE46C23E34DBAFFDE93097EF92F52C88632A40F0C75, ...> s: 0x72caddc0371451a58de2ca6ab64e0f586ccdb9465ff54e1c82564940e89291e3, - ...> standard_v: 0x0, ...> status: :ok, ...> v: 0x8d, ...> value: 0 @@ -278,10 +239,8 @@ defmodule Explorer.Chain.Transaction do ...> hash: "0x3a3eb134e6792ce9403ea4188e5e79693de9e4c94e499db132be086400da79e6", ...> input: "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a72305820a9c628775efbfbc17477a472413c01ee9b33881f550c59d21bee9928835c854b0029", ...> nonce: 0, - ...> public_key: "0xe5d196ad4ceada719d9e592f7166d0c75700f6eab2e3c3de34ba751ea786527cb3f6eb96ad9fdfdb9989ff572df50f1c42ef800af9c5207a38b929aff969b5c9", ...> r: 0xAD3733DF250C87556335FFE46C23E34DBAFFDE93097EF92F52C88632A40F0C75, ...> s: 0x72caddc0371451a58de2ca6ab64e0f586ccdb9465ff54e1c82564940e89291e3, - ...> standard_v: 0x0, ...> v: 0x8d, ...> value: 0 ...> } @@ -305,7 +264,6 @@ defmodule Explorer.Chain.Transaction do |> cast(attrs, @required_attrs ++ @optional_attrs) |> validate_required(@required_attrs) |> validate_collated_or_pending() - |> validate_number(:standard_v, greater_than_or_equal_to: 0, less_than_or_equal_to: 3) |> check_pending() |> check_collated() |> foreign_key_constraint(:block_hash) diff --git a/apps/explorer/priv/repo/migrations/20180117221923_create_transactions.exs b/apps/explorer/priv/repo/migrations/20180117221923_create_transactions.exs index 200315b8e3..1f07aa357c 100644 --- a/apps/explorer/priv/repo/migrations/20180117221923_create_transactions.exs +++ b/apps/explorer/priv/repo/migrations/20180117221923_create_transactions.exs @@ -23,10 +23,8 @@ defmodule Explorer.Repo.Migrations.CreateTransactions do add(:internal_transactions_indexed_at, :utc_datetime, null: true) add(:nonce, :integer, null: false) - add(:public_key, :bytea, null: false) add(:r, :numeric, precision: 100, null: false) add(:s, :numeric, precision: 100, null: false) - add(:standard_v, :smallint, null: false) # `null` when a pending transaction add(:status, :integer, null: true) @@ -128,8 +126,6 @@ defmodule Explorer.Repo.Migrations.CreateTransactions do ) ) - create(constraint(:transactions, :standard_v, check: "0 <= standard_v AND standard_v <= 3")) - create(index(:transactions, :block_hash)) create(index(:transactions, :from_address_hash)) create(index(:transactions, :to_address_hash)) diff --git a/apps/explorer/test/explorer/chain/transaction_test.exs b/apps/explorer/test/explorer/chain/transaction_test.exs index 978f546aa9..f178d8ffe9 100644 --- a/apps/explorer/test/explorer/chain/transaction_test.exs +++ b/apps/explorer/test/explorer/chain/transaction_test.exs @@ -16,10 +16,8 @@ defmodule Explorer.Chain.TransactionTest do gas_price: 10000, input: "0x5c8eff12", nonce: "31337", - public_key: "0xb39af9cb", r: 0x9, s: 0x10, - standard_v: 0x1, transaction_index: "0x12", v: 27 }) diff --git a/apps/explorer/test/support/factory.ex b/apps/explorer/test/support/factory.ex index 69fbae3aac..018264f964 100644 --- a/apps/explorer/test/support/factory.ex +++ b/apps/explorer/test/support/factory.ex @@ -217,10 +217,6 @@ defmodule Explorer.Factory do } end - def public_key do - data(:public_key) - end - def market_history_factory do %MarketHistory{ closing_price: price(), @@ -258,10 +254,8 @@ defmodule Explorer.Factory do hash: transaction_hash(), input: transaction_input(), nonce: Enum.random(1..1_000), - public_key: public_key(), r: sequence(:transaction_r, & &1), s: sequence(:transaction_s, & &1), - standard_v: Enum.random(0..3), to_address: build(:address), v: Enum.random(27..30), value: Enum.random(1..100_000) diff --git a/apps/indexer/test/indexer/address_balance_fetcher_test.exs b/apps/indexer/test/indexer/address_balance_fetcher_test.exs index e54bc0544d..bc6a742553 100644 --- a/apps/indexer/test/indexer/address_balance_fetcher_test.exs +++ b/apps/indexer/test/indexer/address_balance_fetcher_test.exs @@ -20,7 +20,7 @@ defmodule Indexer.AddressBalanceFetcherTest do describe "init/1" do test "fetches unfetched Block miner balance" do - {:ok, miner_hash} = Hash.Truncated.cast("0xe8ddc5c7a2d2f0d7a9798459c0104fdf5e987aca") + {:ok, miner_hash} = Hash.Address.cast("0xe8ddc5c7a2d2f0d7a9798459c0104fdf5e987aca") miner = insert(:address, hash: miner_hash) block = insert(:block, miner: miner, number: 34) @@ -41,7 +41,7 @@ defmodule Indexer.AddressBalanceFetcherTest do end test "fetches unfetched addresses when less than max batch size" do - {:ok, miner_hash} = Hash.Truncated.cast("0xe8ddc5c7a2d2f0d7a9798459c0104fdf5e987aca") + {:ok, miner_hash} = Hash.Address.cast("0xe8ddc5c7a2d2f0d7a9798459c0104fdf5e987aca") miner = insert(:address, hash: miner_hash) block = insert(:block, miner: miner, number: 34)