
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
fcash-wallet-service
Advanced tools
A Multisig HD Fcash Wallet Service.
Fcash Wallet Service facilitates multisig HD wallets creation and operation through a (hopefully) simple and intuitive REST API.
BWS can usually be installed within minutes and accommodates all the needed infrastructure for peers in a multisig wallet to communicate and operate – with minimum server trust.
See fcash-wallet-client for the official client library that communicates to BWS and verifies its response. Also check fcash-wallet for a simple CLI wallet implementation that relies on BWS.
BWS is been used in production enviroments for Copay Wallet, Bitpay App wallet and others.
More about BWS at https://blog.fcash.cash/announcing-the-fcash-wallet-suite/
git clone https://github.com/fcash-wallet/fcash-wallet-service.git
cd fcash-wallet-service
npm install
npm start
This will launch the BWS service (with default settings) at http://localhost:3232/bws/api.
BWS needs mongoDB. You can configure the connection at config.js
BWS supports SSL and Clustering. For a detailed guide on installing BWS with extra features see Installing BWS.
BWS uses by default a Request Rate Limitation to CreateWallet endpoint. If you need to modify it, check defaults.js' Defaults.RateLimit
BWS can be used with PM2 with the provided app.js script:
pm2 start app.js --name "fcash-wallet-service"
You can add your certificates at the config.js using:
https: true,
privateKeyFile: 'private.pem',
certificateFile: 'cert.pem',
////// The following is only for certs which are not
////// trusted by nodejs 'https' by default
////// CAs like Verisign do not require this
// CAinter1: '', // ex. 'COMODORSADomainValidationSecureServerCA.crt'
// CAinter2: '', // ex. 'COMODORSAAddTrustCA.crt'
// CAroot: '', // ex. 'AddTrustExternalCARoot.crt'
@dabura667 made a report about how to use letsencrypt with BWS: https://github.com/fcash-wallet/fcash-wallet-service/issues/423
Note: all currency amounts are in units of satoshis (1/100,000,000 of a bitcoin).
In order to access a wallet, clients are required to send the headers:
x-identity
x-signature
Identity is the Peer-ID, this will identify the peer and its wallet. Signature is the current request signature, using requestSigningKey, the m/1/1 derivative of the Extended Private Key.
See Fcash Wallet Client for implementation details.
/v1/wallets/: Get wallet information
Returns:
/v1/txhistory/: Get Wallet's transaction history
Optional Arguments:
Returns:
History of incoming and outgoing transactions of the wallet. The list is paginated using the skip & limit params. Each item has the following fields:
action ('sent', 'received', 'moved')
amount
fees
time
addressTo
confirmations
proposalId
creatorName
message
actions array ['createdOn', 'type', 'copayerId', 'copayerName', 'comment']
/v1/txproposals/: Get Wallet's pending transaction proposals and their status
Returns:
/v1/addresses/: Get Wallet's main addresses (does not include change addresses)
Returns:
/v1/balance/: Get Wallet's balance
Returns:
/v1/txnotes/:txid: Get user notes associated to the specified transaction.
Returns:
txid as a string./v1/fiatrates/:code: Get the fiat rate for the specified ISO 4217 code.
Optional Arguments:
Returns:
/v1/wallets/: Create a new Wallet
Required Arguments:
Returns:
/v1/wallets/:id/copayers/: Join a Wallet in creation
Required Arguments:
Returns:
/v1/txproposals/: Add a new transaction proposal
Required Arguments:
Returns:
.id is probably needed in this case./v3/addresses/: Request a new main address from wallet . (creates an address on normal conditions)
Returns:
path is returned so client can derive the address independently and check server's response./v1/txproposals/:id/signatures/: Sign a transaction proposal
Required Arguments:
Returns:
.status is probably needed in this case./v1/txproposals/:id/broadcast/: Broadcast a transaction proposal
Returns:
.status is probably needed in this case./v1/txproposals/:id/rejections: Reject a transaction proposal
Returns:
.status is probably needed in this case./v1/addresses/scan: Start an address scan process looking for activity.
Optional Arguments:
/v1/txconfirmations/: Subscribe to receive push notifications when the specified transaction gets confirmed.
Required Arguments:
/v1/txnotes/:txid/: Modify a note for a tx.
/v1/txproposals/:id/: Deletes a transaction proposal. Only the creator can delete a TX Proposal, and only if it has no other signatures or rejections
Returns:
.id is probably needed in this case./v1/txconfirmations/:txid: Unsubscribe from transaction txid and no longer listen to its confirmation.
Recomended to complete config.js file:
/v1/pushnotifications/subscriptions/: Adds subscriptions for push notifications service at database.
/v2/pushnotifications/subscriptions/: Remove subscriptions for push notifications service from database.
FAQs
A service for Mutisig HD Bitcoin Wallets
We found that fcash-wallet-service demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.