Awesome
<!-- logo --> <p align="center"> <img src="https://raw.githubusercontent.com/argentlabs/argent-x/HEAD/assets/readme-header.png"> </p><h3 align='center' style='margin: 1em;'>โฌ๏ธ Get <b>Argent X</b> for Starknet today:</h3> <p align="center"> <a href="https://chrome.google.com/webstore/detail/argent-x-starknet-wallet/dlcobpjiigpikoobohmabehhmhfoodbb/"> <img src="https://raw.githubusercontent.com/argentlabs/argent-x/HEAD/assets/button-download.svg"> </a> </p>
<h2>๐ Table of contents</h2>
- ๐ง Example dapp
- ๐ Usage with your dapp
- ๐ Install from sources
- ๐ฉ๐พโ๐ป Development
- ๐งช Testing
- โ๏ธ Contributing
- โค๏ธ Family and friends
- ๐จ๐ผโ๐จ Authors and license
๐ง Example dapp
You can try the extension using our example dapp hosted at:
https://github.com/argentlabs/starknetkit-example-dapp
๐ Usage with your dapp
If you want to use this Starknet Wallet extension with your dapp, the easiest way is to checkout the starknetkit package
# starknet.js is a peer dependency
pnpm add starknetkit starknet
import { connect } from "starknetkit"
// Let the user pick a wallet (on button click)
const starknet = connect()
if (!starknet) {
throw Error("User rejected wallet selection or silent connect found nothing")
}
// (optional) connect the wallet
await starknet.enable()
// Check if connection was successful
if(starknet.isConnected) {
// If the extension was installed and successfully connected, you have access to a starknet.js Signer object to do all kinds of requests through the user's wallet contract.
starknet.account.execute({ ... })
} else {
// In case the extension wasn't successfully connected you still have access to a starknet.js Provider to read starknet states and sent anonymous transactions
starknet.provider.callContract( ... )
}
Checkout starknet.js to learn more about how to use Provider
and Signer
.
๐ Install from sources
First clone this repository on your machine then run:
pnpm run setup # setup dependencies
pnpm build # run build process for all packages
Now you need to load the locally built chrome extension into your browser, by loading an unpacked extension from path packages/extension/dist
:
Chrome
- Open the Extension Management page by navigating to
chrome://extensions
. - Enable Developer Mode by clicking the toggle switch next to Developer mode.
- Click the Load unpacked button and select the extension directory.
Firefox
- Open the Extension Management page by navigating to
about:debugging#/runtime/this-firefox
- Select the
manifest.json
from the dist folder
๐ฉ๐พโ๐ป Development
To contribute to this repository please read the contributing guidelines first.
To setup the repo on your machine just run:
pnpm run setup # setup dependencies
pnpm dev # run build process for all packages in watch mode
This project contains 3 packages:
package | description |
---|---|
extension | Argent X extension |
get-starknet | npm module to get started with starknet.js and Argent X quickly |
dapp | example dapp for testing purposes and example for dapps how to use get-starknet |
To test changes made to the extension
package you need to load the local unpacked extension into Chrome as described above. Changes are shown after reopening the extension. Changes to background.js
are just shown after a complete restart of the Chrome process.
๐งช Testing
Setup
Some tests require starknet-devnet
to be available at http://127.0.0.1:5050/. If tests are run without then you may see errors including connect ECONNREFUSED 127.0.0.1:5050
.
Run devnet locally
For convenience this service can be started with Docker desktop running;
-
For ARM computers (e.g. Mac computers with Apple silicon)
docker run -it -p 5050:5050 shardlabs/starknet-devnet-rs:0.0.7-arm-seed0
-
Otherwise
docker run -it -p 5050:5050 shardlabs/starknet-devnet-rs:0.0.7-seed0
Run tests
pnpm test # run unit tests for all packages
pnpm test:e2e # run end-to-end tests for all packages
Tools to help with testing
See also /docs/tools-for-local-testing.md
โ๏ธ Contributing
Everyone is welcome to contribute. Please take a moment to review the contributing guidelines.
โค๏ธ Family and friends
Since this project would not have been possible without starknet.js, we would like to say a big thank you to all starknet.js contributors and @0xs34n for starting it.
One more thank you to the StarkWare Team.
๐จ๐ผโ๐จ Authors and license
Argent and contributors.
See the included License.md file.