Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 21 additions & 12 deletions internal/migrations/001-common-actions.prod.sql
Original file line number Diff line number Diff line change
Expand Up @@ -41,24 +41,33 @@ CREATE OR REPLACE ACTION create_streams(

-- ===== FEE COLLECTION =====
-- Flat 1 TRUF per transaction (write-fee policy per issue #3805).
-- Cost is independent of $num_streams: batching N streams in one call
-- charges the same 1 TRUF as creating a single stream.
-- Phased rollout: only wallets enrolled in `system:fee_required`
-- are charged. Empty role => no caller is charged. Once every
-- active write wallet is enrolled, drop this gate in a follow-up
-- migration so universal charging resumes.
$total_fee := 1000000000000000000::NUMERIC(78, 0); -- 1 TRUF with 18 decimals

IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
$fee_required BOOL := FALSE;
for $r in are_members_of('system', 'fee_required', ARRAY[$lower_caller]) {
$fee_required := $r.is_member;
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

$caller_balance := eth_truf.balance(@caller);
IF $fee_required {
IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

IF $caller_balance < $total_fee {
ERROR('Insufficient balance for stream creation. Required: 1 TRUF');
}
$caller_balance := eth_truf.balance(@caller);

eth_truf.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
IF $caller_balance < $total_fee {
ERROR('Insufficient balance for stream creation. Required: 1 TRUF');
}

eth_truf.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
}
-- ===== END FEE COLLECTION =====

-- ===== STREAM CREATION LOGIC =====
Expand Down
33 changes: 21 additions & 12 deletions internal/migrations/001-common-actions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -91,24 +91,33 @@ CREATE OR REPLACE ACTION create_streams(

-- ===== FEE COLLECTION =====
-- Flat 1 TRUF per transaction (write-fee policy per issue #3805).
-- Cost is independent of $num_streams: batching N streams in one call
-- charges the same 1 TRUF as creating a single stream.
-- Phased rollout: only wallets enrolled in `system:fee_required`
-- are charged. Empty role => no caller is charged. Once every
-- active write wallet is enrolled, drop this gate in a follow-up
-- migration so universal charging resumes.
$total_fee := 1000000000000000000::NUMERIC(78, 0); -- 1 TRUF with 18 decimals

IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
$fee_required BOOL := FALSE;
for $r in are_members_of('system', 'fee_required', ARRAY[$lower_caller]) {
$fee_required := $r.is_member;
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

$caller_balance := hoodi_tt.balance(@caller);
IF $fee_required {
IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

IF $caller_balance < $total_fee {
ERROR('Insufficient balance for stream creation. Required: 1 TRUF');
}
$caller_balance := hoodi_tt.balance(@caller);

hoodi_tt.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
IF $caller_balance < $total_fee {
ERROR('Insufficient balance for stream creation. Required: 1 TRUF');
}

hoodi_tt.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
}
-- ===== END FEE COLLECTION =====

-- ===== STREAM CREATION LOGIC =====
Expand Down
33 changes: 21 additions & 12 deletions internal/migrations/003-primitive-insertion.prod.sql
Original file line number Diff line number Diff line change
Expand Up @@ -62,24 +62,33 @@ CREATE OR REPLACE ACTION insert_records(

-- ===== FEE COLLECTION =====
-- Flat 1 TRUF per transaction (write-fee policy per issue #3805).
-- Cost is independent of $num_records: batching N records in one call
-- charges the same 1 TRUF as inserting a single record.
-- Phased rollout: only wallets enrolled in `system:fee_required`
-- are charged. Empty role => no caller is charged. Once every
-- active write wallet is enrolled, drop this gate in a follow-up
-- migration so universal charging resumes.
$total_fee := 1000000000000000000::NUMERIC(78, 0); -- 1 TRUF with 18 decimals

IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
$fee_required BOOL := FALSE;
for $r in are_members_of('system', 'fee_required', ARRAY[$lower_caller]) {
$fee_required := $r.is_member;
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

$caller_balance := eth_truf.balance(@caller);
IF $fee_required {
IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

IF $caller_balance < $total_fee {
ERROR('Insufficient balance for write fee. Required: 1 TRUF');
}
$caller_balance := eth_truf.balance(@caller);

eth_truf.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
IF $caller_balance < $total_fee {
ERROR('Insufficient balance for write fee. Required: 1 TRUF');
}

eth_truf.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
}
-- ===== END FEE COLLECTION =====

$current_block INT := @height;
Expand Down
33 changes: 21 additions & 12 deletions internal/migrations/003-primitive-insertion.sql
Original file line number Diff line number Diff line change
Expand Up @@ -69,24 +69,33 @@ CREATE OR REPLACE ACTION insert_records(

-- ===== FEE COLLECTION =====
-- Flat 1 TRUF per transaction (write-fee policy per issue #3805).
-- Cost is independent of $num_records: batching N records in one call
-- charges the same 1 TRUF as inserting a single record.
-- Phased rollout: only wallets enrolled in `system:fee_required`
-- are charged. Empty role => no caller is charged. Once every
-- active write wallet is enrolled, drop this gate in a follow-up
-- migration so universal charging resumes.
$total_fee := 1000000000000000000::NUMERIC(78, 0); -- 1 TRUF with 18 decimals

IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
$fee_required BOOL := FALSE;
for $r in are_members_of('system', 'fee_required', ARRAY[$lower_caller]) {
$fee_required := $r.is_member;
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

$caller_balance := hoodi_tt.balance(@caller);
IF $fee_required {
IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

IF $caller_balance < $total_fee {
ERROR('Insufficient balance for write fee. Required: 1 TRUF');
}
$caller_balance := hoodi_tt.balance(@caller);

hoodi_tt.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
IF $caller_balance < $total_fee {
ERROR('Insufficient balance for write fee. Required: 1 TRUF');
}

hoodi_tt.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
}
-- ===== END FEE COLLECTION =====

$current_block INT := @height;
Expand Down
33 changes: 21 additions & 12 deletions internal/migrations/004-composed-taxonomy.prod.sql
Original file line number Diff line number Diff line change
Expand Up @@ -57,24 +57,33 @@ CREATE OR REPLACE ACTION insert_taxonomy(

-- ===== FEE COLLECTION =====
-- Flat 1 TRUF per transaction (write-fee policy per issue #3805).
-- Cost is independent of $num_children: a taxonomy with N children
-- charges the same 1 TRUF as one with a single child.
-- Phased rollout: only wallets enrolled in `system:fee_required`
-- are charged. Empty role => no caller is charged. Once every
-- active write wallet is enrolled, drop this gate in a follow-up
-- migration so universal charging resumes.
$total_fee := 1000000000000000000::NUMERIC(78, 0); -- 1 TRUF with 18 decimals

IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
$fee_required BOOL := FALSE;
for $r in are_members_of('system', 'fee_required', ARRAY[$lower_caller]) {
$fee_required := $r.is_member;
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

$caller_balance := eth_truf.balance(@caller);
IF $fee_required {
IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

IF $caller_balance < $total_fee {
ERROR('Insufficient balance for taxonomies creation. Required: 1 TRUF');
}
$caller_balance := eth_truf.balance(@caller);

eth_truf.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
IF $caller_balance < $total_fee {
ERROR('Insufficient balance for taxonomies creation. Required: 1 TRUF');
}

eth_truf.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
}
-- ===== END FEE COLLECTION =====

-- Default start time to 0 if not provided
Expand Down
33 changes: 21 additions & 12 deletions internal/migrations/004-composed-taxonomy.sql
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,33 @@ CREATE OR REPLACE ACTION insert_taxonomy(

-- ===== FEE COLLECTION =====
-- Flat 1 TRUF per transaction (write-fee policy per issue #3805).
-- Cost is independent of $num_children: a taxonomy with N children
-- charges the same 1 TRUF as one with a single child.
-- Phased rollout: only wallets enrolled in `system:fee_required`
-- are charged. Empty role => no caller is charged. Once every
-- active write wallet is enrolled, drop this gate in a follow-up
-- migration so universal charging resumes.
$total_fee := 1000000000000000000::NUMERIC(78, 0); -- 1 TRUF with 18 decimals

IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
$fee_required BOOL := FALSE;
for $r in are_members_of('system', 'fee_required', ARRAY[$lower_caller]) {
$fee_required := $r.is_member;
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

$caller_balance := hoodi_tt.balance(@caller);
IF $fee_required {
IF @leader_sender IS NULL {
ERROR('Leader address not available for fee transfer');
}
$leader_hex := encode(@leader_sender, 'hex')::TEXT;

IF $caller_balance < $total_fee {
ERROR('Insufficient balance for taxonomies creation. Required: 1 TRUF');
}
$caller_balance := hoodi_tt.balance(@caller);

hoodi_tt.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
IF $caller_balance < $total_fee {
ERROR('Insufficient balance for taxonomies creation. Required: 1 TRUF');
}

hoodi_tt.transfer($leader_hex, $total_fee);
$fee_total := $total_fee;
$fee_recipient := '0x' || $leader_hex;
}
-- ===== END FEE COLLECTION =====

-- Default start time to 0 if not provided
Expand Down
Loading
Loading