Just build together - ABK Labs believes that open-source software is the purest form of innovation. In our world, there are no competitors, only contributors.
Wiredancer is an FPGA acceleration layer for Firedancer that offloads compute-heavy tasks like ED25519 signature verification to AWS F2 cards. Using an asynchronous interface, it queues verification requests from software while FPGAs work in parallel, verifying up to one million signatures per second. Offloading this workload to dedicated hardware reduces latency, scales across multiple FPGAs, and frees host CPUs, which boosts overall throughput and power efficiency.
This example shows how to use Pulumi to deploy Wiredancer on AWS.
- Have
pulumiinstalled, logged in to wherever you're storing state, and configured to work with AWS.
- https://www.pulumi.com/docs/iac/download-install/
- https://www.pulumi.com/docs/iac/get-started/aws/configure/
- Navigate to the example directory:
cd wiredancer-demo-py
- Run
pulumi install; this will install all of the required pieces for this example.
pulumi install
- Create and select a Pulumi stack
pulumi stack init wiredancer-demo-py
- Set pulumi config
Use pulumi config set <key:val> to set the following configuration values (or just use the
defaults):
| Name | Description | Default Value |
|---|---|---|
| aws:region | The AWS region to launch the cluster in. | us-west-2 |
| demo:debPath | The path to wiredancer deb. | wiredancer_demo_amd64.deb |
| demo:pcapPath | The path to solana pcap file. | solana.pcap |
| demo:afgi | The Wiredancer FPGA AFGI id. | agfi-02d20eee5691113e4 |
| node:instanceType | The AWS instance type to use for all of the nodes. | f2.6xlarge |
| node:instanceArch | The AWS instance architecture type to use for the AMI lookup. | x86_64 |
| node:iops | The iops to use for the EBS volume. | 5000 |
| node:rootVolSize | The size of the root volume to use for the EBS volume. | 200 |
| node:swapSize | The size of the swap volume. | 8192 |
- Run
pulumi up
pulumi up
- Run the demo
mkdir -p wiredancer-demo-state
./wiredancer-demo wiredancer-demo-state
This will set up a tmux session that runs the Wiredancer demo and monitor application in two separate panes:
To exit the tmux session, press ctrl+b and then d.
- Tear down the example
pulumi downThe Wiredancer example includes a prebuilt Debian package. To build your own, follow these steps:
- Install the required dependencies:
- bash
- git
- golang
- Set up sandbox:
mkdir ~/wiredancer-demo
cd ~/wiredancer-demo
- Clone the Firedancer repo:
git clone https://github.com/abklabs/firedancer firedancer
- Clone and set up the SVMKit repo:
git clone https://github.com/abklabs/svmkit svmkit
cd svmkit
make setup
- Build the svmkit cli and install it:
cd cmd/svmkit
go install
- Build the Wiredancer Debian package:
cd ~/wiredancer-demo/firedancer
../svmkit/build/wiredancer-build
This will dump out a Debian package in the ~/wiredancer-demo/firedancer directory.
