aboutsummaryrefslogtreecommitdiffstats
path: root/xeth/frontend.go
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-03-24 23:42:33 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-03-24 23:42:33 +0800
commit2106a63d60e261608dc71a30f07b6b905fc78f2f (patch)
treef095857f3a2a074592b6ddd5118c52bd7d797ae9 /xeth/frontend.go
parent65d553d367d698b26a9586bd709d561d00b4f5a8 (diff)
downloaddexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.tar
dexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.tar.gz
dexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.tar.bz2
dexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.tar.lz
dexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.tar.xz
dexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.tar.zst
dexon-2106a63d60e261608dc71a30f07b6b905fc78f2f.zip
Move Frontend interface to separate file
Diffstat (limited to 'xeth/frontend.go')
-rw-r--r--xeth/frontend.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/xeth/frontend.go b/xeth/frontend.go
new file mode 100644
index 000000000..8deb5c98c
--- /dev/null
+++ b/xeth/frontend.go
@@ -0,0 +1,32 @@
+package xeth
+
+import (
+ "github.com/ethereum/go-ethereum/core/types"
+)
+
+// Frontend should be implemented by users of XEth. Its methods are
+// called whenever XEth makes a decision that requires user input.
+type Frontend interface {
+ // UnlockAccount is called when a transaction needs to be signed
+ // but the key corresponding to the transaction's sender is
+ // locked.
+ //
+ // It should unlock the account with the given address and return
+ // true if unlocking succeeded.
+ UnlockAccount(address []byte) bool
+
+ // This is called for all transactions inititated through
+ // Transact. It should prompt the user to confirm the transaction
+ // and return true if the transaction was acknowledged.
+ //
+ // ConfirmTransaction is not used for Call transactions
+ // because they cannot change any state.
+ ConfirmTransaction(tx *types.Transaction) bool
+}
+
+// dummyFrontend is a non-interactive frontend that allows all
+// transactions but cannot not unlock any keys.
+type dummyFrontend struct{}
+
+func (dummyFrontend) UnlockAccount([]byte) bool { return false }
+func (dummyFrontend) ConfirmTransaction(*types.Transaction) bool { return true }