
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
DagDev - Development framework for BlockDAG networks. Like Hardhat, but for DAG-based blockchains.
Install globally via npm:
npm install -g dagdev
Or use npx without installing:
npx dagdev init my-project
dagdev init my-project
cd my-project
This creates:
contracts/ - Solidity smart contractsscripts/ - Deployment scriptstest/ - Test filesdagdev.config.js - Configuration filedagdev init <directory>Create a new DagDev project
dagdev init my-dag-project
dagdev compileCompile Solidity contracts
dagdev compile
# Outputs: artifacts/ directory with compiled contracts
dagdev nodeStart a local DagDev node
dagdev node
# Starts node on http://127.0.0.1:8545
# Mining enabled by default
dagdev run <script>Run a deployment or interaction script
dagdev run scripts/deploy.js --network local
dagdev run scripts/deploy.js --network testnet
dagdev testRun tests
dagdev test
dagdev test test/mytest.test.js
dagdev visualizeLaunch DAG visualizer
dagdev visualize
# Opens http://localhost:3000
Create dagdev.config.js in your project:
module.exports = {
solidity: {
version: "0.8.30",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
},
networks: {
local: {
url: "http://127.0.0.1:8545",
mining: {
enabled: true,
interval: 2000 // ms between blocks
}
},
testnet: {
url: "https://testnet.kas.fyi",
chainId: 10222,
accounts: ["0xYOUR_PRIVATE_KEY"]
}
},
paths: {
sources: "./contracts",
tests: "./test",
cache: "./cache",
artifacts: "./artifacts"
}
};
# 1. Create project
dagdev init my-dapp
cd my-dapp
# 2. Add a contract
cat > contracts/Storage.sol << EOF
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
contract Storage {
uint256 value;
function store(uint256 _value) public {
value = _value;
}
function retrieve() public view returns (uint256) {
return value;
}
}
EOF
# 3. Compile
dagdev compile
# 4. Start local node (in separate terminal)
dagdev node
# 5. Deploy
cat > scripts/deploy.js << EOF
async function main() {
const Storage = await dag.getContractFactory("Storage");
const storage = await Storage.deploy();
await storage.waitForDeployment();
console.log("Storage deployed to:", await storage.getAddress());
}
main();
EOF
dagdev run scripts/deploy.js
# 6. Test
dagdev test
Available in scripts and tests as dag:
// Get contract factory
const Factory = await dag.getContractFactory("MyContract");
// Deploy contract
const contract = await Factory.deploy(arg1, arg2);
await contract.waitForDeployment();
// Get signer
const [signer] = await dag.getSigners();
// Get network
const network = await dag.getNetwork();
console.log(network.name, network.chainId);
// DAG-specific
const dagGraph = await dag.getDAGGraph();
const tips = await dag.getTips();
const blueSet = await dag.getBlueSet();
const { expect } = require("chai");
describe("Storage", function() {
it("Should store and retrieve value", async function() {
const Storage = await dag.getContractFactory("Storage");
const storage = await Storage.deploy();
await storage.waitForDeployment();
await storage.store(42);
expect(await storage.retrieve()).to.equal(42);
});
// DAG-specific matchers
it("Should be in blue set", async function() {
const tx = await contract.someFunction();
expect(tx.hash).to.beInBlueSet();
});
});
dagdev node # Start local node
dagdev run scripts/deploy.js --network local
// dagdev.config.js
module.exports = {
networks: {
testnet: {
url: "https://testnet.kas.fyi",
chainId: 10222,
accounts: [process.env.PRIVATE_KEY]
}
}
};
dagdev run scripts/deploy.js --network testnet
Load accounts from private keys:
// In scripts/deploy.js
const [deployer] = await dag.getSigners();
console.log("Deploying with:", deployer.address);
const balance = await dag.provider.getBalance(deployer.address);
console.log("Balance:", balance.toString());
Set private key in .env:
PRIVATE_KEY=0xYOUR_PRIVATE_KEY_HERE
When installed, you get access to:
dagdev - CLI tool (this package)@dagdev/core - Core DAG implementation@dagdev/runtime - Runtime environment (DRE)@dagdev/compiler - Solidity compiler wrapper@dagdev/config - Configuration systemMake sure the local node is running:
dagdev node # In separate terminal
Install globally:
npm install -g dagdev
Or use npx:
npx dagdev --version
Check Solidity version in dagdev.config.js matches your contracts:
module.exports = {
solidity: {
version: "0.8.30" // Match pragma version
}
};
MIT License - see LICENSE file for details
Contributions welcome! See our GitHub repository for guidelines.
Built with ❤️ for the BlockDAG ecosystem
FAQs
CLI tool for DagDev - Hardhat for BlockDAG Networks
We found that dagdev demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.