124 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # gbt
 | |
| 
 | |
| **gbt:** rust implementation of the getBlockTemplate algorithm
 | |
| 
 | |
| This project was bootstrapped by [napi](https://www.npmjs.com/package/@napi-rs/cli).
 | |
| 
 | |
| ## Installing gbt
 | |
| 
 | |
| Installing gbt requires a [supported version of Node and Rust](https://github.com/napi-rs/napi-rs#platform-support).
 | |
| 
 | |
| The build process also requires [Rust](https://www.rust-lang.org/tools/install) to be installed.
 | |
| 
 | |
| You can install the project with npm. In the project directory, run:
 | |
| 
 | |
| ```sh
 | |
| $ npm install
 | |
| ```
 | |
| 
 | |
| This fully installs the project, including installing any dependencies and running the build.
 | |
| 
 | |
| ## Building gbt
 | |
| 
 | |
| If you have already installed the project and only want to run the build, run:
 | |
| 
 | |
| ```sh
 | |
| $ npm run build
 | |
| ```
 | |
| 
 | |
| This command uses the [napi build](https://www.npmjs.com/package/@napi-rs/cli) utility to run the Rust build and copy the built library into `./gbt.[TARGET_TRIPLE].node`.
 | |
| 
 | |
| ## Exploring gbt
 | |
| 
 | |
| After building gbt, you can explore its exports at the Node REPL:
 | |
| 
 | |
| ```sh
 | |
| $ npm install
 | |
| $ node
 | |
| > require('.').hello()
 | |
| "hello node"
 | |
| ```
 | |
| 
 | |
| ## Available Scripts
 | |
| 
 | |
| In the project directory, you can run:
 | |
| 
 | |
| ### `npm install`
 | |
| 
 | |
| Installs the project, including running `npm run build-release`.
 | |
| 
 | |
| ### `npm build`
 | |
| 
 | |
| Builds the Node addon (`gbt.[TARGET_TRIPLE].node`) from source.
 | |
| 
 | |
| Additional [`cargo build`](https://doc.rust-lang.org/cargo/commands/cargo-build.html) arguments may be passed to `npm build` and `npm build-*` commands. For example, to enable a [cargo feature](https://doc.rust-lang.org/cargo/reference/features.html):
 | |
| 
 | |
| ```
 | |
| npm run build -- --feature=beetle
 | |
| ```
 | |
| 
 | |
| #### `npm build-debug`
 | |
| 
 | |
| Alias for `npm build`.
 | |
| 
 | |
| #### `npm build-release`
 | |
| 
 | |
| Same as [`npm build`](#npm-build) but, builds the module with the [`release`](https://doc.rust-lang.org/cargo/reference/profiles.html#release) profile. Release builds will compile slower, but run faster.
 | |
| 
 | |
| ### `npm test`
 | |
| 
 | |
| Runs the unit tests by calling `cargo test`. You can learn more about [adding tests to your Rust code](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) from the [Rust book](https://doc.rust-lang.org/book/).
 | |
| 
 | |
| ## Project Layout
 | |
| 
 | |
| The directory structure of this project is:
 | |
| 
 | |
| ```
 | |
| gbt/
 | |
| ├── Cargo.toml
 | |
| ├── README.md
 | |
| ├── gbt.[TARGET_TRIPLE].node
 | |
| ├── package.json
 | |
| ├── src/
 | |
| |   └── lib.rs
 | |
| └── target/
 | |
| ```
 | |
| 
 | |
| ### Cargo.toml
 | |
| 
 | |
| The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command.
 | |
| 
 | |
| ### README.md
 | |
| 
 | |
| This file.
 | |
| 
 | |
| ### gbt.\[TARGET_TRIPLE\].node
 | |
| 
 | |
| The Node addon—i.e., a binary Node module—generated by building the project. This is the main module for this package, as dictated by the `"main"` key in `package.json`.
 | |
| 
 | |
| Under the hood, a [Node addon](https://nodejs.org/api/addons.html) is a [dynamically-linked shared object](https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries). The `"build"` script produces this file by copying it from within the `target/` directory, which is where the Rust build produces the shared object.
 | |
| 
 | |
| ### package.json
 | |
| 
 | |
| The npm [manifest file](https://docs.npmjs.com/cli/v7/configuring-npm/package-json), which informs the `npm` command.
 | |
| 
 | |
| ### src/
 | |
| 
 | |
| The directory tree containing the Rust source code for the project.
 | |
| 
 | |
| ### src/lib.rs
 | |
| 
 | |
| The Rust library's main module.
 | |
| 
 | |
| ### target/
 | |
| 
 | |
| Binary artifacts generated by the Rust build.
 | |
| 
 | |
| ## Learn More
 | |
| 
 | |
| To learn more about Neon, see the [Napi-RS documentation](https://napi.rs/docs/introduction/getting-started).
 | |
| 
 | |
| To learn more about Rust, see the [Rust documentation](https://www.rust-lang.org).
 | |
| 
 | |
| To learn more about Node, see the [Node documentation](https://nodejs.org).
 |