Spaces:
Sleeping
Sleeping
Upload 3 files
Browse files- contracts/RevenueSplitter.sol +18 -0
- contracts/Treasury.sol +25 -0
- contracts/Trigger.sol +17 -0
contracts/RevenueSplitter.sol
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// SPDX-License-Identifier: MIT
|
| 2 |
+
pragma solidity ^0.8.20;
|
| 3 |
+
|
| 4 |
+
contract RevenueSplitter {
|
| 5 |
+
address public daoTreasury;
|
| 6 |
+
address public creator; // Your 10% wallet
|
| 7 |
+
|
| 8 |
+
constructor(address _dao, address _creator) {
|
| 9 |
+
daoTreasury = _dao;
|
| 10 |
+
creator = _creator;
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
receive() external payable {
|
| 14 |
+
uint256 share = msg.value / 10; // 10%
|
| 15 |
+
payable(creator).transfer(share);
|
| 16 |
+
payable(daoTreasury).transfer(msg.value - share);
|
| 17 |
+
}
|
| 18 |
+
}
|
contracts/Treasury.sol
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// SPDX-License-Identifier: MIT
|
| 2 |
+
pragma solidity ^0.8.20;
|
| 3 |
+
|
| 4 |
+
interface ITrigger { function triggerActivated() external view returns (bool); }
|
| 5 |
+
interface IERC20 { function transfer(address to, uint256 amount) external returns (bool); }
|
| 6 |
+
|
| 7 |
+
contract Treasury {
|
| 8 |
+
address public trigger;
|
| 9 |
+
address public usdc = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913; // Base USDC
|
| 10 |
+
|
| 11 |
+
constructor(address _trigger) { trigger = _trigger; }
|
| 12 |
+
|
| 13 |
+
function executeSwap() external {
|
| 14 |
+
require(ITrigger(trigger).triggerActivated(), "No trigger");
|
| 15 |
+
uint256 bal = IERC20(usdc).balanceOf(address(this));
|
| 16 |
+
// Real: Swap USDC -> WBTC via 1inch (add router)
|
| 17 |
+
// IERC20(usdc).transfer(router, bal); // Mock
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
// Fund: Anyone sends USDC → gets votes (pro-rata)
|
| 21 |
+
function fund(uint256 amount) external {
|
| 22 |
+
IERC20(usdc).transferFrom(msg.sender, address(this), amount);
|
| 23 |
+
// Emit votes = amount / 1e6
|
| 24 |
+
}
|
| 25 |
+
}
|
contracts/Trigger.sol
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// SPDX-License-Identifier: MIT
|
| 2 |
+
pragma solidity ^0.8.20;
|
| 3 |
+
|
| 4 |
+
contract Trigger {
|
| 5 |
+
bool public triggerActivated = false;
|
| 6 |
+
address public creator;
|
| 7 |
+
|
| 8 |
+
event TriggerActivated();
|
| 9 |
+
|
| 10 |
+
constructor(address _creator) { creator = _creator; }
|
| 11 |
+
|
| 12 |
+
function activate() external { // Call from oracle
|
| 13 |
+
require(msg.sender == creator, "Only creator");
|
| 14 |
+
triggerActivated = true;
|
| 15 |
+
emit TriggerActivated();
|
| 16 |
+
}
|
| 17 |
+
}
|