From 8a11a7a4ad1e7db75a8fe67d086bcdd1eaa066df Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Mon, 11 Nov 2019 17:33:47 -0300 Subject: [PATCH 1/2] link to examples in directory from readme --- README.md | 148 +----------------------------------------------------- 1 file changed, 2 insertions(+), 146 deletions(-) diff --git a/README.md b/README.md index 3fed2a5..7234491 100644 --- a/README.md +++ b/README.md @@ -40,153 +40,9 @@ wasm-pack pack ## Examples -### Create transaction - -The following example sets up an example project using Webpack to bundle the library and run the code in the browser. - -Try it yourself. - -1. Go to that a directory and create the following files. - -#### package.json - -```json -{ - "scripts": { - "build": "webpack", - "serve": "webpack-dev-server" - }, - "devDependencies": { - "text-encoding": "^0.7.0", - "html-webpack-plugin": "^3.2.0", - "webpack": "^4.29.4", - "webpack-cli": "^3.1.1", - "webpack-dev-server": "^3.1.0" - }, - "dependencies": { - "js-chain-libs": "^0.1" - } -} -``` - -#### webpack.config.js - -```js -const path = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const webpack = require('webpack'); - -module.exports = { - entry: './index.js', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js' - }, - plugins: [ - new HtmlWebpackPlugin(), - // Have this example work in Edge which doesn't ship `TextEncoder` or - // `TextDecoder` at this time. - new webpack.ProvidePlugin({ - TextDecoder: ['text-encoding', 'TextDecoder'], - TextEncoder: ['text-encoding', 'TextEncoder'] - }) - ], - mode: 'development' -}; - -``` - -#### index.js - -```js -/* eslint-disable promise/always-return */ -/* eslint-disable no-console */ -/* eslint-disable promise/catch-or-return */ -const rust = import('js-chain-libs'); - -rust.then(mod => { - const { - OutputPolicy, - TransactionBuilder, - Address, - Input, - Value, - Fee, - TransactionFinalizer, - Fragment, - PrivateKey, - Witness, - SpendingCounter, - Hash, - Account, - // eslint-disable-next-line camelcase - uint8array_to_hex - } = mod; - - const txbuilder = new TransactionBuilder(); - - const accountInputAddress = Address.from_string( - 'ca1qh9u0nxmnfg7af8ycuygx57p5xgzmnmgtaeer9xun7hly6mlgt3pj2xk344' - ); - const account = Account.from_address(accountInputAddress); - - const input = Input.from_account(account, Value.from_str('1000')); - - txbuilder.add_input(input); - - txbuilder.add_output( - Address.from_string( - 'ca1q5nr5pvt9e5p009strshxndrsx5etcentslp2rwj6csm8sfk24a2w3swacn' - ), - Value.from_str('500') - ); - - const feeAlgorithm = Fee.linear_fee( - // constant fee - Value.from_str('20'), - // coefficient - Value.from_str('5'), - // certificate cost - Value.from_str('0') - ); - - const finalizedTx = txbuilder.finalize( - feeAlgorithm, - OutputPolicy.one(accountInputAddress) - ); - - const finalizer = new TransactionFinalizer(finalizedTx); - - // Sign the transaction - // We need the genesis hash, the transaction id and the input account private key - const genesisHash = - '6a702a181151b772ca0acbdc4d2870ed80c09b626b29fffc2e47abf2330ad0cd'; - const txid = finalizer.get_txid(); - const privateKey = PrivateKey.from_bech32( - 'ed25519e_sk1gz0ff4w444nwejap5shxrllypz5euswq6wn04fffzes02atw99xkd4jn838v3vrfg9eqt7f4sxjlsy0tdcmj0d2dqvwc8ztwgyfnwyszvjg32' - ); - - const witness = Witness.for_account( - Hash.from_hex(genesisHash), - txid, - privateKey, - SpendingCounter.zero() - ); - - finalizer.set_witness(0, witness); - - const signedTx = finalizer.build(); - - const readyToSendTx = Fragment.from_generated_transaction(signedTx); - - console.log(uint8array_to_hex(readyToSendTx.as_bytes())); -}); -``` - -Now, in that directory, run the two following commands +Check the [wallet example](/examples/wallet/app/utils/wasmWrapper.js) to see how to use this bindings in electron -4. run `npm install` and `npm install js-chain-libs-0.1.0.tgz`. -5. run `npm run serve` and open a browser in `http://localhost:8080/`. The generated transaction should be logged in the console. This is the transaction in its binary format, encoded in hexadecimal. It could be posted as it is to the node via the rest api, for example. +Check the [example faucet](/examples/faucet/server.js) to see how to use this bindings in node. ## Testing From 21b46ed8298ba452931453c15b14ff481dcf54b0 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Tue, 12 Nov 2019 15:05:18 -0300 Subject: [PATCH 2/2] use relative paths --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7234491..611f0ee 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,9 @@ wasm-pack pack ## Examples -Check the [wallet example](/examples/wallet/app/utils/wasmWrapper.js) to see how to use this bindings in electron +Check the [wallet example](./examples/wallet/app/utils/wasmWrapper.js) to see how to use this bindings in electron -Check the [example faucet](/examples/faucet/server.js) to see how to use this bindings in node. +Check the [example faucet](./examples/faucet/server.js) to see how to use this bindings in node. ## Testing