Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
eth-saddle
Advanced tools
Saddle is a simple framework for developing Ethereum Smart Contracts. Think of it like a lean and mean version of truffle.
What saddle does
** What saddle does not**
** What saddle wants to do... one day**
To install saddle, simply create a new npm or yarn project and run:
yarn add eth-saddle
# or
npm install eth-saddle --save
After you've installed saddle, you can compile, test or deploy your contracts. See saddle help
for more information. See configuration
below for configuration help.
Let's assume you define a simple Ethereum contract:
contracts/MyContract.sol
pragma solidity ^0.5.9;
contract MyContract {
function myFunc() pure external returns (uint256) {
return 55;
}
}
Now, you can compile your contract with:
npx saddle compile
saddle compile
will compile your contracts and store the built output in ./build/contracts.json
. This is the raw output of solc compile.
After you've compiled, you can deploy your contracts:
npx saddle deploy -n development
This will deploy your comiled contracts to development (for this, you should have ganache running). For more information on configuring your deployment for rinkeby or mainnet, see the configuration section below.
After you have deployed, you will also see the contract address listed in ./build/development.json
, if you want to keep track of your deployments.
Note: before testing, you currently have to compile your contracts. To run your tests, then, run:
npx saddle compile && npx saddle test
saddle test
runs your tests. To add tests, create a directory /tests
and add some simple tests, e.g.
tests/MyTest.js
describe('View', () => {
test('deploy and read contract', async () => {
let ctx = await deploy('MyContract', []);
expect(await call(ctx.methods.myFunc())).toEqual(55);
});
}
Saddle provides a few helper functions for your tests, which are:
web3
- A web3 instance connected to the chosen provideraccount
- The default account for web3accounts
- A list of unlocked accounts for web3deploy(contract: string, args: any[], sendOptions: SendOptions={})
- Deploys a contractcall(callable, callOptions: CallOptions={})
- Call a function on a contractsend(sendable, sendOptions: SendOptions={})
- Send a transaction on a contractYou can really get by without using most of these functions (except maybe deploy), since they are light wrappers around web3 functions, but the wrappers will allow saddle to provide better helpers and diagnostics in the future.
Deploying a contract:
npx saddle deploy MyContract Arg0 Arg1 -n rinkeby
Verifying a contract on Etherscan:
npx saddle verify "{Etherscan API Key}" MyContract Arg0 Arg1 -n rinkeby
Saddle comes with reasonable default configuration, but you can override it. The core of the configuration is a list of "sources" for any given configuration-item, allowing the framework to look at say an environment variable for a provider, or if that is missing, a file with the provider information, or if that is missing, use a default http endpoint. This would be described as:
...
provider: [{env: "PROVIDER"}, {file: "~/.ethereum-provider"}, {http: "http://rinkeby.infura.io"}]
To set your own configuration, simply run: saddle init
and this will create a file saddle.config.js
. Make any changes to the configuration you need in that file
Please create an issue for any questions. In the interest of keeping saddle as simple as possible, we will not try to mimic all features of more complex frameworks-- so it's better to discuss first before submitting PRs.
Thanks and enjoy!
FAQs
Ethereum Smart Contract Saddle
The npm package eth-saddle receives a total of 12 weekly downloads. As such, eth-saddle popularity was classified as not popular.
We found that eth-saddle demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.