diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..4cc7153
Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 3963879..c0f68ed 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,11 +5,12 @@
@@ -24,7 +25,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 729e9db..f404214 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,4 +28,5 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
compile ('org.web3j:core:3.3.1-android')
+ compile ('com.j256.ormlite:ormlite-android:4.48')
}
diff --git a/app/src/main/java/com/example/monnthic/monnthicmobile/AccessBlockchain.java b/app/src/main/java/com/example/monnthic/monnthicmobile/AccessBlockchain.java
index ea99e77..e57acfb 100644
--- a/app/src/main/java/com/example/monnthic/monnthicmobile/AccessBlockchain.java
+++ b/app/src/main/java/com/example/monnthic/monnthicmobile/AccessBlockchain.java
@@ -1,13 +1,17 @@
package com.example.monnthic.monnthicmobile;
+import org.web3j.crypto.RawTransaction;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.Web3jFactory;
import org.web3j.protocol.core.methods.response.EthGetBalance;
import org.web3j.protocol.core.methods.response.EthGetTransactionCount;
import org.web3j.protocol.core.methods.request.Transaction;
import org.web3j.protocol.core.methods.response.EthSendTransaction;
+import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.http.HttpService;
import org.web3j.protocol.core.DefaultBlockParameterName;
+import org.web3j.utils.Convert;
+
import java.math.BigInteger;
@@ -18,9 +22,11 @@ import java.math.BigInteger;
*/
public class AccessBlockchain {
+ private static final String node3 = "http://5.51.59.70:1403";
private static final String node2 = "http://93.30.148.59:1402";
private static final String node1 = "http://93.30.148.59:1401";
//private static String address_test = "0x5421c79d465a288c28e10aa43f9b7dff1b313c8e";
+ private static String address_node3 = "0x869abc2dadd7e23c8b38f054276813a67d8131a7";
//Web3j web3jNode2 = Web3jFactory.build(new HttpService(node2));
public static void main(String [ ] args)
@@ -37,6 +43,35 @@ public class AccessBlockchain {
BigInteger nonce = transactionCount.getTransactionCount();
System.out.println(nonce);
*/
+ Web3j web3jNode1 = Web3jFactory.build(new HttpService(node1));
+ System.out.println("Node 1 : ethAccounts : "+web3jNode1.ethAccounts().send().getAccounts());
+ EthGetBalance ethGetBalance1 = web3jNode1.ethGetBalance("0x5421c79d465a288c28e10aa43f9b7dff1b313c8e", DefaultBlockParameterName.LATEST).sendAsync().get();
+
+
+ Web3j web3jNode2 = Web3jFactory.build(new HttpService(node2));
+ System.out.println("Noded 2 ethAccounts : "+web3jNode2.ethAccounts().send().getAccounts());
+ EthGetBalance ethGetBalance2 = web3jNode2.ethGetBalance("0xef816528949bda3b87e19b86848fb28767156232", DefaultBlockParameterName.LATEST).sendAsync().get();
+
+ System.out.println("Node 1 ethMining : "+web3jNode1.ethMining().send().getResult());
+
+ System.out.println("Node 1 sync : "+web3jNode1.ethSyncing().send().getResult().toString());
+
+
+ BigInteger wei1 = ethGetBalance1.getBalance();
+ System.out.println("Node 1 balance is : "+wei1);
+
+ BigInteger wei2 = ethGetBalance2.getBalance();
+ System.out.println("Node 2 balance is : "+wei2);
+
+ System.out.println("ethBlockNumber Node 1 : "+web3jNode1.ethBlockNumber().send().getResult());
+ System.out.println("ethGetWork Node 1 : "+web3jNode1.ethGetWork().send().getResult());
+
+
+ Web3j web3jNode3 = Web3jFactory.build(new HttpService(node3));
+ System.out.println("Node 3 : ethAccounts : "+web3jNode3.ethAccounts().send().getAccounts());
+
+ EthGetBalance ethGetBalance_n3 = web3jNode1.ethGetBalance(address_node3, DefaultBlockParameterName.LATEST).sendAsync().get();
+ System.out.println("TEST node 1 wallet 3 : "+ethGetBalance_n3);
//BigInteger test = getTheBalanceOfWallet(address);
//System.out.println(test);
@@ -83,25 +118,44 @@ public class AccessBlockchain {
return null;
}
- //Send transaction demo function
- public boolean sendTransationTo(String addressSource, String addressDestination, BigInteger amountToSend){
- Web3j web3jNode1 = Web3jFactory.build(new HttpService(node1));
+ //Send DbTransaction demo function
+ public static boolean sendTransationTo(String addressSource, String addressDestination, BigInteger amountToSend){
+ Web3j n1 = Web3jFactory.build(new HttpService(node1));
try{
- EthGetTransactionCount transactionCount = web3jNode1.ethGetTransactionCount(addressSource, DefaultBlockParameterName.LATEST).sendAsync().get();
- String coinbase = web3jNode1.ethCoinbase().sendAsync().get().getResult();
+ EthGetTransactionCount transactionCount = n1.ethGetTransactionCount(addressSource, DefaultBlockParameterName.LATEST).sendAsync().get();
+ String coinbase = n1.ethCoinbase().sendAsync().get().getResult();
BigInteger nonce = transactionCount.getTransactionCount();
- BigInteger gasPrice = web3jNode1.ethGasPrice().send().getGasPrice();
+ BigInteger gasPrice = n1.ethGasPrice().send().getGasPrice();
BigInteger gasLimit = gasPrice.multiply(BigInteger.valueOf(2));
- Transaction transaction = Transaction.createEtherTransaction(coinbase, nonce, gasPrice, gasLimit, addressDestination, amountToSend);
+ BigInteger amountEther = Convert.toWei(amountToSend.toString(), Convert.Unit.ETHER).toBigInteger();
+ Transaction transaction = Transaction.createEtherTransaction(coinbase, nonce, gasPrice, gasLimit, addressDestination, amountEther);
+ String txUnit = "ETHER";
+
+ System.out.println("source : "+coinbase+"\nnonce : "+nonce+"\ngasPrice : "+gasPrice);
+ System.out.println("gasLimit : "+gasLimit+"\ndestination : "+addressDestination+"\namount : "+amountEther);
+
+ /*
+ Send the transaction
+ */
+ //EthSendTransaction ethSendTransaction = n1.ethSendTransaction(transaction).sendAsync().get();
+ //String txHash = ethSendTransaction.getTransactionHash();
+ //TransactionReceipt txR = n1.ethGetTransactionReceipt(txHash).send().getResult();
+ //txR.getBlockNumber();
+ //insertTransaction(addressSource, addressDestination, amountToSend, txHash, txR.getBlockNumber().toString(), txUnit);
+
+ return true;
- EthSendTransaction ethSendTransaction = web3jNode1.ethSendTransaction(transaction).sendAsync().get();
- String txHash = ethSendTransaction.getTransactionHash();
}catch (Exception e){
e.getMessage();
e.printStackTrace();
}
return false;
}
+
+ private void insertTransaction(String adS, String adD, BigInteger amTs, String txH, String blN, String txUnit){
+
+ DbTransaction dbTrs = new DbTransaction();
+ }
}
diff --git a/app/src/main/java/com/example/monnthic/monnthicmobile/DatabaseManager.java b/app/src/main/java/com/example/monnthic/monnthicmobile/DatabaseManager.java
new file mode 100644
index 0000000..91eccae
--- /dev/null
+++ b/app/src/main/java/com/example/monnthic/monnthicmobile/DatabaseManager.java
@@ -0,0 +1,51 @@
+package com.example.monnthic.monnthicmobile;
+
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.util.Log;
+
+import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
+import com.j256.ormlite.dao.Dao;
+import com.j256.ormlite.support.ConnectionSource;
+import com.j256.ormlite.table.TableUtils;
+
+public class DatabaseManager extends OrmLiteSqliteOpenHelper{
+ private static final String DATABASE_NAME = "WalletTransaction.db";
+ private static final int DATABASE_VERSION = 1;
+
+ public DatabaseManager(Context context){
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
+ try{
+ TableUtils.clearTable(connectionSource, DbTransaction.class);
+ Log.i("DATABASE","onCreate invoked");
+ }catch(Exception exception){
+ Log.e("DATABASE","Can't create Database", exception);
+ }
+
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
+ try{
+ TableUtils.dropTable(connectionSource, DbTransaction.class, true);
+ onCreate(database, connectionSource);
+ Log.i("DATABASE","onUpdate invoked");
+ }catch(Exception exception){
+ Log.e("DATABASE","Can't update Database", exception);
+ }
+ }
+
+ public void insertTransaction(DbTransaction tx){
+ try{
+ Dao dao = getDao(DbTransaction.class);
+ dao.create(tx);
+ } catch(Exception exception){
+ Log.e("DATABASE","Can't insert DbTransaction into Database", exception);
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/monnthic/monnthicmobile/DbTransaction.java b/app/src/main/java/com/example/monnthic/monnthicmobile/DbTransaction.java
new file mode 100644
index 0000000..a8ab836
--- /dev/null
+++ b/app/src/main/java/com/example/monnthic/monnthicmobile/DbTransaction.java
@@ -0,0 +1,106 @@
+package com.example.monnthic.monnthicmobile;
+
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
+import java.math.BigInteger;
+import java.util.Date;
+
+@DatabaseTable(tableName = "T_TRANSACTION")
+public class DbTransaction {
+ @DatabaseField(columnName = "transactionId", generatedId = true, unique = true)
+ private int id;
+ @DatabaseField(columnName = "transactionDate")
+ private Date transactionDate;
+ @DatabaseField(columnName = "transactionDSrcAddress")
+ private String sourceAddress;
+ @DatabaseField(columnName = "transactionDestAddress")
+ private String destAddress;
+ @DatabaseField(columnName = "transactionHash")
+ private String transactionHash;
+ @DatabaseField(columnName = "transactionBlockNumber")
+ private String blockNumber;
+ @DatabaseField(columnName = "transactionAmout")
+ private BigInteger amount;
+ @DatabaseField(columnName = "transactionUnit")
+ private String unit;
+
+ public DbTransaction() {
+ super();
+ }
+
+ public DbTransaction(Date transactionDate, String sourceAddress, String destAddress, String transactionHash, String blockNumber, BigInteger amount, String unit) {
+ super();
+ this.transactionDate = transactionDate;
+ this.sourceAddress = sourceAddress;
+ this.destAddress = destAddress;
+ this.transactionHash = transactionHash;
+ this.blockNumber = blockNumber;
+ this.amount = amount;
+ this.unit = unit;
+ }
+
+ public String getSourceAddress() {
+ return sourceAddress;
+ }
+
+ public void setSourceAddress(String sourceAddress) {
+ this.sourceAddress = sourceAddress;
+ }
+
+ public String getDestAddress() {
+ return destAddress;
+ }
+
+ public void setDestAddress(String destAddress) {
+ this.destAddress = destAddress;
+ }
+
+ public String getTransactionHash() {
+ return transactionHash;
+ }
+
+ public void setTransactionHash(String transactionHash) {
+ this.transactionHash = transactionHash;
+ }
+
+ public BigInteger getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigInteger amount) {
+ this.amount = amount;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public Date getTransactionDate() {
+ return transactionDate;
+ }
+
+ public void setTransactionDate(Date transactionDate) {
+ this.transactionDate = transactionDate;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getBlockNumber() {
+ return blockNumber;
+ }
+
+ public void setBlockNumber(String blockNumber) {
+ this.blockNumber = blockNumber;
+ }
+}
diff --git a/app/src/main/java/com/example/monnthic/monnthicmobile/DemoActivity.java b/app/src/main/java/com/example/monnthic/monnthicmobile/DemoActivity.java
index 77bb752..3a76907 100644
--- a/app/src/main/java/com/example/monnthic/monnthicmobile/DemoActivity.java
+++ b/app/src/main/java/com/example/monnthic/monnthicmobile/DemoActivity.java
@@ -8,6 +8,7 @@ import android.widget.Button;
public class DemoActivity extends AppCompatActivity {
private static final String WALLET_A = "0x5421c79d465a288c28e10aa43f9b7dff1b313c8e";
+ private static final String WALLET_B = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/app/src/main/java/com/example/monnthic/monnthicmobile/TransactionActivity.java b/app/src/main/java/com/example/monnthic/monnthicmobile/TransactionActivity.java
index be0a8c7..a16d331 100644
--- a/app/src/main/java/com/example/monnthic/monnthicmobile/TransactionActivity.java
+++ b/app/src/main/java/com/example/monnthic/monnthicmobile/TransactionActivity.java
@@ -1,5 +1,6 @@
package com.example.monnthic.monnthicmobile;
+import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
@@ -7,20 +8,25 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
-public class TransactionActivity extends AppCompatActivity {
+import java.math.BigInteger;
+public class TransactionActivity extends AppCompatActivity {
+ private String address;
private EditText addressDestination;
- private EditText Amout;
+ private EditText amount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transaction);
addressDestination = findViewById(R.id.destination_address);
- Amout = findViewById(R.id.amount);
+ amount = findViewById(R.id.amount);
Button buttonCancel = findViewById(R.id.btn_cancel);
Button buttonOk = findViewById(R.id.btn_send);
+ Intent intent = getIntent();
+ address = intent.getStringExtra("WALLET_ADDRESS");
+
buttonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -37,7 +43,13 @@ public class TransactionActivity extends AppCompatActivity {
}
public void sendTransaction(){
- Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show();
+ String adD = addressDestination.getText().toString();
+ BigInteger amt = new BigInteger(amount.getText().toString());
+
+ if(AccessBlockchain.sendTransationTo(address, adD, amt)){
+ Toast.makeText(this, "OK.", Toast.LENGTH_SHORT).show();
+ }
+ //Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show();
}
}
diff --git a/app/src/main/java/com/example/monnthic/monnthicmobile/WalletPresenterActivity.java b/app/src/main/java/com/example/monnthic/monnthicmobile/WalletPresenterActivity.java
index b1bf438..d3230fa 100644
--- a/app/src/main/java/com/example/monnthic/monnthicmobile/WalletPresenterActivity.java
+++ b/app/src/main/java/com/example/monnthic/monnthicmobile/WalletPresenterActivity.java
@@ -8,6 +8,8 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
+import org.web3j.utils.Convert;
+
import java.math.BigInteger;
public class WalletPresenterActivity extends AppCompatActivity {
@@ -31,7 +33,7 @@ public class WalletPresenterActivity extends AppCompatActivity {
if(initiateBalance(address)==null){
balance.setText("Error");
}else{
- balance.setText(initiateBalance(address).toString());
+ balance.setText(Convert.fromWei(initiateBalance(address).toString(), Convert.Unit.ETHER).toString());
}
buttonSendTransaction.setOnClickListener(new View.OnClickListener() {
@@ -51,13 +53,14 @@ public class WalletPresenterActivity extends AppCompatActivity {
public void launchTransactionActivity(){
Intent transactionIntent = new Intent(WalletPresenterActivity.this, TransactionActivity.class);
+ transactionIntent.putExtra("WALLET_ADDRESS",address);
WalletPresenterActivity.this.startActivity(transactionIntent);
}
- public BigInteger initiateBalance(String address){
+ public String initiateBalance(String address){
AccessBlockchain ab = new AccessBlockchain();
System.out.println("addresse "+ address);
- BigInteger balanceIs = ab.getTheBalanceOfWallet(address);
+ String balanceIs = ab.getTheBalanceOfWallet(address).toString();
return balanceIs;
}
}