mirror of
https://github.com/status-im/ethereumj-personal.git
synced 2025-01-24 10:49:43 +00:00
Call Repository interface instead of implementation
This commit is contained in:
parent
3beb1904b1
commit
a6803e74c8
@ -1,7 +1,7 @@
|
||||
package org.ethereum.core;
|
||||
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Blockchain;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.listener.EthereumListener;
|
||||
import org.ethereum.manager.WorldManager;
|
||||
import org.ethereum.net.BlockQueue;
|
||||
@ -59,7 +59,7 @@ public class BlockchainImpl implements Blockchain {
|
||||
// to avoid using minGasPrice=0 from Genesis for the wallet
|
||||
private static final long INITIAL_MIN_GAS_PRICE = 10 * SZABO.longValue();
|
||||
|
||||
private RepositoryImpl repository;
|
||||
private Repository repository;
|
||||
private Block lastBlock;
|
||||
|
||||
// keep the index of the chain for
|
||||
@ -68,7 +68,7 @@ public class BlockchainImpl implements Blockchain {
|
||||
|
||||
private final BlockQueue blockQueue = new BlockQueue();
|
||||
|
||||
public BlockchainImpl(RepositoryImpl repository) {
|
||||
public BlockchainImpl(Repository repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
@ -325,7 +325,7 @@ public class BlockchainImpl implements Blockchain {
|
||||
if (isContractCreation || code != null) {
|
||||
|
||||
// START TRACKING FOR REVERT CHANGES OPTION
|
||||
RepositoryImpl trackRepository = repository.getTrack();
|
||||
Repository trackRepository = repository.getTrack();
|
||||
trackRepository.startTracking();
|
||||
try {
|
||||
|
||||
@ -386,7 +386,7 @@ public class BlockchainImpl implements Blockchain {
|
||||
* @param contractAddress
|
||||
*/
|
||||
private void applyProgramResult(ProgramResult result, BigInteger gasDebit,
|
||||
RepositoryImpl repository, byte[] senderAddress,
|
||||
Repository repository, byte[] senderAddress,
|
||||
byte[] contractAddress, byte[] coinbase, boolean initResults) {
|
||||
|
||||
if (result.getException() != null
|
||||
|
@ -13,6 +13,7 @@ import org.ethereum.listener.EthereumListener;
|
||||
import org.ethereum.manager.WorldManager;
|
||||
import org.ethereum.trie.TrackTrie;
|
||||
import org.ethereum.trie.Trie;
|
||||
import org.ethereum.trie.TrieFacade;
|
||||
import org.ethereum.util.ByteUtil;
|
||||
import org.ethereum.vm.DataWord;
|
||||
import org.iq80.leveldb.DBIterator;
|
||||
@ -92,10 +93,10 @@ public class RepositoryImpl implements Repository {
|
||||
this.contractDetailsDB = contractDetailsDB;
|
||||
}
|
||||
|
||||
public RepositoryImpl getTrack() {
|
||||
public Repository getTrack() {
|
||||
TrackTrie trackState = new TrackTrie(accountStateDB);
|
||||
TrackDatabase trackDetails = new TrackDatabase(contractDetailsDB);
|
||||
return new RepositoryImpl (trackState, trackDetails);
|
||||
return new RepositoryImpl(trackState, trackDetails);
|
||||
}
|
||||
|
||||
public void startTracking() {
|
||||
@ -210,7 +211,7 @@ public class RepositoryImpl implements Repository {
|
||||
return state;
|
||||
}
|
||||
|
||||
public Trie getWorldState() {
|
||||
public TrieFacade getWorldState() {
|
||||
return worldState;
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,6 @@ import java.util.concurrent.Future;
|
||||
|
||||
import org.ethereum.core.Transaction;
|
||||
import org.ethereum.core.Wallet;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.listener.EthereumListener;
|
||||
import org.ethereum.manager.WorldManager;
|
||||
import org.ethereum.net.client.ClientPeer;
|
||||
@ -195,7 +194,7 @@ public class EthereumImpl implements Ethereum {
|
||||
|
||||
|
||||
@Override
|
||||
public RepositoryImpl getRepository(){
|
||||
public Repository getRepository(){
|
||||
return WorldManager.getInstance().getRepository();
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,14 @@
|
||||
package org.ethereum.facade;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
import org.ethereum.core.AccountState;
|
||||
import org.ethereum.core.Block;
|
||||
import org.ethereum.core.BlockchainImpl;
|
||||
import org.ethereum.db.ContractDetails;
|
||||
import org.ethereum.trie.TrieFacade;
|
||||
import org.ethereum.vm.DataWord;
|
||||
import org.iq80.leveldb.DBIterator;
|
||||
|
||||
/**
|
||||
* www.ethereumJ.com
|
||||
@ -12,6 +19,184 @@ import org.ethereum.db.ContractDetails;
|
||||
|
||||
public interface Repository {
|
||||
|
||||
/**
|
||||
* Create a new account in the database
|
||||
*
|
||||
* @param address of the contract
|
||||
* @return newly created account state
|
||||
*/
|
||||
public AccountState createAccount(byte[] addr);
|
||||
|
||||
/**
|
||||
* Retrieve an account
|
||||
*
|
||||
* @param address of the account
|
||||
* @return account state as stored in the database
|
||||
*/
|
||||
public AccountState getAccountState(byte[] addr);
|
||||
|
||||
/**
|
||||
* Deletes the account
|
||||
*
|
||||
* @param address of the account
|
||||
*/
|
||||
public void delete(byte[] addr);
|
||||
|
||||
/**
|
||||
* Increase the account nonce of the given account by one
|
||||
*
|
||||
* @param addr of the account
|
||||
* @return new value of the nonce
|
||||
*/
|
||||
public BigInteger increaseNonce(byte[] addr);
|
||||
|
||||
/**
|
||||
* Get current nonce of a given account
|
||||
*
|
||||
* @param addres of the account
|
||||
* @return value of the nonce
|
||||
*/
|
||||
public BigInteger getNonce(byte[] addr);
|
||||
|
||||
/**
|
||||
* Retrieve contract details for a given account from the database
|
||||
*
|
||||
* @param address of the account
|
||||
* @return new contract details
|
||||
*/
|
||||
public ContractDetails getContractDetails(byte[] addr);
|
||||
|
||||
/**
|
||||
* Store code associated with an account
|
||||
*
|
||||
* @param address for the account
|
||||
* @param code that will be associated with this account
|
||||
*/
|
||||
public void saveCode(byte[] addr, byte[] code);
|
||||
|
||||
/**
|
||||
* Retrieve the code associated with an account
|
||||
*
|
||||
* @param address of the account
|
||||
* @return code in byte-array format
|
||||
*/
|
||||
public byte[] getCode(byte[] addr);
|
||||
|
||||
/**
|
||||
* Put a value in storage of an account at a given key
|
||||
*
|
||||
* @param address of the account
|
||||
* @param key of the data to store
|
||||
* @param value is the data to store
|
||||
*/
|
||||
public void addStorageRow(byte[] addr, DataWord key, DataWord value);
|
||||
|
||||
/**
|
||||
* Retrieve storage value from an account for a given key
|
||||
*
|
||||
* @param address of the account
|
||||
* @param key associated with this value
|
||||
* @return data in the form of a <code>DataWord</code>
|
||||
*/
|
||||
public DataWord getStorageValue(byte[] addr, DataWord key);
|
||||
|
||||
/**
|
||||
* Save block and post state in the database
|
||||
*
|
||||
* @param block the <code>Block</code> to store
|
||||
*/
|
||||
public void saveBlock(Block block);
|
||||
|
||||
/**
|
||||
* Retrieve block from the blockchain
|
||||
*
|
||||
* @param blockNr number of block in the blockchain
|
||||
* @return Block containing header, uncles and transactions
|
||||
*/
|
||||
public Block getBlock(long blockNr);
|
||||
|
||||
/**
|
||||
* Retrieve balance of an account
|
||||
*
|
||||
* @param address of the account
|
||||
* @return balance of the account as a <code>BigInteger</code> value
|
||||
*/
|
||||
public BigInteger getBalance(byte[] addr);
|
||||
|
||||
/**
|
||||
* Add value to the balance of an account
|
||||
*
|
||||
* @param address of the account
|
||||
* @param value to be added
|
||||
* @return new balance of the account
|
||||
*/
|
||||
public BigInteger addBalance(byte[] addr, BigInteger value);
|
||||
|
||||
/**
|
||||
* Returns an iterator over the accounts in this database in proper sequence
|
||||
*
|
||||
* @return an iterator over the accounts in this database in proper sequence
|
||||
*/
|
||||
public DBIterator getAccountsIterator();
|
||||
|
||||
/**
|
||||
* Return the current state as the Trie data structure
|
||||
*
|
||||
* @return the <code>Trie</code> representing the entire current state
|
||||
*/
|
||||
public TrieFacade getWorldState();
|
||||
|
||||
/**
|
||||
* Load the blockchain into cache memory
|
||||
*
|
||||
* @return the <code>Blockchain</code> object
|
||||
*/
|
||||
public BlockchainImpl loadBlockchain();
|
||||
|
||||
/**
|
||||
* Dump the full state of the current repository into a file with JSON format
|
||||
* It contains all the contracts/account, their attributes and
|
||||
*
|
||||
* @param block of the current state
|
||||
* @param gasUsed the amount of gas used in the block until that point
|
||||
* @param txNumber is the number of the transaction for which the dump has to be made
|
||||
* @param txHash is the hash of the given transaction.
|
||||
* If null, the block state post coinbase reward is dumped.
|
||||
*/
|
||||
public void dumpState(Block block, long gasUsed, int txNumber, byte[] txHash);
|
||||
|
||||
/**
|
||||
* Start tracking the database changes
|
||||
*/
|
||||
public void startTracking();
|
||||
|
||||
/**
|
||||
* Return a repository snapshot of the current state
|
||||
*
|
||||
* @return the repository in its current state
|
||||
*/
|
||||
public Repository getTrack();
|
||||
|
||||
/**
|
||||
* Store all the temporary changes made
|
||||
* to the repository in the actual database
|
||||
*/
|
||||
public void commit();
|
||||
|
||||
/**
|
||||
* Undo all the changes made so far
|
||||
* to a snapshot of the repository
|
||||
*/
|
||||
public void rollback();
|
||||
|
||||
/**
|
||||
* Check to see if the current repository has an open connection to the database
|
||||
* @return <tt>true</tt> if connection to database is open
|
||||
*/
|
||||
public boolean isClosed();
|
||||
|
||||
/**
|
||||
* Close the database
|
||||
*/
|
||||
public void close();
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import org.ethereum.core.AccountState;
|
||||
import org.ethereum.core.Block;
|
||||
import org.ethereum.db.ByteArrayWrapper;
|
||||
import org.ethereum.db.ContractDetails;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.util.ByteUtil;
|
||||
import org.ethereum.vm.DataWord;
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
@ -67,7 +67,7 @@ public class JSONHelper {
|
||||
|
||||
public static void dumpBlock(ObjectNode blockNode, Block block,
|
||||
long gasUsed, byte[] state, List<ByteArrayWrapper> keys,
|
||||
RepositoryImpl repository) {
|
||||
Repository repository) {
|
||||
|
||||
blockNode.put("coinbase", Hex.toHexString(block.getCoinbase()));
|
||||
blockNode.put("difficulty", new BigInteger(1, block.calcDifficulty()).toString());
|
||||
|
@ -3,6 +3,7 @@ package org.ethereum.jsontestsuite;
|
||||
import org.ethereum.db.ByteArrayWrapper;
|
||||
import org.ethereum.db.ContractDetails;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.util.ByteUtil;
|
||||
import org.ethereum.vm.*;
|
||||
import org.slf4j.Logger;
|
||||
@ -46,7 +47,7 @@ public class TestRunner {
|
||||
|
||||
List<String> results = new ArrayList<>();
|
||||
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
/* 1. Store pre-exist accounts - Pre */
|
||||
for (ByteArrayWrapper key : testCase.getPre().keySet()){
|
||||
@ -141,7 +142,7 @@ public class TestRunner {
|
||||
results.add(output);
|
||||
}
|
||||
|
||||
if (!Arrays.equals(expectedCode, actualCode)){
|
||||
if (!Arrays.equals(expectedCode, actualCode)) {
|
||||
|
||||
String output =
|
||||
String.format("The code result is different. account: [ %s ], expectedCode: [ %s ] is actualCode: [ %s ] ",
|
||||
|
@ -10,6 +10,7 @@ import org.ethereum.core.BlockchainImpl;
|
||||
import org.ethereum.core.Wallet;
|
||||
import org.ethereum.crypto.HashUtil;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.listener.EthereumListener;
|
||||
import org.ethereum.net.client.ClientPeer;
|
||||
import org.ethereum.net.client.PeerData;
|
||||
@ -26,7 +27,7 @@ import org.ethereum.net.peerdiscovery.PeerDiscovery;
|
||||
public class WorldManager {
|
||||
|
||||
private BlockchainImpl blockchain;
|
||||
private RepositoryImpl repository;
|
||||
private Repository repository;
|
||||
private Wallet wallet;
|
||||
|
||||
private PeerDiscovery peerDiscovery;
|
||||
@ -143,7 +144,7 @@ public class WorldManager {
|
||||
this.wallet = wallet;
|
||||
}
|
||||
|
||||
public RepositoryImpl getRepository() {
|
||||
public Repository getRepository() {
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
@ -81,4 +81,15 @@ public class TrackTrie implements TrieFacade {
|
||||
trie.delete(key);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getRootHash() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTrieDump() {
|
||||
return trie.getTrieDump();
|
||||
}
|
||||
}
|
||||
|
@ -11,4 +11,8 @@ public interface TrieFacade {
|
||||
public void update(byte[] key, byte[] value);
|
||||
public byte[] get(byte[] key);
|
||||
public void delete(byte[] key);
|
||||
|
||||
public byte[] getRootHash();
|
||||
|
||||
public String getTrieDump();
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.crypto.HashUtil;
|
||||
import org.ethereum.db.ContractDetails;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.util.ByteUtil;
|
||||
import org.ethereum.util.Utils;
|
||||
import org.slf4j.Logger;
|
||||
@ -291,13 +291,13 @@ public class Program {
|
||||
result.getRepository().addBalance(senderAddress, endowment.negate());
|
||||
result.getRepository().addBalance(newAddress, endowment);
|
||||
|
||||
RepositoryImpl trackRepositoryImpl = result.getRepository().getTrack();
|
||||
trackRepositoryImpl.startTracking();
|
||||
Repository trackRepository = result.getRepository().getTrack();
|
||||
trackRepository.startTracking();
|
||||
|
||||
// [5] COOK THE INVOKE AND EXECUTE
|
||||
ProgramInvoke programInvoke =
|
||||
ProgramInvokeFactory.createProgramInvoke(this, new DataWord(newAddress), DataWord.ZERO,
|
||||
new DataWord(gas), BigInteger.ZERO, null, trackRepositoryImpl, this.invokeData.getCallDeep() + 1);
|
||||
new DataWord(gas), BigInteger.ZERO, null, trackRepository, this.invokeData.getCallDeep() + 1);
|
||||
|
||||
VM vm = new VM();
|
||||
Program program = new Program(programCode.array(), programInvoke);
|
||||
@ -309,18 +309,18 @@ public class Program {
|
||||
result.getException() instanceof Program.OutOfGasException) {
|
||||
logger.info("contract run halted by OutOfGas: new contract init ={}" , Hex.toHexString(newAddress));
|
||||
|
||||
trackRepositoryImpl.rollback();
|
||||
trackRepository.rollback();
|
||||
stackPushZero();
|
||||
return;
|
||||
}
|
||||
|
||||
// 4. CREATE THE CONTRACT OUT OF RETURN
|
||||
byte[] code = result.getHReturn().array();
|
||||
trackRepositoryImpl.saveCode(newAddress, code);
|
||||
trackRepository.saveCode(newAddress, code);
|
||||
|
||||
// IN SUCCESS PUSH THE ADDRESS INTO THE STACK
|
||||
stackPush(new DataWord(newAddress));
|
||||
trackRepositoryImpl.commit();
|
||||
trackRepository.commit();
|
||||
|
||||
// 5. REFUND THE REMAIN GAS
|
||||
long refundGas = gas - result.getGasUsed();
|
||||
@ -397,15 +397,15 @@ public class Program {
|
||||
// actual gas subtract
|
||||
this.spendGas(gas.intValue(), "internal call");
|
||||
|
||||
RepositoryImpl trackRepositoryImpl = result.getRepository().getTrack();
|
||||
trackRepositoryImpl.startTracking();
|
||||
trackRepositoryImpl.addBalance(toAddress, endowmentValue.value());
|
||||
Repository trackRepository = result.getRepository().getTrack();
|
||||
trackRepository.startTracking();
|
||||
trackRepository.addBalance(toAddress, endowmentValue.value());
|
||||
|
||||
ProgramInvoke programInvoke =
|
||||
ProgramInvokeFactory.createProgramInvoke(this, toAddressDW,
|
||||
endowmentValue, gas, result.getRepository().getBalance(toAddress),
|
||||
data.array(),
|
||||
trackRepositoryImpl, this.invokeData.getCallDeep() + 1);
|
||||
trackRepository, this.invokeData.getCallDeep() + 1);
|
||||
|
||||
ProgramResult result = null;
|
||||
|
||||
@ -422,7 +422,7 @@ public class Program {
|
||||
result.getException() instanceof Program.OutOfGasException) {
|
||||
logger.info("contract run halted by OutOfGas: contract={}" , Hex.toHexString(toAddress));
|
||||
|
||||
trackRepositoryImpl.rollback();
|
||||
trackRepository.rollback();
|
||||
stackPushZero();
|
||||
return;
|
||||
}
|
||||
@ -443,7 +443,7 @@ public class Program {
|
||||
}
|
||||
|
||||
// 4. THE FLAG OF SUCCESS IS ONE PUSHED INTO THE STACK
|
||||
trackRepositoryImpl.commit();
|
||||
trackRepository.commit();
|
||||
stackPushOne();
|
||||
|
||||
// 5. REFUND THE REMAIN GAS
|
||||
|
@ -1,6 +1,6 @@
|
||||
package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
|
||||
/**
|
||||
* www.ethereumJ.com
|
||||
@ -27,7 +27,7 @@ public interface ProgramInvoke {
|
||||
public DataWord getDifficulty();
|
||||
public DataWord getGaslimit();
|
||||
|
||||
public RepositoryImpl getRepository();
|
||||
public Repository getRepository();
|
||||
|
||||
public boolean byTransaction();
|
||||
boolean byTestingSuite();
|
||||
|
@ -2,7 +2,7 @@ package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.core.Block;
|
||||
import org.ethereum.core.Transaction;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.manager.WorldManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -21,7 +21,7 @@ public class ProgramInvokeFactory {
|
||||
private static Logger logger = LoggerFactory.getLogger("VM");
|
||||
|
||||
// Invocation by the wire tx
|
||||
public static ProgramInvoke createProgramInvoke(Transaction tx, Block block, RepositoryImpl repository) {
|
||||
public static ProgramInvoke createProgramInvoke(Transaction tx, Block block, Repository repository) {
|
||||
|
||||
// https://ethereum.etherpad.mozilla.org/26
|
||||
Block lastBlock = WorldManager.getInstance().getBlockchain().getLastBlock();
|
||||
@ -122,7 +122,7 @@ public class ProgramInvokeFactory {
|
||||
public static ProgramInvoke createProgramInvoke(Program program, DataWord toAddress,
|
||||
DataWord inValue, DataWord inGas,
|
||||
BigInteger balanceInt, byte[] dataIn,
|
||||
RepositoryImpl repository, int callDeep) {
|
||||
Repository repository, int callDeep) {
|
||||
|
||||
DataWord address = toAddress;
|
||||
DataWord origin = program.getOriginAddress();
|
||||
|
@ -1,6 +1,6 @@
|
||||
package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Arrays;
|
||||
@ -26,7 +26,7 @@ public class ProgramInvokeImpl implements ProgramInvoke {
|
||||
|
||||
Map<DataWord, DataWord> storage;
|
||||
|
||||
private RepositoryImpl repository;
|
||||
private Repository repository;
|
||||
private boolean byTransaction = true;
|
||||
private boolean byTestingSuite = false;
|
||||
private int callDeep = 0;
|
||||
@ -34,7 +34,7 @@ public class ProgramInvokeImpl implements ProgramInvoke {
|
||||
public ProgramInvokeImpl(DataWord address, DataWord origin, DataWord caller, DataWord balance,
|
||||
DataWord gasPrice, DataWord gas, DataWord callValue, byte[] msgData,
|
||||
DataWord lastHash, DataWord coinbase, DataWord timestamp, DataWord number, DataWord difficulty,
|
||||
DataWord gaslimit, RepositoryImpl repository, int callDeep) {
|
||||
DataWord gaslimit, Repository repository, int callDeep) {
|
||||
|
||||
// Transaction env
|
||||
this.address = address;
|
||||
@ -63,7 +63,7 @@ public class ProgramInvokeImpl implements ProgramInvoke {
|
||||
byte[] gasPrice, byte[] gas, byte[] callValue, byte[] msgData,
|
||||
byte[] lastHash, byte[] coinbase, long timestamp, long number, byte[] difficulty,
|
||||
long gaslimit,
|
||||
RepositoryImpl repository, boolean byTestingSuite) {
|
||||
Repository repository, boolean byTestingSuite) {
|
||||
this(address, origin, caller, balance, gasPrice, gas, callValue, msgData, lastHash, coinbase,
|
||||
timestamp, number, difficulty, gaslimit, repository);
|
||||
this.byTestingSuite = byTestingSuite;
|
||||
@ -74,7 +74,7 @@ public class ProgramInvokeImpl implements ProgramInvoke {
|
||||
byte[] gasPrice, byte[] gas, byte[] callValue, byte[] msgData,
|
||||
byte[] lastHash, byte[] coinbase, long timestamp, long number, byte[] difficulty,
|
||||
long gaslimit,
|
||||
RepositoryImpl repository) {
|
||||
Repository repository) {
|
||||
|
||||
// Transaction env
|
||||
this.address = new DataWord(address);
|
||||
@ -215,7 +215,7 @@ public class ProgramInvokeImpl implements ProgramInvoke {
|
||||
/* Storage */
|
||||
public Map<DataWord, DataWord> getStorage() { return storage; }
|
||||
|
||||
public RepositoryImpl getRepository() {
|
||||
public Repository getRepository() {
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package org.ethereum.vm;
|
||||
import org.ethereum.crypto.ECKey;
|
||||
import org.ethereum.crypto.HashUtil;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
|
||||
/**
|
||||
@ -15,7 +16,7 @@ public class ProgramInvokeMockImpl implements ProgramInvoke {
|
||||
private byte[] msgData;
|
||||
|
||||
|
||||
private RepositoryImpl repository = null;
|
||||
private Repository repository = null;
|
||||
private String ownerAddress = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
|
||||
public ProgramInvokeMockImpl(byte[] msgDataRaw) {
|
||||
@ -179,11 +180,11 @@ public class ProgramInvokeMockImpl implements ProgramInvoke {
|
||||
}
|
||||
|
||||
@Override
|
||||
public RepositoryImpl getRepository() {
|
||||
public Repository getRepository() {
|
||||
return this.repository;
|
||||
}
|
||||
|
||||
public void setRepository(RepositoryImpl repository) {
|
||||
public void setRepository(Repository repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
@ -18,7 +18,7 @@ public class ProgramResult {
|
||||
private RuntimeException exception;
|
||||
private List<DataWord> deleteAccounts;
|
||||
|
||||
private RepositoryImpl repository = null;
|
||||
private Repository repository = null;
|
||||
|
||||
/*
|
||||
* for testing runs ,
|
||||
@ -55,11 +55,11 @@ public class ProgramResult {
|
||||
this.exception = exception;
|
||||
}
|
||||
|
||||
public RepositoryImpl getRepository() {
|
||||
public Repository getRepository() {
|
||||
return repository;
|
||||
}
|
||||
|
||||
public void setRepository(RepositoryImpl repository) {
|
||||
public void setRepository(Repository repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
@ -83,7 +83,6 @@ public class ProgramResult {
|
||||
deleteAccounts.addAll(accounts);
|
||||
}
|
||||
|
||||
|
||||
public List<DataWord> getDeleteAccounts() {
|
||||
return deleteAccounts;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package org.ethereum.core;
|
||||
|
||||
import org.ethereum.crypto.ECKey;
|
||||
import org.ethereum.crypto.HashUtil;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.manager.WorldManager;
|
||||
import org.junit.*;
|
||||
import org.junit.runners.MethodSorters;
|
||||
@ -37,7 +37,7 @@ public class WalletTest {
|
||||
@Test // Testing account for simple balance set
|
||||
public void accountTest_1(){
|
||||
|
||||
RepositoryImpl repository = WorldManager.getInstance().getRepository();
|
||||
Repository repository = WorldManager.getInstance().getRepository();
|
||||
|
||||
ECKey cowKey = ECKey.fromPrivate(HashUtil.sha3("cow".getBytes()));
|
||||
repository.createAccount(cowKey.getAddress());
|
||||
@ -55,7 +55,7 @@ public class WalletTest {
|
||||
@Test // test account balance with pending "unblocked" transaction
|
||||
public void accountTest_2(){
|
||||
|
||||
RepositoryImpl repository = WorldManager.getInstance().getRepository();
|
||||
Repository repository = WorldManager.getInstance().getRepository();
|
||||
|
||||
ECKey cowKey = ECKey.fromPrivate(HashUtil.sha3("cow".getBytes()));
|
||||
repository.createAccount(cowKey.getAddress());
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.ethereum.db;
|
||||
|
||||
import org.ethereum.core.AccountState;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.vm.DataWord;
|
||||
import org.junit.*;
|
||||
import org.junit.runners.MethodSorters;
|
||||
@ -23,7 +24,7 @@ public class RepositoryTest {
|
||||
public void test1() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
AccountState createdState = repository.createAccount(Hex.decode(addr));
|
||||
@ -38,7 +39,7 @@ public class RepositoryTest {
|
||||
public void test2() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
BigInteger nonce0 = repository.getNonce(Hex.decode(addr));
|
||||
@ -61,7 +62,7 @@ public class RepositoryTest {
|
||||
public void test3() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
try {
|
||||
BigInteger nonce0 = repository.getNonce(Hex.decode(addr));
|
||||
|
||||
@ -85,7 +86,7 @@ public class RepositoryTest {
|
||||
public void test4() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
try {
|
||||
BigInteger balance0 = repository.getBalance(Hex.decode(addr));
|
||||
|
||||
@ -107,7 +108,7 @@ public class RepositoryTest {
|
||||
public void test5() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
try {
|
||||
BigInteger balance0 = repository.getBalance(Hex.decode(addr));
|
||||
|
||||
@ -133,7 +134,7 @@ public class RepositoryTest {
|
||||
public void test6() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
byte[] code;
|
||||
try {
|
||||
@ -151,7 +152,7 @@ public class RepositoryTest {
|
||||
String codeString = "7f60c860005461012c602054000000000000000000000000000000000000000000600060206000f200";
|
||||
String codeHash = "8f0d7fc8cc6fdd688fa58ae9256310069f5659ed2a8a3af994d80350fbf1e798";
|
||||
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
byte[] code0 = repository.getCode(Hex.decode(addr));
|
||||
@ -174,7 +175,7 @@ public class RepositoryTest {
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
String codeHash = "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
|
||||
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
byte[] code0 = repository.getCode(Hex.decode(addr));
|
||||
@ -197,7 +198,7 @@ public class RepositoryTest {
|
||||
byte[] keyBytes = Hex.decode("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470");
|
||||
DataWord key = new DataWord(keyBytes);
|
||||
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
DataWord value = repository.getStorageValue(Hex.decode(addr), key);
|
||||
@ -211,7 +212,7 @@ public class RepositoryTest {
|
||||
public void test10() {
|
||||
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
repository.createAccount(Hex.decode(addr));
|
||||
@ -233,7 +234,7 @@ public class RepositoryTest {
|
||||
String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
|
||||
String expectedStorageHash = "a737c40a4aa895fb9eb464536c376ee7c2c08eb733c8fd2353fcc62dc734f075";
|
||||
|
||||
RepositoryImpl repository = new RepositoryImpl();
|
||||
Repository repository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
repository.createAccount(Hex.decode(addr));
|
||||
@ -283,10 +284,10 @@ public class RepositoryTest {
|
||||
String expectedStorageHash = "365ed874ad42c2b4af335212465291e03dcd1f0c5b600f40f048ed238ad61fd3";
|
||||
long expectedBalance = 333;
|
||||
|
||||
RepositoryImpl origRepository = new RepositoryImpl();
|
||||
Repository origRepository = new RepositoryImpl();
|
||||
|
||||
try {
|
||||
RepositoryImpl repository = origRepository.getTrack();
|
||||
Repository repository = origRepository.getTrack();
|
||||
repository.startTracking();
|
||||
|
||||
repository.createAccount(Hex.decode(addr));
|
||||
@ -310,8 +311,8 @@ public class RepositoryTest {
|
||||
long expectedBalance_1 = 55500;
|
||||
long expectedBalance_2 = 0;
|
||||
|
||||
RepositoryImpl origRepository = new RepositoryImpl();
|
||||
RepositoryImpl repository = origRepository.getTrack();
|
||||
Repository origRepository = new RepositoryImpl();
|
||||
Repository repository = origRepository.getTrack();
|
||||
repository.startTracking();
|
||||
|
||||
repository.createAccount(Hex.decode(addr));
|
||||
@ -336,8 +337,8 @@ public class RepositoryTest {
|
||||
|
||||
long expectedBalance = 55500;
|
||||
|
||||
RepositoryImpl origRepository = new RepositoryImpl();
|
||||
RepositoryImpl repository = origRepository.getTrack();
|
||||
Repository origRepository = new RepositoryImpl();
|
||||
Repository repository = origRepository.getTrack();
|
||||
|
||||
try {
|
||||
repository.createAccount(Hex.decode(addr_1));
|
||||
|
@ -2,7 +2,7 @@ package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.core.AccountState;
|
||||
import org.ethereum.crypto.HashUtil;
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
@ -59,7 +59,7 @@ public class VMComplexTest {
|
||||
|
||||
ProgramInvokeMockImpl pi = new ProgramInvokeMockImpl();
|
||||
pi.setOwnerAddress("77045e71a7a2c50903d88e564cd72fab11e82051");
|
||||
RepositoryImpl repository = pi.getRepository();
|
||||
Repository repository = pi.getRepository();
|
||||
|
||||
repository.createAccount(callerAddrB);
|
||||
repository.addBalance(callerAddrB, new BigInteger("100000000000000000000"));
|
||||
@ -134,7 +134,7 @@ public class VMComplexTest {
|
||||
|
||||
ProgramInvokeMockImpl pi = new ProgramInvokeMockImpl();
|
||||
pi.setOwnerAddress(contractB_addr);
|
||||
RepositoryImpl repository = pi.getRepository();
|
||||
Repository repository = pi.getRepository();
|
||||
|
||||
byte[] contractB_addr_bytes = Hex.decode(contractB_addr);
|
||||
byte[] codeB = Hex.decode(code_b);
|
||||
@ -234,7 +234,7 @@ public class VMComplexTest {
|
||||
|
||||
ProgramInvokeMockImpl pi = new ProgramInvokeMockImpl();
|
||||
pi.setOwnerAddress(contractB_addr);
|
||||
RepositoryImpl repository = pi.getRepository();
|
||||
Repository repository = pi.getRepository();
|
||||
repository.createAccount(contractA_addr_bytes);
|
||||
repository.saveCode(contractA_addr_bytes, codeA);
|
||||
|
||||
@ -315,7 +315,7 @@ public class VMComplexTest {
|
||||
ProgramInvokeMockImpl pi = new ProgramInvokeMockImpl();
|
||||
pi.setOwnerAddress(contractA_addr);
|
||||
|
||||
RepositoryImpl repository = pi.getRepository();
|
||||
Repository repository = pi.getRepository();
|
||||
|
||||
byte[] caller_addr_bytes = Hex.decode(callerAddr);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package org.ethereum.vm;
|
||||
|
||||
import org.ethereum.db.RepositoryImpl;
|
||||
import org.ethereum.facade.Repository;
|
||||
import org.ethereum.vm.Program.OutOfGasException;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
@ -1540,7 +1540,7 @@ public class VMTest {
|
||||
vm.step(program);
|
||||
vm.step(program);
|
||||
|
||||
RepositoryImpl repository = program.result.getRepository();
|
||||
Repository repository = program.result.getRepository();
|
||||
DataWord key = new DataWord(Hex.decode(s_expected_key));
|
||||
DataWord val = repository.getStorageValue(invoke.getOwnerAddress().getNoLeadZeroesData(), key);
|
||||
|
||||
|
@ -45,7 +45,7 @@ public class ProgramPlayDialog extends JPanel implements ActionListener,
|
||||
WorldManager.getInstance().getRepository());
|
||||
}
|
||||
|
||||
public ProgramPlayDialog(byte[] code, ProgramInvoke programInvoke, RepositoryImpl tractRepository) {
|
||||
public ProgramPlayDialog(byte[] code, ProgramInvoke programInvoke, Repository tractRepository) {
|
||||
pi = programInvoke;
|
||||
|
||||
outputList = new ArrayList<String>();
|
||||
|
Loading…
x
Reference in New Issue
Block a user