start implementing wallet.
This commit is contained in:
parent
ecadec5878
commit
6d2afb252b
@ -651,6 +651,91 @@ script.encode = function encode(s) {
|
|||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wallet
|
||||||
|
*/
|
||||||
|
|
||||||
|
function Wallet() {}
|
||||||
|
|
||||||
|
Wallet.prototype.createAddress = function(name) {
|
||||||
|
return bitcoindjs.walletNewAddress({ name: name });
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.getAccountAddress = function(options) {
|
||||||
|
return bitcoindjs.getAccountAddress(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.setAccount = function(options) {
|
||||||
|
return bitcoindjs.setAccount(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.getAccount = function(options) {
|
||||||
|
return bitcoindjs.getAccount(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.sendToAddress = function(options) {
|
||||||
|
return bitcoindjs.sendToAddress(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.signMessage = function(options) {
|
||||||
|
return bitcoindjs.signMessage(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.verifyMessage = function(options) {
|
||||||
|
return bitcoindjs.verifyMessage(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.getBalance = function(options) {
|
||||||
|
return bitcoindjs.getBalance(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.getUnconfirmedBalance = function(options) {
|
||||||
|
return bitcoindjs.getUnconfirmedBalance(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.sendFrom = function(options) {
|
||||||
|
return bitcoindjs.sendFrom(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.listTransactions = function(options) {
|
||||||
|
return bitcoindjs.listTransactions(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.listAccounts = function(options) {
|
||||||
|
return bitcoindjs.listAccounts(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.getTransaction = function(options) {
|
||||||
|
return bitcoindjs.getTransaction(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.backupWallet = function(options) {
|
||||||
|
return bitcoindjs.backupWallet(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.walletPassphrase = function(options) {
|
||||||
|
return bitcoindjs.walletPassphrase(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.walletPassphraseChange = function(options) {
|
||||||
|
return bitcoindjs.walletPassphraseChange(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.walletLock = function(options) {
|
||||||
|
return bitcoindjs.walletLock(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.encryptWallet = function(options) {
|
||||||
|
return bitcoindjs.encryptWallet(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.setTxFee = function(options) {
|
||||||
|
return bitcoindjs.setTxFee(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
// singleton
|
||||||
|
Wallet = new Wallet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utils
|
* Utils
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -128,6 +128,7 @@ NAN_METHOD(PollMempool);
|
|||||||
NAN_METHOD(BroadcastTx);
|
NAN_METHOD(BroadcastTx);
|
||||||
NAN_METHOD(VerifyBlock);
|
NAN_METHOD(VerifyBlock);
|
||||||
NAN_METHOD(VerifyTransaction);
|
NAN_METHOD(VerifyTransaction);
|
||||||
|
NAN_METHOD(WalletNewAddress);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
async_start_node_work(uv_work_t *req);
|
async_start_node_work(uv_work_t *req);
|
||||||
@ -1143,6 +1144,46 @@ NAN_METHOD(VerifyTransaction) {
|
|||||||
NanReturnValue(NanNew<Boolean>(valid && standard));
|
NanReturnValue(NanNew<Boolean>(valid && standard));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wallet
|
||||||
|
*/
|
||||||
|
|
||||||
|
NAN_METHOD(WalletNewAddress) {
|
||||||
|
NanScope();
|
||||||
|
|
||||||
|
if (args.Length() < 1 || !args[0]->IsObject()) {
|
||||||
|
return NanThrowError(
|
||||||
|
"Usage: bitcoindjs.walletNewAddress(options)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse the account first so we don't generate a key if there's an error
|
||||||
|
Local<Object> options = Local<Object>::Cast(args[0]);
|
||||||
|
String::Utf8Value name_(options->Get(NanNew<String>("name"))->ToString());
|
||||||
|
std::string strAccount = std::string(*name_);
|
||||||
|
|
||||||
|
if (!pwalletMain->IsLocked()) {
|
||||||
|
pwalletMain->TopUpKeyPool();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate a new key that is added to wallet
|
||||||
|
CPubKey newKey;
|
||||||
|
|
||||||
|
if (!pwalletMain->GetKeyFromPool(newKey)) {
|
||||||
|
// return NanThrowError("Keypool ran out, please call keypoolrefill first");
|
||||||
|
EnsureWalletIsUnlocked();
|
||||||
|
pwalletMain->TopUpKeyPool(100);
|
||||||
|
if (pwalletMain->GetKeyPoolSize() < 100) {
|
||||||
|
return NanThrowError("Error refreshing keypool.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CKeyID keyID = newKey.GetID();
|
||||||
|
|
||||||
|
pwalletMain->SetAddressBook(keyID, strAccount, "receive");
|
||||||
|
|
||||||
|
NanReturnValue(NanNew<String>(CBitcoinAddress(keyID).ToString()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Conversions
|
* Conversions
|
||||||
*/
|
*/
|
||||||
@ -1376,6 +1417,7 @@ init(Handle<Object> target) {
|
|||||||
NODE_SET_METHOD(target, "broadcastTx", BroadcastTx);
|
NODE_SET_METHOD(target, "broadcastTx", BroadcastTx);
|
||||||
NODE_SET_METHOD(target, "verifyBlock", VerifyBlock);
|
NODE_SET_METHOD(target, "verifyBlock", VerifyBlock);
|
||||||
NODE_SET_METHOD(target, "verifyTransaction", VerifyTransaction);
|
NODE_SET_METHOD(target, "verifyTransaction", VerifyTransaction);
|
||||||
|
NODE_SET_METHOD(target, "walletNewAddress", WalletNewAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
NODE_MODULE(bitcoindjs, init)
|
NODE_MODULE(bitcoindjs, init)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user