Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
ckb-std
This library contains several modules that help you write CKB contract with Rust.
Usage
Modules
- syscallsmodule: defines CKB syscalls
- high_levelmodule: defines high level APIs
- dynamic_loadingmodule: dynamic loading primitives
- debug!macro: a- println!like macro helps debugging
- entry!macro: defines contract entry point
- default_alloc!macro: defines global allocator for no-std rust
- dummy_atomicmodule: dummy atomic operations
- loggermodule: colored logger implementation
- type_idmodule: Type ID implementation (feature- type-id)
Memory allocator
Default allocator uses a mixed allocation strategy:
- Fixed block heap, only allocate fixed size(64B) memory block
- Dynamic memory heap, allocate any size memory block
User can invoke macro with arguments to customize the heap size. The default heap size arguments are:
(fixed heap size 4KB, dynamic heap size 516KB, dynamic heap min memory block 64B)
Use the macro with arguments to change it:
default_alloc!
Beware, use difference heap size or memory block size may affect the verification result of the contract, some runtime errors such as out of memory may occur; you should always test the contract after customizing.
Examples
Check examples and tests to learn how to use.
See also ckb-tool which helps you write tests.
Upgrading Issues
Starting from ckb-std 0.16.0, RISC-V atomic instructions are generated by default. However, ckb-vm doesn't directly support atomic instructions. To address this, ckb-std provides the following solutions:
- Use the "dummy-atomic" feature (enabled by default)
- Adjust Rust compilation flags by adding -C target-feature=-atoRUSTFLAGS
For more detailed information on compilation flags, refer to the CKB Script Templates repository.