#markets 16:54 Hi, i have lost all my saved money to FTX jews around 20000 dollars. #markets 16:54 Please help me live. Please help me. #markets 16:54 BTC :   bc1q9vfmfwj6av9pxj50r6xyl652mwhqvw5ds86nw2 #markets from ##math on libera lmao #random git clone #random ls sidediff/ #random ACTION sees go files #random .. && rm -fr sidediff #markets I said glass of juice #markets why does people hate the juice #dev so i the Channel send/recv error happen when we run ping_node to our own address while on an inbound session #dev maybe cos we are creating channels with addrs that we are already using for inbound connections? #dev this is the erroring code https://github.com/darkrenaissance/darkfi/blob/23403f9c8336c55548253bb018b82f7fa280581a/src/net/protocol/protocol_seed.rs#L66 #dev this is the same code but works w/o error since it only runs on outbound connections https://github.com/darkrenaissance/darkfi/blob/greylists/src/net/protocol/protocol_address.rs#L172 #dev gna sleep on it. gn #random test #dev PUPU fn foo() { bar(); foo_body(); } #dev PPUU fn foo() { foo_body(); bar(); } #dev seems the choice is arbitrary #dev since we will have fee calls as siblings, PPUU will be at least 2x faster than PUPU #dev ACTION submits xir recommendation to the committee #dev gm #dev free-module: Fee calls are supposed to be the first call executed, with no dependencies above or below #dev If that fails, we don't have to execute the rest of the tx #dev If it passes, we have to verify the rest #dev And then on the end we see if enough fee was paid #dev The signatures and zk cost is known in advance #dev wasm exec is fast and shouldn't be burdensome #dev with PPUU, if any of P fails then the tx stops, so you can compute them all in parallel #dev even the U's theoretically could be parallel (maybe in the future they will), but i agree it's safer to do them sequential for now (due to unforeseen non-determinism introduced) #dev so PPUU worst case (a call fails) is same as or better than than PUPU, but best case is much better (Nx faster, where N = number of calls, and N >= 2) #dev about it being more rational to dev: the difference is aesthetic, that is, where the child call occurs in the trace (see the foo() examples above) #dev and in fact solidity recommends calls-effects-interactions, so typically solidity devs would have this last anyway #dev I'd argue it's a lot worse #dev Since it doesn't let you create new coins and use then in the same tx #dev yes it does #dev No it does not #dev think of it this way #dev you have the call params, and you know the call will succeed #dev you know the result of that operation #dev a contract should never be reading the DB directory- the contract can provide helpers in model.rs for the params #dev (so external contracts can operate on the params and see: "ah these coins will be created") #dev *never be reading the DB directly #dev sry if this feels like trolling tho, i don't mean to revive dead args, but just stating my case #dev That's a bad idea. #dev What if I have a single input and I want to send you tokens #dev I can only use that input to pay the fee and do nothing else #dev To do your thing we'd have to rewrite all the contracts to learn this new thing #dev you don't have to change anything in the contracts #dev Whereas now I can pay the fee, create a new output, and use that output in a Transfer #dev ah true #dev meh ghey #dev okok i yield #dev It's totally fine #dev You can eventually do paralelism in this case as well #dev Just needs a proper algorithm #dev To identify independent txs #dev well the contracts have to mark it explicitly #dev sorry not the contracts #dev i mean the calls #dev I'm sure it can be done #dev (tx_id, call_idx) #dev it could be risky actually #dev in your fee example, i could double spend the coin #dev You can't because PUPU #dev yep correct #dev blockchain's in general are slow af in prod #dev it will be a chief concern #dev btw there is a flag for DaoProposalMetadata called ended, but when exec() happens, we just delete it from the DB, so i think it's redundant and we can remove it #dev That flag was for ponential time expiration #dev Not for exec #dev *potential #dev for time expiration, we can also delete it from the db #dev That has to be triggered #dev yep, same for the flag ended #dev also in vote we can add a check to prevent voting past the time limit #dev Yeah true, I think I added that to make it a timestamp #dev But didn't happen #dev (so triggering doesn't need to happen) #dev ok i have the time limit as a TODO #dev gm #dev gm #dev DAO test is broken on current master, it was working on 6bb313db3d887dbbf9f6b6eda06c902414c019f5 #dev git bisect cannot detect the bad commit, but says it's one of these: #dev d958bafdf4b08e558dbc3783c49b2ee7226d08c0 #dev 9d8fdb0c3ab787a03e11e7d061198f48fb0452d6 #dev bd86ce56783a17d39404e85d462e3d73d6e37b52 #dev 11657ca7bbeeb65ad4b51e8958cec2ddecf857d0 #dev so yeah the tree stuff #dev : @narodnik pushed 1 commit to master: 86a117cd38: dao: remove redundant ended, we delete proposals from the DB. getting them will fail after they're ended. #dev weird it fails on the airdrop, yet money::transfer test works fine #dev nvm i guess i didnt rm the .bins again #dev https://stackoverflow.com/questions/11129212/tcp-can-two-different-sockets-share-a-port "there can only be one process per computer listening on a port" #dev so i think when the ping_node to self happens, it blocks the inbound connections on the same port #dev You need to avoid adding self to your peerlist #dev i'll add a timer but from debug output it seems pinging ourselves takes a long time, like 5s or so, delaying the seed protocol #dev brawndo: i will check that, but just noting the ping_node to self is unrelated and happens before we send our external addr to the seed node #dev Where are you reproducing this? #dev using the integration test #dev net/tests.rs ? #dev yes #dev ok I'll have a look later #dev thanks #dev : @lunar-mining pushed 1 commit to greylists: 4e52a00b98: net: remove whitelist_store_or_update call from OutboundSession... #dev : @parazyd pushed 1 commit to greylists: 7dc0b1d489: net/hosts: Add missing mod.rs #dev ah ty #dev fyi in filter_address we are checking it's not our own address, so it shouldn't be this #dev *checking it's not our addr before storing in greylist #dev opps #dev we have our own addrs in the greylist brawndo #dev One thing you're not doing is starting the seed p2p instance #dev yes i'm using lilith #dev aha #dev just helpful to have it in a different terminal #dev let me add an assert for the own addr thing #dev ah yep so there's for sure our own addrs sneaking into the greylist #dev brb #dev b #dev darkfi/src/contract/dao/src/entrypoint.rs:175 #dev if call_idx >= calls.len() as u32 { #dev is this ever possible inside wasm? #dev surely that would be a runtime error if that happened #dev Find the entire path of how ix is serialized #dev But yeah it seems like it would be a host issue #dev validator/verification.rs:358 #dev ok thanks #dev ah we only do own addrs filtering when it's not localhost https://github.com/darkrenaissance/darkfi/blob/greylists/src/net/hosts/store.rs#L377 #dev gealach: You can filter by port #dev ACTION afk now #dev see you #dev : @narodnik pushed 1 commit to master: 53ee11777d: dao: remove money::transfer specific checks in prep for move to auth module #dev : @narodnik pushed 1 commit to master: 5cdafb5238: cleanup money_transfer entrypoint #dev : @lunar-mining pushed 1 commit to greylists: b68ae27935: net: avoid adding our own address to the greylist when on localnet... #dev : @lunar-mining pushed 1 commit to greylists: cda2aeb564: net: clean up reference/ pass by value usage in store.rs #dev : @lunar-mining pushed 1 commit to greylists: 5c4e046908: net: fix tests on store.rs #dev free-module: around? #dev ofc #dev ah well you kinda answered Q already which was whether protocol_seed gets called once, but indeed it get calls again in the PeerDiscovery loop in outbound session #dev just trying to close in on this error which is triggered by send_my_addrs, ping_node in protocol_seed #dev i think it's cos we're blocking the port with the ping_node call and inbound connections are spazzing out #dev we get channel read/ write errors "broken pipe" etc #dev on the inbound connections #dev you said before to add a check like "last_ping_time" or something before pinging ourselves #dev to make sure we're not making multiple redundant calls #dev so maybe it's a good moment to do that #dev better to not add loads of stuff until you understand fully what's going on or where the error comes from #dev fair #dev if you disable the pinging, does everything go back to normal? #dev yes #dev also, if we disable inbound connections, it works fine #dev also, if we only only pinging self to happen when it's an outbound connection (as on protocol_addr) channels work fine but host lists don't propagate #dev s/only/allow #dev what about artificial delays in ping to slow it down? #dev i'll try that #dev doesn't stop the error #dev broken pipe/ connection reset #dev how long is the delay? you can try like 10s for example #dev ok was doing 5 #dev yeah also fine #dev 10s doesn't work either #dev ++ #dev found something interesting and unexpected #dev in protocol_seed, if we don't ping ourselves and instead just send our addr without pinging at all, we get the same error #dev it's only if we remove all send_my_addr functionality that the error stops #dev so it's not to do with ping_node as i thought #dev i'm closin in #dev doesn't happen when we run seed in test.rs instead of using lilith... #dev gtg afk for a bit #dev gealach: pls have a look in p2p, there might be some weird bug that is not quite deterministic #dev gealach: It happens sometimes when outbound_connections=0, also inbound connections stop working, I dunno for what reason #dev There could also always be silent failures with anything using the ? operator #dev tnx brawndo will try these hints #dev unwrap() ftw #random test #random test back #random ty gealach #dev biab #dev gn #dev gn #dev gm #dev gm #random https://heritageireland.ie/winter-solstice/ #dev gm #dev greets #dev ok so here's my understanding of what's happening with the channel send/ recv errors: #dev 1. when we do a version exchange with ourself in ping_node, the temporary channel that is created is interpreted by the TcpListener as an inbound connection and we create an acceptor and start an inbound session with it. as we destroy the channel after the version exchange, this inbound connection is broken and we get channel send/ recv errors #dev 2. also, in perform_handshake_protocols we also store the channel in the p2p set of channels, which results in our own external addr being stored as a p2p channel #dev 2. is easily fixable by creating a new handshake protocol specific to ping_node that doesn't store the channel in the p2p store #dev not sure what to do about 1 #dev the good news is it's a harmless error as we don't really care about that channel getting destroyed, it's expected behavior #dev however if we could avoid the listener picking up on those temporary handshake connections that would be better #dev To me it sounds like correct behaviour #dev When you ping "self", where "self" is an inbound session acceptor, you should create a channel #dev The issue might be that you're not closing the channel after the handshake #dev For "pinging" nodes, IMO you should still be performing the full handshake including protocol and version negotiation #dev https://github.com/darkrenaissance/darkfi/blob/5c4e04690800d26c201783a8ec7dc7e9f34b8c81/src/net/hosts/refinery.rs#L133 #dev Well for one it's missing in the Err case in that switch #dev yes, i have it added locally #dev Is this issue isolated in a test case? #dev i've just been commenting stuff out from net #dev wdym re: pinging nodes? #dev in the test i'm running, it's just a single node connecting to a seed node, and ping_node only happens on self #dev TODO: make this an actual ping-pong method, rather than a version exchange. #dev I don't think this is needed #dev OK #dev solstice: Is it errors like this? https://termbin.com/zrag #dev I think this is a non-issue #dev It's probably just a local thing #dev Between https://github.com/darkrenaissance/darkfi/blob/5c4e04690800d26c201783a8ec7dc7e9f34b8c81/src/net/channel.rs#L266-L271 #dev and this one being caught: https://github.com/darkrenaissance/darkfi/blob/5c4e04690800d26c201783a8ec7dc7e9f34b8c81/src/net/channel.rs#L284 #dev Just other bg tasks still run #dev Once line 284 is caught by its parent functions, the tasks should be stopped I guess #dev What's the point of protocol_address.rs:201 ? #dev why perform the full version exchange? monero doesn't do it #dev we can just send ping, recv pong and disconnect - lightweight minimal exchange for both parties #dev yep it's the brawndo #dev s/the/that #dev re: error #dev about protocol_address 201, we're doing what monero does, which is pinging ourselves to make sure our address is valid before broadcasting it #dev : @lunar-mining pushed 4 commits to greylists: 8ca4396548: net: call channel.stop() when we get a handshake error on ping_node #dev : @lunar-mining pushed 4 commits to greylists: b673b8c461: net: remove whitelist_downgrade() from outbound_session (monero doesn't do this) #dev : @lunar-mining pushed 4 commits to greylists: 6c0497b862: net: create perform_local_handshake which does a version exchange without adding channel to the p2p store, and use in ping_node #dev : @lunar-mining pushed 4 commits to greylists: e4a684f20e: lilith: comment out broken load_hosts code and add FIXME note #dev yeah i meant about the TODO #dev yes ik i was replying to brawndo #dev he asked about protocol_addrss.rs:201 #dev if we are doing the full version exchange, then we should keep the version numbers so asking nodes for addrs, i can apply a filter >= version #dev (or just keep the full version message) #dev isn't a version exchange dedudant since we will do one anyway on establishing a connection with an external node? #dev s/dedudant/redundant #dev might be useful in the case i just listed #dev it's not redundant since it's info before you connect to a node #dev allows you to select nodes based off policy, or apply other criteria #dev brawndo: i believe the parent function is catching the error, see https://github.com/darkrenaissance/darkfi/blob/e4a684f20ed121deb98255c2ab70416d1ef2fa6c/src/net/channel.rs#L132 #dev afk for a bit #dev hey i'm setting up a codeberg mirror for darkfi, can someone add me to the repo? i'm Gh_4321_pm #dev i mean 0f1VdLINGf@onionmail.org #dev yes, one sec #dev i need your username #dev ah it's Darkieoo #dev i can't see it #dev strange #dev : @narodnik pushed 1 commit to master: 2f80d8ad26: dao: modify proposals so they now just specify a generic call. This is done through an intermediate 'auth' contract. We provide one called DaoAuthMoneyTransfer so DAOs can transfer money around. #dev upgrayedd: can you check darkfi/src/contract/dao/src/entrypoint/exec.rs:101 #dev darkfi/src/contract/dao/src/entrypoint/exec.rs:101 #dev dao_exec_process_instruction() <- i am checking the children of DAO::exec(). Am I doing this correctly? #dev also can you advise me on darkfi/src/contract/test-harness/src/dao_exec.rs:184 #dev : @dependabot[bot] pushed 1 commit to zerocopy-0.7.32: 89407d8dd0: build(deps): bump zerocopy from 0.7.30 to 0.7.32... #dev you construct DAO::exec() and money::transfer() as siblings, but actually I want [(DAO::exec(), [DAO::auth_money_transfer(), money::transfer()])], where those 2 calls are children of DAO::exec() #dev sec #dev i looked at the darktree inside SDK but i'm a bit dense... will look tomorrow morning otherwise #dev brawndo: how can i convert pallas::Base into u64? #dev let auth_call_function_code: u64 = auth_call.function_id.into(); #dev due to the fee call, we have to introduce children indexes in the call params #dev so you dao exec must have the auth call index #dev inside exec I would do something like: #dev for auth_call in params.proposal_auth_calls { #dev if !self.children_indexes.contains(auth_call.index) -> error #dev then do as you do, with child = &calls[child_idx] #dev O_O #dev so the logic there is fine, just add the protection clause to be extra safe, to verify the params #dev how can i iterate over the children of DAO::exec() call? #dev inside the entrypoint? #dev isn't what i did correct #dev yes #dev yeah its correct #dev XD #dev just describing the context in general #dev just add the protection clause, so you ensure the index inside the call params is in bound of the calls indexes #dev ah i dont care, the wasm will fail if OOB err occurs #dev true #dev then its fine #dev so you just need to create a tx #dev where the root is the exec call #dev yep #dev and its children are the other ones #dev i made a little diagram #dev where is that? #dev you dont have to do it right now #dev darkfi/src/contract/test-harness/src/dao_exec.rs:184 #dev yy #dev so add just another tx_builder.append() #dev with the auth call #dev just keep in mind to append in order #dev and should be g2g #dev and when we get fee, it should be: tx_builder = ..., tx_builder.append(fee call leaf), tx_builder.append(auth call leaf), tx_builder.append(xfer leeaf) #dev i dont want to append though #dev and gg #dev i want (auth, xfer) as children of exec #dev tx_builder.append means append a children to the root of the transaction builder tree #dev go check the code comments lol :D #dev sorry it's embarassing, i'm really bad with this stuff #dev hahaha no worries #dev I guess the naming is missleading #dev i got 100% on my algebra exam, but failed discrete math/graph theory #dev since you assume append a new call to the tx #dev but its actually append a new call leaf to current root( aka a new child) #dev but they will all be siblings #dev (exec, transfer, auth) #dev no #dev exec is root #dev i want exec owns (transfer, auth) #dev call tree will be: Tree { call:exec, children: [transfer, auth]} #dev oh nice #dev ok that's easy then #dev just mention fee #dev since then it will be Tree{call:exec, children:[fee,transfer,auth]} #dev which will give calls order: [fee,transfer,auth,exec] #dev (since we want fee at first position) #dev I guess you want auth before transfer no? #dev or it doesn't matter? #dev yes auth before transfer #dev why is fee a child of exec? #dev it should be [fee, exec -> (auth, xfer)] #dev you have single root #dev ACTION wonders if dao transfers can pay their own fee #dev so fee must be first child of root #dev we should change it to have multiple roots #dev sibling calls #dev my initial desing was having fee as the root #dev but that puts it on last position in index #dev while after discussion with brawndo we want it to be on first #dev just make it a sibling and first #dev : @narodnik pushed 1 commit to master: 8ac99e7df3: dao: append auth xfer call #dev ^ is this correct? #dev sibling to what? #dev when i enable this line, darkfi/src/contract/dao/src/entrypoint/exec.rs:113 #dev then it fails #dev sibling to exec #dev so (fee, exec) are 2 sibling calls #dev kinda weird to make fee a child of exec #dev anyway will go to sleep, gn #dev maybe root can be empty then #dev but that breaks the logic #dev : @Dastan-glitch pushed 1 commit to master: bf65de25ad: bin/tau: remove commented/unused code #random test #random test back #random test bot brought to life here #dev : @aggstam pushed 1 commit to master: fee3385688: sdk/dark_tree: create fn to shift root in flatten vec to first position #dev free-module, brawndo: there ^, problem solved! #dev now the tree has the fee call as root, where all rest calls are its children, and when we build the flattened vec we move the root from last position to first(updating all indexes correctly) #dev so lets say we have dao call #dev the tree will look like: Tree { root_call: fee, children: [Tree{call: exec, children [auth, xfer]}]} #dev and its flatten vec will be: vec = [fee, auth, xfer, exec] #dev if lets say we want to add another call to that tx(irrelevant to exec) it will become: Tree { root_call: fee, children: [Tree{call: exec, children [auth, xfer]}, Tree{call: foo, children[bar]]} #dev with vec: [fee, auth, xfer, exec, bar, foo] #dev so in code it will look like: #dev tx_builder = TransactionBuilder::new(FeeCall::Default, vec![]); #dev tx_builder.append(DaoExecCall) #dev tx_builder.append(FooCall) #dev let vec = tx_builder.build() #dev let actual_fee_call = calculate_fee(vec[1..]) #dev vec[0].data = actual_fee_call #dev something along those lines #dev IMHO having the fee call as root makes the most sense tree wise, as all other calls are its true children calls #dev since all tx calls are "bounded" by a single fee call, so that fee call should be their parent #dev that is really weird #dev the tree captures calling semantics, idk why we're inserting fee into a call graph, it should be a sibling #dev btw upgrayedd, brawndo: i think fee should NOT be restricted on where it goes in a tx, it should occur anywhere #dev 2 examples why: #dev 1. DAO proposal to pay the fee and send money somewhere, then DAO calls money::fee() to pay the fee .etc #dev 2. i have X token, swap some amount to DRK and pay a fee (within the same tx) #dev both of these would increase usability quite a bit, and we get them just by allowing fee calls anywhere in the callgraph to occur #dev upgrayedd: another reason we need multiple roots: atomic txs, i might want to make 2 calls that occur atomically but are not related #dev (for example send money and do a swap) #dev #1 means then you can execute DAO proposals without needing some DRK in your wallet ;) #dev in fact i would just put a field in MoneyTransferParams called fee: u64, and add up all those values in a tx... i'm not sure why a separate call is needed #dev it would be cool if i had a tx but no DRK to pay the fee, and could swap some WHACKD for DRK, pay the fee, and do the other stuff - all atomically #dev otherwise it's more like: swap DRK for WHACKD ... wait ... now do main tx #dev free-module: the call tree just defines the order of execution in relationship with another call #dev it's more than that, it's used inside the wasm logic #dev a call being the child of another call doesn't mean that they must be related, just that the child must be executed before marent #dev it doesn't have to be used inside wasm tho #dev fee is not a child of DAO::exec #dev is it a sibling #dev its its parent #dev *it is #dev no it's not #dev DAO::exec is a separate call #dev read again what I wrote #dev fee is a single call in a tx #dev therefore parent to all #dev that doesn't make sense either #dev why would fee call DAO::exec? #dev brah #dev tree is the relationship order between calls, that doesn't mean said calls must use those intexes internaly #dev you can have 2 complete separated calls being simplings, and none of them use parent data #dev sure, just saying i don't think it makes sense #dev when a dev sees the callgraph, it would be like "why is fee making the calls" #dev 1) What #dev noone making any calls, the graph defines the call order/relationships #dev fee being the root doesn't mean that fee calls the other stuff #dev it means that the fee call depends on everything else inside the tx #dev which is true #dev so it happens last? #dev in normal dfs-post order yeah #dev just make it a sibling #dev sibling under what root? #dev it's easier to understand #dev its not a sibling #dev there is no single root call #dev bruh don't think of it as calls #dev its a tree #dev tree always have a root #dev yeah you can have multiple roots then #dev the fact that we are using the tree to represent calls doent change its meaning #dev you don't need multiple roots #dev root call in dev words is not the same as tree root obviously #dev I'm taking tree root, you are talking root call XD #dev what if now DAO::exec() calls fee? #dev why does fee have to be the root? #dev because it bounds everything else in the tx calls vec #dev also every tx must have a fee call, so it can be the root where everything else hangs off #dev it *can* be, but it doesn't have to be #dev single tree is far simpler that having multiple ones #dev why introduce extra complexity in the tree impl? #dev tree is for ordering and providing indexing for related calls #dev i'll explain what i mean: #dev I make a DAO proposal to do these calls 1) swap WHACKD for DRK 2) pay the tx fee 3) transfer WHACKD to you #dev then fee *must* be a child of DAO::exec, it cannot be the root #dev the call order of that case would be: [fee(payed by the dao), swap, transfer] #dev correct? #dev yes #dev sorry no #dev [swap, fee, transfer, dao::exec] #dev (after flatten) #dev fee must always be first #dev why? #dev as brawndo explained, we need to first check the fee call is valid and suffice for rest calls #dev so we put it in first position for simplicity #dev but if it is the root, then it is last #dev look what my latest push does #dev it introduces a shift mechanism #dev so we put root at first position #dev updating all indexing to shifted values #dev why not allow fee in any position? #dev then DAOs can pay fees #dev it still can pay the fee #dev how? #dev remember we need to swap WHACKD for DRK *then* pay the fee #dev why? the fee paying call is not related to the swap #dev yes it is, the DAO has no DRK to pay for the fee #dev the swap must complete first, then it has DRK to pay fees #dev also fee is a child of exec(), not the root #dev wait wait #dev what parties are involved in the swap? #dev DAO: swaps WHACKD for DRK with a counterparty (Bob) #dev then fee should have been already deducted from swapped drk #dev example we want to swap 100 WHACKD for 100 DRK #dev since we don't have any DRK, that would mean we get a fee call for 1 DRK, and a swap call for 100WHACKED for 99DRK #dev drk is from bob, so bob "pays" the fee #dev and swaps the rest agreed amount #dev does bob pay for the other calls in the tx? #dev you shouldn't have any other calls in that tx #dev why? #dev if we disable these limitations (which don't do anything), then we gain all this functionality #dev i don't recall right now weither or not fee is multiple inputs call #dev if it is, each other call simply adds its fee input to the fee call #dev so its still a single fee call, containing all the inputs for rest calls #dev without caring who payed what #dev the DAO cannot make a fee call unless it is a child of DAO::exec #dev so then DAO::exec would be the root #dev again that call fee has been payed for #dev we are talking different calls #dev sure, i just think restricting fees position and only allowing a single tree root (which is fee) is a bad idea #dev the next calls in that atomic tx consume any of the transfered drk? #dev Vec -> flatten each tree -> join the lists together #dev ^ this should be easy #dev no they don't use any DRK #dev the whole point of the swap is just to pay the fee #dev I'm not saying its not easy, it just introduces extra complexity for not real reason, other than naming schemantics #dev wen mainnet #dev soon, send me your bitcoins #dev free-module: it pays the fee, whats the issue then? #dev the DAO cannot make fee calls unless they are a child of DAO::exec #dev fee cannot call DAO::exec #dev fee calls nothing and noone calls fee #dev fee *must* be a child of DAO::exec #dev tree relanionships have nothing to do with who calls what #dev why fee must be a child of dao::exec? #dev any call made by the DAO must be a child of dao::exec #dev dao::exec does all the checks #dev fee is not a call of the dao #dev its a transaction call #dev every tx has a single fee call #dev so then we cannot use DAO treasury to pay for fees #dev just because of an artificial limitation #dev dao::exec can check fee validity #dev calls[self.parent_index] #dev DAO proposals encode multiple calls #dev all those calls are children of DAO::exec #dev yes end? #dev fee must be a child of DAO::exec, so the DAO can pay for fees using its treasury #dev fee call is omnipresent XD #dev it doesn't have to be a child #dev yo wtf #dev again you are using dev fn calls schemantics #dev Fees shouldn't use inputs with nonzero spend hooks #dev pls stop these ideas #dev why? #dev XD #dev why not put a field in money::transfer() called fee: u64? #dev Because the fee call should be completely separate of anything else and not introduce child calls of its own #dev well upgrayedd is saying *everything* is a child of fee #dev By allowing spend hooks like that you're now introducing a completely new attack vector #dev (it is the root) #dev IN THE TREE #dev jfc #dev The fee call should be as minimal as possible, should be the first call executed in any tx, and should not provide a sandbox-escape-way for any other thing #dev e.g. running spend hooks #dev i think the attack vector is the same as money::transfer() #dev I think we have more pressing work to do #dev i'm not even sure why there's a separate fee call, why doesn't MoneyTransferParams have a field called fee: u64 #dev MoneyTransfer does arbitrary tokens #dev Fee enforces native token #dev i don't get this weird logic where the root of the tree (which should be last), suddenly becomes first #dev wat #dev i don't understand why we cannot have sibling calls, everything must have a single root call #dev i don't know why fee must be the first call, and why the DAO cannot make fee calls to pay for fees using its own treasury #dev these all seem like artificial limitations #dev (so it will be required to have DRK in your wallet to execute DAO proposals) #dev These are security and simplicity limitations. I don't believe the DAO should use its own treasury for this since it can introduce various attacks, e.g. draining the DAO using fee calls. #dev that's for the DAO impl to decide #dev Yes it will be required to have DRK in the wallet. #dev 1. root shift: thats just since it makes much more sense(at least to me) to use fee call as the tree root, since its always present and single, so we shift it to first poistion #dev if that's possible then it's a bad impl of the DAO logic #dev 2. you can have sibling calls, but thats not a single tree, you are saying to introduce 1 tree per call execution, doable, noone ever said we cannot have it, its just more complex #dev 3. fee must be the first call as it bounds aeverything else #dev Why do we have tx fees at all? #dev Maybe I should delete that code #dev DAO can only make a single call per proposal exactly matching the format of the proposal #dev the proposal would include the fee paying calls #dev so why not allow the DAO to pay its own fees? #dev it's not like anyone can arbitrarily call the DAO to make fee calls, it doesn't work that way #dev brawndo: i would delete the fee call, and just have MoneyTransferParams with a field called fee: u64, then this fee is accepted if the tx token_id has a blind of 0, and matches the DRK token_id #dev lol #dev No #dev why? #dev Because I do not think that such function obfuscation should be happening in the codebase. There should be a clear, separate namespace for any functionality a contract provides. #dev making fee a separate call from money::transfer() doesn't bring any security benefit. if money::transfer() is broken, it's the end game #dev The transaction fee payment is not a money::transfer at all. #dev The transaction fee payment should be as minimal as possible and induce the minimum gas usage. #dev It should not be providing a method to call other contracts. This should be done through proper calls that do have the possibility to run spend hooks. #dev ok well why not allow money::transfer() to also pay fees? #dev that way the DAO could pay for fees #dev By keeping the fee call simple and minimal, it forces users to write proper and clean code. #dev Not allowing money::transfer() to pay fees because money::fee() should be used to pay for fees, as it is intended to by its function name. #dev you're essentially saying that no contract can ever pay its own fee, users must pay fees #dev Yes users should pay tx fees. #dev why? #dev why not allow contracts to also pay fees? #dev Because you're introducing the attack vector of allowing arbitrary calls to happen in the fee call. In my opinion, the inputs for the fee payment should be clean of any spend hooks. #dev Also I don't know exactly, but my intuition tells me that such a thing is insecure. #dev i mean keeping fee separate has reasonable arguments #dev i could see the benefit of a fast simple logic #dev If such things were safe and secure, I think most other chains would be doing such things, whereas I do not think they do. #dev but the spend_hook simply says the following call must occur, it says nothing about the fee itself #dev The fee payment also does computing, it is not a free call #dev It should be as small as possible and not induce arbitrary computing which slows down any node computation bandwidth. #dev It is literally a call that has to be in _every single transaction_ #dev No matter what the transaction does. #dev But you know, if you want to change up the code, you should #dev I don't see the point of all this anymore, it just feels like wasting time on discussions #dev Instead I could be working #dev It's literally been an hour #dev well i'm bumping up against this now because i'm working with the tree #dev the tree has nothing to do with this #dev you problem is wanting dao to pay its own fee #dev tree or not, same discussion would have happened #dev the problem is that DAO::exec owns [auth, xfer] #dev but you see then it must be [fee, auth, xfer] #dev so then now it was changed so fee is the root of the tree #dev i was saying it should be a sibling, not a root #dev and by having it as a root and restricting its position, we cannot have it as a child of exec #dev fee shouldn't be a child of anything #dev https://www.youtube.com/watch?v=ZXsQAXx_ao0 #dev it was always going to [fee, ...] #dev instead of doing the weird root thing, why not just enable siblings, and put fee as the first sibling? #dev you mean different trees? #dev yes and join the flattened lists #dev yeah sure we can do that #dev I'm just arguing that it was extra complexity #dev since the fee tree is a single root #dev >tfw paying a fee needs a valid dao proposal #dev so why not make it the total root of the tree? #dev because the root should go last, and if a dev is looking at the tree, he will need to know the extra detail of: #dev "oh yeah the root actually goes first, there is special logic that does that" #dev (we will show this in the tooling, so it will be unexpected) #dev It's not a Merkle tree lol #dev brawndo │ >tfw paying a fee needs a valid dao proposal #dev what's wrong with this? seems quite logical #dev Don't you need to do a DAO::exec() to spend the DAO treasury? #dev yes #dev And doesn't DAO::exec() need a proposal? #dev yes #dev Therefore you need to make a proposal, vote on it, execute it - in order to pay a tx fee. #dev - pay from the DAO treasury #dev you're correct, the user will pay for propose and fee #dev *and vote #dev So you're paying the fee to create a proposal as a user, then you're paying a fee to vote, then you're waiting on a proposal to finish #dev And then the DAO is (potentially) able to pay a fee for a tx #dev Sounds awfully complex compared to just having users pay fees #dev Expensive too #dev idk, i think it would be better if contracts had the ability to pay fees, for example in a single tx, i could do: [swap, fee, X] #dev rather than swap ... (waiting) ... [fee, X] #dev we reduce the ability for people to trade and get in to opportunities quickly #dev Sure, implement it #dev I'm not going to #dev the only reason I don't is because I don't want to step on your toes #dev and ofc i won't go do random things without both of yours consent #dev but if it's a matter of you want me to, then i'll gladly implement fee logic or whatever you ask of me #dev You have my consent #dev I dissagree with contracts paying fees... #dev users should #dev ok I won't argue this further then... #dev also contract arbitarally creating fee calls, it should only be a single one in each tx #dev the tree stuff yeah I will revisit the logic to make it more clear #dev but again its just positional ordering, not a who calls what tree #dev the tree is not executed by the node, purely by the wallet #dev so it's fine to be a little more expensive #dev yeah I will make it so tx use a forest, not a single tree #dev so your first tree would be the fee call(standalone root, no children) and then each distinct call be a single tree #dev where root is the main contract call, and children all dependency calls #dev so in the dao exec it would be like: DarkForest{ trees: [DarkTree{call: fee, children: []}, DarkTree{call: dao::exec, children: [auth, xfer]}] #dev gm #dev correct, thanks a lot #dev with flattened vec: [fee, auth, xfer, exec] #dev ++ #dev : @narodnik pushed 1 commit to master: 4ae9b2607f: dao: fix broken unit test #dev upgrayedd: the shifted root stuff is messing with my unit test, i'm trying to build the tree... if you're seeing this, i will revert that commit #dev : @narodnik pushed 2 commits to master: 79d43e61af: Revert "sdk/dark_tree: create fn to shift root in flatten vec to first position"... #dev : @narodnik pushed 2 commits to master: 46a89b1b09: dao test: manually build the call tree #dev ^ #random test #random test back #dev brawndo: how can I convert pallas::Base to u64? I looked in the docs and tried .into() #dev let auth_call_function_code: u64 = auth_call.function_id.into(); #dev https://docs.rs/pasta_curves/latest/pasta_curves/struct.Fp.html #dev actually maybe i will just store the u8, and convert to pallas::Base when I need it, rather than storing pallas::Base #dev Hey yeah you should do the latter #dev makes sense thx #dev : @narodnik pushed 1 commit to master: 5341582ccd: dao::exec(): check the auth children are set #random web3 privacy ppl doing a survey on privacy projects, asking for input https://mirror.xyz/0x0f1F3DAf416B74DB3DE55Eb4D7513a80F4841073/u-K59tVbfnFB9M-TTSpTIf7ef3zlsg9FXklDCRwAr70 #random !hackersays #random “Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to see it as a soap bubble?” — Alan J. Perlis 15[Quote #1124a2] #dev brawndo: shouldn't this return duplicate dbhandle if it's already intialized, instead of returning an error #dev If a db is already opened, it is an error to open it again #dev lol i didn't add the link https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/import/db.rs#L154 :) #dev : @narodnik pushed 1 commit to master: a1117f7a0f: dao::auth_xfer(): check sibling is money::xfer() #dev biab #dev brawndo: https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/vm_runtime.rs#L558 first zero can still be part of other payload, not necessary, and not possible, no? #dev Yeah I think there I meant to find the first unallocated part of memory #dev In WASM memory is linear #dev Currently this is just used on initialization so no issues happened, but I dunno if we'll be more extravagant later on #dev i think there is no way to tell, no? memory view only return page size, doesn't keep a counter, or allocated length. #dev I'm not sure #dev https://docs.rs/wasmer/latest/wasmer/struct.MemoryView.html #dev i checked wasmer doc #dev i thought you had some idea in mind #dev i think it's unnecessary #dev Would need some testing #dev Okay #dev Yeah #dev : @ertosns pushed 4 commits to master: 7240222b21: [runtime/memory] test write_slice #dev : @ertosns pushed 4 commits to master: a4666d2549: [runtime/import/merkle] check if buffer is fully read #dev : @ertosns pushed 4 commits to master: 27f123da5a: [runtime/import/merkle] replace assertion by returning an error #dev : @ertosns pushed 4 commits to master: c83ad39e2b: [runtime/vm_runtime] comment copy_to_memory #dev free-module: thanks for reverting, was gonna do it anyway XD #dev whew! ;) #dev will do the forrest stuff, need some time to unpack etc etc #dev nw, this is good for now, i have all i need #dev well its not for dao lol, but for fee to be in first pos #dev yeah we don't need the fee in the unit tests #dev ++ #dev : @narodnik pushed 1 commit to master: ff76f6e834: auth_xfer: grab data from DAO::exec auth spec, do some verification on sibling call. #dev : @narodnik pushed 1 commit to master: 87459ac644: prettify ContractCall and Transaction debug output #markets https://thedefiant.io/sec-fined-barnbridge-dao-founders-for-offering-unregistered-securities #markets we need dark daos more than ever #markets its being heavily improved now #dev : @lunar-mining pushed 4 commits to greylists: d2dcbddbc7: net: and anchorlist and minimal utilities. also clarify hosts specific TODOs. #dev : @lunar-mining pushed 4 commits to greylists: 58c8f9124a: net: check whether host is in the peerlist before adding to greylist. also make additional anchorlist utils.... #dev : @lunar-mining pushed 4 commits to greylists: 81177ecdf9: net: add peer to the anchorlist with an updated last_seen when we call p2p.store() on a connected channel #dev : @lunar-mining pushed 4 commits to greylists: ee32865786: net: replace outbound connection loop with monero grey/white/anchor connection_maker()... #dev AFK #markets funny how they go against small DAOs that cant fight back #markets kinda gross they want after that video DAO guys #markets (forgot their name) #dev : @aggstam pushed 2 commits to master: af732f588f: sdk/dark_tree: created DarkForest combining multiple DarkTrees #dev free-module, ertosns: yo please run make clippy on repo root and fix stuff #dev free-module: dark forest added, doing exactly what we discussed in the morning, cheers #markets LBRY? #markets yes! those guys ty ser #markets they're pretty cool guys #dev greets i'm moving a bunch of stuff around, rewriting .etc, will clean up once done #dev ty ser #dev (nearly done) #dev no worries/rush re clippy, just mentioning to not be forgotten :D #dev yessir, won't forget #dev gonna bounce, cu #dev cya l8r #dev : @narodnik pushed 1 commit to master: 3a2c4e1799: auth_xfer: check output coins match proposal #dev : @narodnik pushed 1 commit to master: b8fa27c988: mv entrypoint.rs entrypoint/mod.rs #dev : @narodnik pushed 1 commit to master: f4826555f6: auth_xfer: add zk proof (incomplete) #random test #random test back #random !hackersays #random “Artificial Intelligence is no match for natural stupidity.” — Anonymous 15[Quote #5b45e5] #dev : @lunar-mining pushed 1 commit to greylists: fcf53ebd28: net: cleanup connect loop code reuse by implement connect_slot() method. also prevent infinite loop by doing peer discovery when the hostlist is empty.... #dev : @lunar-mining pushed 1 commit to greylists: be5d1f2dee: net: prevent inbound session channels from being stored in the anchorlist #dev biab #dev : @narodnik pushed 1 commit to master: 7e9bd2946e: finish dao rewrite #dev ^ woo #dev free-module: noice will check it now #dev doing the clippy stuff now #dev don't forget to update the vks/pks hash #dev yes ty #dev free-module: all good with the tree stuff? #dev yep perfect #dev brawndo: yo what was the trick to completely nuke cargo caches #dev rm -rf ~/.cargo ? #dev : @narodnik pushed 1 commit to master: c3587c0c6f: general cleanup, clippy & update VKS/PKS in test-harness #dev : @narodnik pushed 1 commit to master: 6ba9cf2e27: remove trailing whitespace from ZK files #philosophy https://twitter.com/0xMert_/status/1737479939622875433/photo/2 #philosophy people pitching public ledgers as a feature #philosophy "Cash is untraceable, blockchains are public ledgers" #dev b #philosophy it's cool seeing that feature to challenge fake news being weaponised #philosophy do u mean community comments #philosophy i think it's a good addition to twitter #philosophy yeah lol but it was added for fact checking #dev upgrayedd: rm -rf ~/.cargo/registry #dev nuking the whole ./cargo would remove your rustup binaries #dev btw I'm setting up github <--> codeberg mirror #dev ah nice good idea ty #dev dasman: nice thanks #philosophy "fact checking" is just soft censorship & narrative enforcement #philosophy unfortunately. wish it were actually true but the whole industry of "fact checking researchers" is just BS #dev : @lunar-mining pushed 1 commit to greylists: 5c0707992a: net: improve outbound_session connection loop logic. #dev : @Dastan-glitch pushed 1 commit to master: e85a49f0d4: add codeberg mirroring CI #dev https://codeberg.org/Xirscz7M2t/darkfi #dev figured i would ask in here but unsure if it is best place to inquire - was thinking that it might be good to work on creating a nice, streamlined visual branding/idenity package for darkfi. standardized stuff like use of fonts, colors, text setings, spacing rules, etc. would be defined, would create a bunch of frontend UI components, that sort of thing. any thoughts? #philosophy what do you think of the darkfi telegram discussion about having moderation? #philosophy quite a lot of people saying having some gentle touch moderation would be beneficial... but it just seems so against the ethos of the project if we start doing that #philosophy one of the guys mentioned having people reporting spam and if it happens enough, then the bot will censor them #philosophy there could be variants of this like giving them an algebra puzzle to solve, or cooling off time idk #philosophy just so meh having to censor freedom of speech... for a free speech platform #philosophy what are all of your's thoughts? #dev is that your background? there's one artist doing UI stuff now, can share you some of the mockups #philosophy although a good counter is that telegram doesnt filter people you've blocked in groups #philosophy thats messed up #dev https://agorism.dev/uploads/tor-test.py #dev if anyway wants to test tor (took me ages to make this lol) #dev you need pysocks library #random test #random test back #dev gm hackors #random !hackersays #random “If you can't explain something to a six-year-old, you really don't understand it yourself.” — Albert Einstein 15[Quote #b96f91] #dev : @lunar-mining pushed 2 commits to greylists: c40ce5d335: net: move host selection logic back into hosts/store to avoid insane nesting in outbound session loop #dev : @lunar-mining pushed 2 commits to greylists: ee401e1d2d: net: add save_hosts() and load_hosts() methods and invoke on greylist refinery start and stop #philosophy https://odysee.com/@SurvivetheJive:c/odin-rituals-in-the-19th-century:2 #philosophy turns out bringing a tree into your house is a pagan worship #philosophy did u know cromwell banned xmas for being too pagan #philosophy https://www.nationalgeographic.com/premium/article/christmas-ban-england-puritans-cromwell #philosophy hanging stuff on the tree = hanging sacrifices like criminals being hung #dev : @Dastan-glitch pushed 1 commit to master: bf9eae8177: update target repo url in mirror CI #dev https://codeberg.org/darkrenaissance/darkfi #dev ok trying it out #dev free-module: just saw you build Transaction full manually in test-harnes/dao_exec, noice #dev fixing the tests #dev although dao test fail with invalid zk proof so something not right there #dev consensus and money tests fully pass #dev the dao test works for me, retrying now #dev : @aggstam pushed 1 commit to master: cf1ce28ab8: contract/test-harness: consensus_stake and consensus_unstake use TransactionBuilder properly, updated vks/pks hashes #dev check this commit #dev probably using different vks/pks #dev as I had to update the hashes #dev dao test passes for me #dev i already updated the hashes #dev c3587c0c6fa5879f9b27041ceedfff4ac8550a8b #dev maybe try deleting the ZK .bin files? #dev current code produces diff one #dev perhaps something change #dev can you verify? #dev I deleted my .bins files to check if hashes are correct #dev and got diff ones #dev 14:31:54 [DEBUG] (2) darkfi_contract_test_harness::vks: Known VKS hash: da690bdbf157a3e30abc173c69b74400bb032daf0ce6c0cab4c567fe9f0b361e #dev 14:31:54 [DEBUG] (2) darkfi_contract_test_harness::vks: Found VKS hash: da690bdbf157a3e30abc173c69b74400bb032daf0ce6c0cab4c567fe9f0b361e #dev 14:31:55 [DEBUG] (2) darkfi_contract_test_harness::vks: Known PKS hash: a1c446da1c4df1ef26ff3abc41fe010a90452d9063dbf87789a20cdb900b487a #dev 14:31:55 [DEBUG] (2) darkfi_contract_test_harness::vks: Found PKS hash: a1c446da1c4df1ef26ff3abc41fe010a90452d9063dbf87789a20cdb900b487a #dev git pull #dev rm them #dev ok #dev and then check again #dev those arethe previous ones yes #dev now i get this #dev 14:33:25 [DEBUG] (2) darkfi_contract_test_harness::vks: Known VKS hash: 3f47adca36cd4e17c625d838425793ad7d9ac4ddcc3ed6739add3adb4dfbab8c #dev dasman: can you check the failling codeberg pipeline? #dev 14:33:25 [DEBUG] (2) darkfi_contract_test_harness::vks: Found VKS hash: da690bdbf157a3e30abc173c69b74400bb032daf0ce6c0cab4c567fe9f0b361e #dev 14:33:26 [DEBUG] (2) darkfi_contract_test_harness::vks: Known PKS hash: 0d3fef220868380aeb9146a9530bd4e9cbe3b7c1d05b20bfe5c8335741367bc8 #dev 14:33:26 [DEBUG] (2) darkfi_contract_test_harness::vks: Found PKS hash: a1c446da1c4df1ef26ff3abc41fe010a90452d9063dbf87789a20cdb900b487a #dev but i'm going to make clean, and delete all bins #dev ++ #dev removing the whitespaces should made the hashes change #dev so probably didn't checked after that push #dev it should recompile cos make only checks timestamps #dev iirc vks and pks hashes only recompile if you remove them #dev 14:37:17 [DEBUG] (2) darkfi_contract_test_harness::vks: vks.bin da690bdbf157a3e30abc173c69b74400bb032daf0ce6c0cab4c567fe9f0b361e #dev 14:37:19 [DEBUG] (2) darkfi_contract_test_harness::vks: pks.bin a1c446da1c4df1ef26ff3abc41fe010a90452d9063dbf87789a20cdb900b487a #dev same hashes #dev sec let me check #dev perhaps I missed something #dev ++ #dev i did make clean, deleted target/ and vks/pks.bin #dev (make clean also removed ZK bins) #dev : @aggstam pushed 1 commit to master: f44019495b: contract/test-harness: reverted vks/pks hashes #dev free-module: yeah I forgot to clean something #dev those hashes arethe correct ones #dev nice ty #philosophy re: Telegram moderation: good idea to have anti-bot/spam tool like requiring proof of human/captcha-type checks that don't actually prevent speech... but IMO dangerous to free speech to start actually globally blocking human speech. If people don't like a particular user's speech, they can choose to mute/block that user. For instance there is someone on there who takes every chance to monologue #philosophy about the evils of a particular religion, which can be offensive to some. For those people, personally muting/blocking that user is more in line with anarchist principles rather than prventing him being heard by everyone simply because some/many may find it distasteful #philosophy Also global bans/blocks are illogical. If I don't like someone's speech, I can personally mute/block them and it solves my problem immediately. Global bans/blocks not only solve my personal problem, but they make choices for the whole group, many of whom may not agree with my position at all. It is inherently authoritarian #dev it seems codeberg and github are out of sync #dev https://github.com/darkrenaissance/darkfi #dev https://codeberg.org/darkrenaissance/darkfi #dev dasman: ^ #philosophy unfortunately on telegram you can't #philosophy blocking someone doesn't mute them in the channel #philosophy that's the main controversy #dev checking rn, it seems to be a permission issue #philosophy sounds like a new feature is needed in telegram then. if i block a user, i should just see a chat from them appear as [this post is from a blocked user] #philosophy after a quick skim in their gh they already have bugs like this one #philosophy I{ totally agree with hamletmachine #philosophy we are free speech absolutists, we don't censor anything, and fuck anyone that wants to #philosophy to me this is a specific app/client issue, not how we should run the group #philosophy +1000000 #philosophy https://github.com/telegramdesktop/tdesktop/issues/26940 #philosophy relevant issue #philosophy perhaps after holiday break I will dive into their repo to "fix" this #philosophy great thanks both for the opinions, makes sense #dev so codeberg -> github is force-push #dev i'd say just enable force push #dev if it's an issue, we can disable it, and encourage everyone to use codeberg #dev : @Dastan-glitch pushed 1 commit to master: 59079c7b86: remove blank newline from README #dev so I enabled force push, and it'll work but the name is different, cuz it needed an authorization #dev ah actually naming is right, this ^ is probably a bot thing #dev ok testing #dev try both ways #dev it didn't work #dev Error: Rpc failed #dev : @Dastan-glitch pushed 1 commit to master: c26d340c67: add tutorial on setting up codeberg + tor for darkfi repo #dev we should wait a few minutes I think, their minimum interval is 10 mins #dev idk #dev Also, this is gone: : @aggstam pushed 1 commit to master: f44019495b: contract/test-harness: reverted vks/pks hashes #dev :) #dev aha ic ty #dev tbh I'm concerned about aggstam's commit disappearing #dev i still see it #dev cf1ce2 #dev talking about this: f44019495b #dev : @aggstam pushed 1 commit to master: f44019495b: contract/test-harness: reverted vks/pks hashes #dev oh i dont see that either #dev : @Dastan-glitch pushed 1 commit to master: 47f5ac8bb3: change clownflare owned icanhazip.com to myip.wtf #philosophy good convos in telegram #dev !topic remove memo field from money::transfer() note OR restrict it to N*32 + 2 bytes #dev Added topic: remove memo field from money::transfer() note OR restrict it to N*32 + 2 bytes (by free-module) #dev !topic func_id global map + deploy metadata artifact #dev Added topic: func_id global map + deploy metadata artifact (by free-module) #dev https://zips.z.cash/protocol/nu5.pdf#saplingandorchardinband #dev page 62, "New note commitment integrity" #dev zcash derives the serial from the previous nullifier #dev well not derive, literally just ρⁿᵉʷ = nfᵒˡᵈ #dev sapling did it differently: they include both the coin and the merkle path in the nullifier #dev well the position #dev !topic serial derivation #dev Added topic: serial derivation (by free-module) #dev !topic blockchain consensus forks bug due to missing ACL perms in runtime/util funcs #dev Added topic: blockchain consensus forks bug due to missing ACL perms in runtime/util funcs (by free-module) #dev !list #dev Topics: #dev 1. remove memo field from money::transfer() note OR restrict it to N*32 + 2 bytes (by free-module) #dev 2. func_id global map + deploy metadata artifact (by free-module) #dev 3. serial derivation (by free-module) #dev 4. blockchain consensus forks bug due to missing ACL perms in runtime/util funcs (by free-module) #dev !deltopic 4 #dev Removed topic 4 #dev upgrayedd: in bitcoin, you know the block headers contain a self reported timestamp, which is allowed a certain amount of inaccuracy +/- #dev whereas i don't see that in our code, and instead it seems blockchain time is calculated like this: #dev self.genesis_ts.0 + self.current_slot() * self.slot_time #dev isn't that going to drift over time? #dev i'm not sure a random walk can be trusted to stay at 0 #dev ok gn #dev free-module: pos assumes time corectness so no need to "verify" it. it pow we have https://github.com/darkrenaissance/darkfi/blob/master/src/validator/pow.rs#L209-L217 so we are doing pretty much the same thing as btc accomodating for inacuracy #dev ah that's good. So can I use get_blockchain_time(), right? I'm guessing the function wasn't yet changed, but will be updated soon. #random test #random test back #random there's quite a lot of setup for new weechat installs to be usable #random !hackersays #random “A year spent in artificial intelligence is enough to make one believe in God.” — Alan J. Perlis 15[Quote #e47312] #dev : @Dastan-glitch pushed 1 commit to master: 62df0d2c41: money::xfer(): remove wrong TODO and expand surrounding comment to add context #dev cosmos puts the vote start/end time inside the proposal #dev so i will put the duration of a proposal inside each proposal rather than a global DAO param #dev (lmk if that sounds fine or not) #dev ++, make sense. #dev brawndo: hey, so some quick questions #dev Hey #dev i want to implement verifiable encryption for money::transfer() notes #dev there's kind of an attack for the DAO where you can create an unspendable coin #dev aha yeah #dev there is a memo field which is variable length #dev should we remove it or make it pallas::Base? #dev or 2 pallas::base .etc #dev We make use of the memo field arbitrarily, but now there is only one usecase - the atomic swaps #dev could it be a URI maybe where to find the data? #dev For example we keep a secret key related to the swap in the memo field #dev so could it be a single pallas::Base value? #dev But we don't use that field anywhere else #dev Yeah it can be a pallas::Base indeed #dev Dunno if also having 2 is a good idea, maybe for some future usecase #dev Or #dev Just leave the memo field outside of zk #dev i think if it's >2 then it should be a DHT URI #dev aha yeah good idea! #dev As arbitrary data that can be included in a note #dev But not verifiable #dev btw i need to change the symmetric algo #dev Which one? #dev cos i'm not sure the AED thing is workable inside ZK (can look), my idea is just adding blinding factors to each value #dev Ah did you see sdk/src/crypto/note.rs ElGamalEncryptedNode? #dev yep #dev Does that not work? #dev sorry i mean chachapoly #dev i can look how it works, but that is probably a byte stream cipher #dev It's probably not usable in ZK #dev whereas we now have an array of [pallas::Base] values, so we can use the diffie hellman seed to derive a series of blinding factors #dev then apply those to the value array #dev v₁ + b₁, …, vₙ + bₙ #dev The thing also is you won't be able to commit to scalar field values #dev (e.g. value blind) #dev where bᵢ are the blinding factors derived from the seed #dev Unless we convert them mod p instead of mod q #dev ah ffs #dev ok i will look more at that #dev But I do not know if that is safe even #dev it is safe if within range #dev There's probably reasons that the scalar field is used instead of the base field for these kind of things #dev scalar field is used because of EC arithmetic inside the circuit (can go into detail another time) #dev I mean for pedersen commitments for example #dev ah you think it doesn't matter if we do the mod_r_p trick? #dev aha ic #dev I'm not sure #dev would need to think about it since we decrease the range of the field #dev This is something we can ask an expert #dev but should be ok i reckon #dev i'll look at this more carefully #dev ok then next thing is about the serial derivation #dev https://zips.z.cash/protocol/nu5.pdf#saplingandorchardinband #dev page 62, "New note commitment integrity" #dev zcash grabs the serial from the previous nullifier, literally just ρⁿᵉʷ = nfᵒˡᵈ #dev sapling did it differently: they include both the coin and the merkle position in the nullifier #dev (coin being spent) #dev so there is still a random value for the serial, but we change the nullifier #dev the nullifier includes some extra info like the coin being spent, so each nullifier is unique per coin #dev since you can create duplicate coins, they also include the position of the coin within the tree (which we have in the burn proof) #dev Uint32 leaf_pos, #dev this one #dev aha #dev probably pos is sufficient by itself, but adding the coin is also extra safe... it's a small change to burn_v1.zk #dev I think it is a good idea to do #dev ok i can fix this #dev It also saves us from spammy unspendable coins #dev lastly is about the funcid in the db #dev !list #dev Topics: #dev 1. remove memo field from money::transfer() note OR restrict it to N*32 + 2 bytes (by free-module) #dev 2. func_id global map + deploy metadata artifact (by free-module) #dev 3. serial derivation (by free-module) #dev Thanks a lot #dev so without this change, we have to modify the coins to include a new param which is function_code #dev i guess cos zkas doesn't have types, i'm using (contract_id, function_code) everywhere #dev or we could build some metadata with the deploy that includes the number of functions inside a wasm #dev then it builds the unique addrs for them #dev should i add this? or what's the best approach? #dev Can we defer this one for later? I need some time to think about it. Perhaps it is possible to generate special entrypoints at deploy-time and then the wasm runtime could be very explicit in what it is calling. #dev Then you wouldn't be using the `match func_id` statement to branch into functions #dev But rather the runtime would know what to run #dev ok sure, but we need to remember that the spend_hook in coins right now is vulnerable #dev because the function_code is not being checked #dev Do you understand my idea here? #dev yeah that would be cool, but i think the exporting zk bins is kinda weird right now #dev it bloats the size of the wasm, maybe nbd but maybe things should be bundled outside the wasm too #dev like metadata (author, version, idk) #dev anyway all looks good tyty #dev The size of the wasm does not matter at all #dev does it not affect the loading or running time at all? #dev Bundling zk bins inside wasm I think is good because then we make that the only way to put circuits on chain #dev And we can use special functions (like zkas_db_set) to verify them and create verifying keys #dev There'd have to be a lot more machinery if we somehow did this outside #dev ok yeah, also we need to do more benchmarking of wasm stuff in general... i've been meaning to ask upgrayedd how to run wasm funcs independently for benchmarks #dev cos right now a lot of "wisdom" is just vodoo #dev :D #dev 11:34 Can we defer this one for later? I need some time to think about it. Perhaps it is possible to generate special entrypoints at deploy-time and then the wasm runtime could be very explicit in what it is calling. #dev lol ok tyty #dev I think we should look into this #dev To generate some kind of table on deploy time #dev hmm i'm not sure it's possible since the entrypoints are encoded in a section of the wasm #dev the exports #dev Yeah we could have a big macro #dev https://agorism.dev/uploads/foo.wat #dev (see the bottom) #dev Like now, we do the 4 sections #dev But we can expand that perhaps #dev Needs some thought, but I wouldn't rush the func_id stuff just yet #dev well i imagine we will build some utility or widget on top for users #dev right now everything is quite low level #dev i'm using (contract_id, function_code) everywhere #dev ^ But doing this seems relatively fine too, but it is a bit loose #dev yeah it's prone to error #dev Loose in the sense of re-deploying a contract, it can change the function #dev well that's on me for trusting the contract owner #dev Yeah true #dev zkas could do with structs, functions and imports #dev anyway dont want to complicate things #dev In the smart-contract repo on github, it uses Nix to have reproducible builds #dev So wherever you build, the wasm will have the same hash #dev You could use that to verify on-chain contract contents #dev aha great like a lil bundle #dev it would be great if wasm types worked seamlessly with zkas types #dev Like what? #dev if we have such metadata in the wasm, it could maybe enable finer details that interoperate these subsystems #dev ah perhaps, we can think about it #dev for example the DAO proposals have a bunch of fields, if i change it, then i have to update: src/model.rs, all the src/client/ builders + the witness tables, the dao-propose/vote/exec/auth_xfer.zk proof files, and src/entrypoint/ get_metadata() (if anything is public) #dev it's a lot of work and often a random zk proof will fail cos you forgot something random and there's zero info why or where it failed #dev then i call export_witness_json() and try it with zkrunner to debug #dev Yeah that's the low-level tooling :D #dev so when i say (contract_id, function_code) tuple is error prone, it's actually related to zkas not having functions/structs/imports #dev (and also wasm/rust types not interoping with zkas) #dev *nod* #dev then the rust type could generate it's zkas struct, and it could just be imported into zkas #dev anyway this is all good now tyty #dev happy darkmas #dev okay #dev Thanks, you too :) #dev grav-mass #dev ACTION is with a fast pc, what is better than compiling #dev https://stallman.org/ #dev *throws offering* #dev https://stallman.org/grav-mass.png #dev cya later o/ #dev in #philosophy, we were discussing that christmas is actually a pagan festival #dev nice, cya l8r g8r #dev !list #dev Topics: #dev 1. remove memo field from money::transfer() note OR restrict it to N*32 + 2 bytes (by free-module) #dev 2. func_id global map + deploy metadata artifact (by free-module) #dev 3. serial derivation (by free-module) #dev !deltopic 1 #dev Removed topic 1 #dev !deltopic 2 #dev Removed topic 2 #dev !deltopic 3 #dev No topics #dev : @narodnik pushed 1 commit to master: bb2769a207: dao: proposals now have a duration, votes are not allowed past the expiry time #dev free-module: imo dao should use epochs rather than days #dev like we do in staking #dev greets! #dev dasman is worried one of your commits disappeared, can you check? cos codeberg is mirroring on github now #dev why are epochs better than using the blockchain time? #dev it was the vks revert but it doesn't matter as they got updated anyway #dev epochs are deterministic with no chance of drifts #dev as they derive from blocks count #dev so for example lets say proposal duration is 10 epochs with 10 blocks per epoch #dev actually epoch is vulnerable to drift #dev after 100 blocks votes stops #dev yeah but the UI for the user is in time #dev and everyone is able to correctly do that with no needing time #dev so epoch * block_time #dev but epoch times can drift #dev well the client can obviously derive it via days #dev the blockchain time doesn't have drift, but it is inaccurate #dev inaccuracy is better than drift imo #dev actually i'm wrong, epoch * block_time doesn't drift since each block is independent #dev yeah its not a drift, its more like variable duration #dev of epochs #dev I know that time is the best ux, but epochs are far more reliable in terms of accuracy for computation #dev how long is an epoch btw? #dev now we have it arbitaraly at 10 blocks iirc #dev aha, and a block is 1.5mins? #dev yy the target is ~90secs #dev but obviously depends on mining difficulty #dev in pos its exactly that, hence why you depend on correct clocks #dev ty will update that now #dev so is using TimeKeeper::blockchain_timestamp() bad because it will change? #dev self.genesis_ts.0 + self.current_slot() * self.slot_time #dev ok afk bbl #dev that commit disappeared because force push from codeberg to github, both were synced except for that commit, when a commit pushed to codeberg it forced github to be synced with codeberg #dev shouldn't happen again #dev I hope -.- #dev : @Dastan-glitch pushed 1 commit to master: 3cc972c780: bin/darkirc: add tiny test bot #dev free-module: no thats fine, since its deterministic and same for everyone #dev same in terms that time drifts don't matter, everyone will see that timestamp when on that height/slot #dev back #dev i think the meet is tmrw #dev hi #dev it's cancelled today? #dev !list #dev Topics: #dev 1. func_id global map + deploy metadata artifact (by free-module) #dev !deltopic 1 #dev Removed topic 1 #dev yeah a bunch of people DM'ed me #random test #random test back #random qq #dev upgrayedd: i think time functions should not be allowed during update() phase of the wasm #dev since they are used in verification logic #dev (it's like a read op) #philosophy https://stackoverflow.blog/2023/12/25/is-software-getting-worse/?cb=1 #dev hello? #dev hi #markets https://www.reuters.com/world/africa/nigerian-central-bank-lifts-ban-crypto-trading-2023-12-23/ #dev https://oberon-lang.github.io/2023/12/25/towards-concurrency.html #dev hey gm everyone #dev was the meeting moved to today? #random !hackersays #random “Once you've dressed and before you leave the house, look in the mirror and take at least one thing off.” — Coco Chanel 15[Quote #7f64ba] #random wow cool #dev do we need one tbh? #dev i'm gud #dev dnt mind either way #dev nxt week is fine #dev same #dev ++ #dev gm #dev 11:52 do we need one tbh? #dev "Agile devs hate him" #dev failed devs become gurus #dev : @parazyd pushed 2 commits to master: 001bdecb53: runtime: Remove unused acl_deny function #dev : @parazyd pushed 2 commits to master: 07cb4e0ad7: chore: cargo fmt #dev : @parazyd pushed 2 commits to master: 9270910db0: chore: Minor license header fix #dev : @parazyd pushed 2 commits to master: c4afe20f92: validator: Remove false comments #dev nice, it's syncing with codeberg #dev did you guys see https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html ? #dev v v cool #dev Yeah it's nice #dev I didn't know you can redeclare socket.socket like that and have requests pick it up #dev Although instead of Python, maybe it's easier to just `torsocks curl https://myip.wtf/text` or `curl --socks5-hostname 127.0.0.1:9050 https://myip.wtf/text` #dev ah the curl command is nicer, let me update that #dev It's usually annoying when you have to copypaste and then execute a script #dev yeah ofc #dev I have a design question regarding tx fees #dev What if we limit it to 1 input and 1 output and then make it a free call? #dev It could be abused for free transfers though #dev i was thinking of something similar re: fees #dev What was it? #dev i mean just a single input/output proof #dev ah #dev : @Dastan-glitch pushed 1 commit to master: 4984269c0d: book/tor contrib: replace python tor script with curl socks5 command #dev i think in practice fees are quite low, and dust never gets that small... although there is the edge case where it does #dev so wallets would have to be smart enough to figure that out #dev in terms of UX, it could result in delayed txs while the wallet is consolidating coins #dev (unless fees were allowed in any position ;) ) #dev Yeah let's see #dev I'm building the initial client API just to get it working #dev : @Dastan-glitch pushed 1 commit to master: 8fbd26e0cc: contrib: add todo for zk creds tutorial #dev : @Dastan-glitch pushed 1 commit to master: bcce8f516b: book/contrib/tor: remove python-pysocks ref #dev upgrayedd: Could you implement something that lets us convert from Transaction to TransactionBuilder please? #dev yeah, but whats the usecase? #dev I want to be able to use TransactionBuilder::append() on an existing Transaction #dev : @Dastan-glitch pushed 1 commit to master: 73d92bdd9d: contrib/tor: add section about removing github origin #dev brawndo: you can also do it manually #dev I'd prefer properly #dev darkfi/src/contract/test-harness/src/dao_exec.rs:206 #dev ok #dev brawndo: can you give a scenario for this? #dev because how I see it you use TransactionBuilder all the way and "finalize" to a Transaction #dev let gas_used = verify_transaction(&tx); let fee_call = make_fee_call(gas_used); tx.append(fee_call); #dev yep normally the flatten is the last step when it is sent to the node #dev maybe verify there should take the flattened tx temporary, but you keep the original tree and append to that #dev yeah you can produce flattened tx whenever #dev while keeping the builder intact #dev ok can do that I guess #dev Thanks #dev free-module, upgrayedd: So what do you think re: making the fee 1 input and 1 output explicit? #dev I suppose if we don't enforce fee as calls[0] #dev wouldn't that mean that the user must have an exact token with value=fee? #dev Then you can utilize Money::Transfer to create that coin #dev upgrayedd: No, that's what the output is for #dev where is the change? #dev (as in money change) #dev The deeper I'm getting into the fee code, the more it seems that 1 input 1 output is a good choice #dev upgrayedd: In the output #dev wait I think I'm missing something #dev yeah it would be a quite simple and fast proof, the only issue is coin consolidation which is a corner case but makes wallet impl more complicated #dev lets say I got 1DRK and fee is 0.5DRK #dev for example lets say i want to do a tx but don't have a single coin available of sufficient value #dev free-module: We were kinda talking that it's better to move complexity to client than core #dev 1 input is the 1DRK and output should be 2? #dev the wallet needs to be smart enough to pause, consolidate tx, then send the original #dev free-module: yeah don't build self paying txs #dev and some txs might expire so it would need to be remade again #dev .etc #dev upgrayedd: Input would be 1DRK and output would be 0.5DRK (the change coming back to you) #dev upgrayedd: The fee is public and doesn't create a coin #dev ahh its minted by the miner? #dev wdym don't build self paying txs? #dev upgrayedd: Yeah can be used in any way #dev ok then yeah 1in 1out makes total sense #dev if you can allow fee in any position, then you can bundle a coin consolidation with a fee tx #dev 15:16 for example lets say i want to do a tx but don't have a single coin available of sufficient value #dev free-module: you said you don't have a single coin #dev Yeah that's what I'm saying #dev 15:13 I suppose if we don't enforce fee as calls[0] #dev thats a self paying tx #dev 15:13 Then you can utilize Money::Transfer to create that coin #dev aha yeah OR you could just allow money::transfer[0], fee[1] or fee[0] #dev yeah that would make more sense #dev so consolidation + fee becomes an option #dev instead of having to look through the vec for the fee #dev uneeded compexity #dev in the dao we use sum(inputs) = sum(outputs) in money transfer implicitly quite a lot so having fees separate makes the logic there easier #dev well yeah but its a kind of edge case #dev compared to normal txs #dev brawndo: do you agree with having a fee or a consolidation fee call at tx.calls[0,1]? #dev i kinda like fee in any position though because why restrict it? it's not special, but idk maybe i'm wrong - i haven't much experience in this area #dev because it gives a ddos case #dev huge vector with fee in last position #dev node have to go through every element to find the fee #dev ok #dev undeeded check #dev while doing: #dev i'm imagining a contract that pays out salaries periodically. any employee can just trigger the contract and it pays for itself #dev It is kind of an artificial limitation, true #dev if tx.calls[0] != FeeCall && !(tx.calls[0] == Transfer && tx.calls[1] == FeeCall) #dev is much faster #dev ok np #dev (although the contract could have a mechanism to account for the fee somehow in its logic, but it needs to do the fee calcs inside wasm) #dev nope XD #dev :D #dev btw the .data.data thing is kinda annoying. is there some way to improve that? i was thinking maybe * Deref trait or something #dev free-module: where? #dev and we call the leafs 'nodes' and the calls are calls #dev whenever we go through the tree #dev welcome to everyone using whatever terminology they like #dev XD #dev let parent_idx = calls[call_idx as usize].parent_index.unwrap(); #dev let exec_callnode = &calls[parent_idx]; #dev let exec_params: DaoExecParams = deserialize(&exec_callnode.data.data[1..])?; #dev callnode.data.data #dev well thats two entirely different structs tho #dev that happen to use same name #dev imho better to be explicit... #dev yeah just saying maybe there's a better name or the first .data could be Deref'able #dev ++ no traits #dev ok well maybe we could just make a nice function to wrap this #dev The former can be a function #dev yep #dev btw I still don't get the fee position problem #dev I mean other than dev ex, how it can be used? #dev since each tx has a single call fee #dev which one? needing transfer? #dev when you said that fee could go to any position in the vec #dev I mean whats the real use case it solves, other that devex #dev ah i mean having a contract with a treasury paying its own fees #dev well still in that case it should produce a single fee #dev the user doesn't need DRK to call the contract #dev for the whole tx #dev so it should be able to chug it in the first position #dev yeah sure in this specific case, it would work actually #dev then problem solved I guess? #dev :D #dev fine, i'll try to come up with more exotic examples to break this #dev ;) #dev sure, you know we need that for battle testing anyway #dev so the more obscure the better #dev here's one: satoshidice #dev actually no nvm #random test #random test back #random bump #dev : @parazyd pushed 3 commits to master: ade30c9071: contract/money/fee: Force 1 input and 1 output, and use own ZK circuit. #dev : @parazyd pushed 3 commits to master: 39879c3b1a: contract/money: Clippy lint #dev : @parazyd pushed 3 commits to master: 5f1f754524: contract/money/fee: WIP initial fee client API implementation #random test #random test back #dev Hello. Does nym run or compile on riscv yet? #dev krackattak: hey, this is not a nym channel, lol #dev (last time I checked no) #random 1 #dev brawndo: for fees you don't need value commits #dev oh wait you do, well it could be one thing #dev (rather than 2) #dev also we can just check the token_id is correct directly in ZK, we don't need to export it #dev and we can check spend_hook/user_data are both 0 #dev wait actually nvm on the last thing #dev dasman: it's been 30 mins and there's a commit on codeberg that didn't get mirrored to github yet #dev gm #dev afk cya #dev : @Dastan-glitch pushed 1 commit to master: 68f938cdb2: dao: replace get_blockchain_time() with get_current_slot() #dev free-module: error rpc failed, idk what's that, I triggered it manually #dev Use get_verifying_slot instead of get_current_slot #dev Also using slots at all is wrong since we're PoW #dev So I advise fixing 68f938cdb2 properly #dev biab #dev b #random test #random test back #random !hackersays #random “Any sufficiently advanced technology is indistinguishable from magic.” — Sir Arthur C Clarke 15[Quote #001533] #dev : @lunar-mining pushed 3 commits to greylists: f1e2546ea7: lilith: remove load and save host functionality (made redundant by greylist upgrade) #dev : @lunar-mining pushed 3 commits to greylists: 9eaf2f14cd: net: read hostlist path from Settings. Define a default setting and allow overriding in config #dev : @lunar-mining pushed 3 commits to greylists: 9a674995b6: lilith: add hostlist path to NetInfo and default config #dev b #random test #random test back #dev hey, when do u expect to launch mainnet? #dev do yuo pln to switch fro pow to pos at a later point or stay with pow? #dev lain: do you mind adding mirroring CI to greylists branch and push those three commits again #dev since the CI is only on master branch, only a commit to master would trigger it #dev also a resync happens every 10 minutes, and force pushes github to stay in sync with codeberg #dev maybe that's a wrong approach #dev but adding the CI to your branches would make things right #dev ah hmm, well i'll be pushing everything to a new branch and making a pull request for it soon #dev how do i do the CI thing? #dev just copy-paste this should work: https://github.com/darkrenaissance/darkfi/blob/master/.github/workflows/codeberg-mirror.yaml #dev gm #dev gm #dev upgrayedd: 68f938cdb235713087fd1cefbb1d2445390f65f1 #dev freem: check what brawndo said #dev gm #dev ok checking #dev so should i put it back to get_blockchain_time() or use get_verifying_slot()? #dev verifying_slot #dev ok #dev Hey but isn't get_verifying_slot also wrong in PoW context? #dev btw about putting (coin, path) inside the nullifier, we need to convert Value to Value #dev but i was looking at the merkle chip code, and it just does this: #dev let pos: Value<[bool; PATH_LENGTH]> = self.leaf_pos.map(|pos| i2lebsp(pos as u64)); #dev it doesn't even enforce that the array of bools == self.leaf_pos in ZK #dev maybe we have to copy the merkle chip and modify it #dev (if we had the array of bools, we could witness them into a single pallas::Base value, but they aren't exposed) #dev another option: a globally incrementing value for every new coin created #dev maybe this is the better option, we'd need to add a new value in the coin commit, and keep this ticking counter in a money DB #dev Why would you put the Merkle path in the nullifier? #dev You have the coin's leaf position, it's always an unique integer #dev i'm saying the position, not the path #dev it is Value which is 32 bits that get converted internally to 32 bools, but we don't have access to this array in the merkle chip #dev git clone --depth=1 https://github.com/zcash/halo2 && vis halo2_gadgets/src/sinsemilla/merkle.rs #dev go to line 134 #dev open halo2_proofs/src/circuit/value.rs, line 97 #dev the map is not enforcing the constraint inside ZK, so there's no guarantee the Value corresponds to the Value<[bool; 32]> #dev so whatever we do to Value, it isn't guaranteed to correspond to the leaf_pos used inside the merkle chip unfortunately #dev I'll look later #dev Busy atm #dev np, just putting out the idea of a global counter inside the coin as an idea #dev lmk later or tmrw and i'll add that #dev well it would be hash(coin, counter) actually in the mint phase done inside wasm (not ZK), but then the burn proof will unpack the counter and use it in the nullifier #dev I'm not sure if that is a good idea #dev Let's see rather if we can convert the u32 to Fp #dev ok #dev They're constraining something on line 149 #dev The map doesn't constrain, yeah #dev I can just ask them how to do it tbh #dev brawndo: slot = block height so its just different naming scheme #dev perhaps we should update the sdk stuff to be more specific #dev *nod* #dev can i change value_blind in money from Scalar to Base? Then we can use ec_mul_base instead #dev it's a bit slower but the notes are verifiable #dev I don't want to change that before consulting an expert #dev fyi zcash doesn't have verifiable enc for notes, so you can send someone a coin they cannot decrypt #dev Yeah I know and that's fine #dev i don't see why it's less of an attack than the serial #dev If you cannot decrypt a note, it's not a coin for you #dev same with the serial, you discard the dust coin #dev The idea is that notes can be shared OOB #dev (always spend the coin with the highest value) #dev The serial can be solved in an easy way and should be fixed #dev yeah but then it's problematic because with a DAO proposal i can send you an unspendable coin #dev Using a smaller field is not something we should loosely play around with, we don't know the implications #dev we can also fix this in an easy way, it's fine making the blind a Base value, just slower #dev That's why we should ask an expert #dev What's wrong with asking a cryptographer first? #dev you can ask but i'm certain it works since the generator forms a group , and each value nG is unique #dev so the range of possible points is determined by n, which is used as the scalar field for vesta curves which are also secure #dev Wasn't there also a different way to have the DAO use verifiable encryption? #dev If we enforce verifiable encryption everywhere, it's really gonna slow down the chain bandwidth #dev (i.e. every tx would have to do it, because fees) #dev ok i'll think a bit and come up with other solutions #dev That's why I'm thinking we don't really need it for basic payments #dev It's rather a bit more specialized for certain protocols #dev ah yes we don't need it in money #dev actually if i have a way to split a Scalar s into 2 values (a, b) which are pallas::Base such that a + b = s, it would work #dev Yeah you could do that with proper type conversion #dev (i could do these checks in DAO::auth_money_transfer()) #dev ok nice #dev mod_r_p(a) + mod_r_p(b) = s #dev ok i know what to do ty #dev Nice #dev btw i'm not sure we need the value_blind and token_blinds in MoneyNote actually #dev we just need the CoinAttributes there so we can unpack the coin #dev : @Dastan-glitch pushed 2 commits to master: 43bdf5eab9: money::transfer(): MoneyNote add TODO about removing value_blind and token_blind #dev : @Dastan-glitch pushed 2 commits to master: 7e6a60bfc0: dao: s/get_current_slot/get_verifying_slot/ #dev Yeah dunno, perhaps it's useful to have there in order to be able to reproduce the note/tx where it was made? #dev Is there a case where that is needed even? #dev : @parazyd pushed 1 commit to master: 8f6d404ce0: contract/money/fee: Reorder some state transition code more logically #dev no tbh a lot of this note stuff seems like bloat lol #dev should be done OOB as you said #dev *nod* #dev altho OOB could compromise anonymity #dev I said it _can_ be OOB, not that it has to #dev Meaning it wouldn't have to be a mandatory part of a payment struct #dev ah great that would be useful cos the DAO doesn't need notes #dev maybe we need a "DataStorage" call, and the note for money::transfer() could be there #dev (i will make verifiable encryption note for the DAO and it will use a different algo to the money one) #random !hackersays #random “Vi is a subset of evil.” — Anonymous 15[Quote #404fca] #dev ACK @ DAO note #random test #random test back #dev : @lunar-mining pushed 8 commits to greylists: f1e2546ea7: lilith: remove load and save host functionality (made redundant by greylist upgrade) #dev : @lunar-mining pushed 8 commits to greylists: 9eaf2f14cd: net: read hostlist path from Settings. Define a default setting and allow overriding in config #dev : @lunar-mining pushed 8 commits to greylists: 21fc1ad456: net: create greylist_refinery_interval in net::Settings and update TODOs #dev : @lunar-mining pushed 8 commits to greylists: 5abe54b846: net: remove unwrap()'s and cleanup #dev : @lunar-mining pushed 8 commits to greylists: e14395ebfa: net: add anchor_connection_count and white_connect_percent to Settings and cleanup #dev : @lunar-mining pushed 8 commits to greylists: 498ad73438: net: remove connection from anchorlist when it disconnects and cleanup.... #dev : @lunar-mining pushed 8 commits to greylists: d2bd631243: net: add hostlist documentation #dev dasman: as this is just a temporary branch i have avoided adding the codeberg tracking. will shortly be adding this all into a new branch and can intergrate codeberg then. #dev : @lunar-mining pushed 1 commit to master: 42edf060d2: doc: update TODOs on arch/p2p-network.md #dev so monero has a thing called IDLE HANDSHAKE where it pings idle connections and refines the hostlists if they're active or inactive #dev freem said this seems redundant as why would you try to ping an existing connection #dev maybe i've misunderstood something, will verify against the monero codebase #dev but other than that the greylist update is done (TM) and working fine locally #dev bbl #dev meh so i can only use NULLIFIER_K as EcFixedPointBase, but I cannot use it as an EcFixedPoint for normal ec_mul? #dev aha i can do ec_mul_base(ONE, NULLIFIER_K) to convert it to a normal ec point lolol #dev such an ugly hack but whatevs #dev wtf #dev there is no ec_mul(scalar, point) where point is in the circuit, there's only ec_mul_var_base(base, point) #dev !list #dev hello all, first time here! #dev greets deki, welcome #dev [contact."narodnik"] #dev contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #dev : @Dastan-glitch pushed 1 commit to master: 7d80e22ba8: dao: auth_xfer add verifiable encryption for all coins produced by money::transfer() #dev feel free to add my key ^ and send me yours #dev ty, how do I get my key? is it the command contact."username" ? #dev deki: welcome! #dev read this: https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #dev on it, ty #dev okay got it: [contact."deki"] contact_pubkey = "5oyX9YVuLbi1SGyiAt9yGzR7nYqaRHG241qcjE9z5rzm" #dev Hey my network went down, will have someone reset it tomorrow likely #dev terry: I was thinking a bit regarding your question of hashing the leaf position #dev terry: What if we introduce a zkas opcode that maps types to other types using Value::map() ? #dev That way we could probably do it within the circuit, no? #dev For example if leaf_pos is on the heap, and then we do leaf_pos_fp = map(Fp, leaf_pos), it should work? #dev Although I'm not fully sure, it might need a special gate for this #dev I'm off to bed, thanks for having me all gn #dev brawndo: i don't think that map guarantees they are the same value in the circuit #dev also i think the way the zk vm does lazy witnessing of scalar values might be vulnerable #dev The Scalar witnessing is fine, confirmed by halo2 devs #dev I asked about the value mapping, will keep you posted #dev aha thanks a lot #dev np #dev gn #dev cya #memes http://dreadytofatroptsdj6io7l3xptbet6onoyno2yv7jicoxknyazubrad.onion/post/af6e5814291720a50c09 #dev hey is anyone up? #dev wanted to ask: is it necessary to do the 'compiling and running a node' part? #dev hi deki #dev wdym, necessary for what #dev I mean, as part of this whole process in running ircd and contributing to the development side? #random !hackersays #random “It is not the computer's fault that Maxwell's equations are not adequate to design the electric motor.” — Alan J. Perlis 15[Quote #c92094] #dev well, we coordinate all dev work over ircd #dev and running ircd means compiling and running an ircd node #dev you can also deploy it on a server/ raspberry pi and just run a client like weechat locally #dev some of us have it running on android too #dev ah right, thanks for the info. So you have it on an Android phone? #dev yes using termux #dev nice, I don't have an Android phone, might look into getting one #dev you can compile it on e.g. linux and then copy the binary to your phone and run it using termux #dev so I basically need to come to the dev meeting and put my hand up there to contribute? #dev someone wrote this guide for an alternative method https://mirror.xyz/0xbe62F12D86B058566E2438fA9f1c4f800f30F68E/kMAfnA4Smkb0xg8904j8rhkkobaZ6UtK2kiGgCtUxK8 #dev https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html #dev opps #dev https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev thanks, it's 1am for me but I can make it #dev ah damn #dev about ircd, we also have the telegram mirror, it's one way tho #dev !list #dev yeah I'm in the telegram group chat #dev ah wait, is this something else though, the telegram mirror? I've seen that phrase elsewhere #dev there's a bridge at t.me/darkfi_darkirc #dev so messages in #dev and other channels are mirrored there #dev great, ty #dev np #dev last question: do I need to initialize a wallet for dev related work? #dev not rn, at some point would be helpful for testing #dev we are working on deploying a new testnet so rebuilding rn #dev okay thanks, will go through the codebase these coming days then #dev nice :D #dev :) #random !hackersays #random “Optimization hinders evolution.” — Alan J. Perlis 15[Quote #8da82b] #random https://vitalik.eth.limo/general/2023/12/28/cypherpunk.html #random test #random test back #dev this is the android guide: https://darkrenaissance.github.io/darkfi/misc/ircd/ircd.html#installation-android #dev the public logs are here: https://agorism.dev/log/ #memes all srs crypto software now is written in rust cos of the safety #memes don't recommend learning c++ but c could be a nice stepping stone #memes I already know C (intermediate C++), and going through Rust it kinda reminds me of both #memes I was watching one of those C++ conferences where they discuss the standard, and they did mention how it's less secure, where the US government advised against using it for security apps #memes it will take a while to get used to the borrow checker in rust, and a bit frustrating at first #memes but eventually it becomes natural #memes I'm keen to get into it, I mean programming principles are the same, just a new language #memes last elective I did at university was Cryptography, but it was very theory focused...been going through that ZK course from MIT lately, learning about circuits etc #dev are there plans to have a similar application for iPhone? Or is it too restrictive? #dev I might get a second hand android just to play around with this, would love to get something like the Pine Phone but it doesn't seem to be a proper replacement for an every day phone #memes ah you don't need a course, just write some circuits in zkas #memes there's a tool in bin called zkrunner #memes to debug circuits #memes ah right, will check it out thanks #dev iphone is restrictive, but should work on there #dev check this out https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html#areas-of-work #dev thanks, was going through it earlier actually. Do you put up your hand for what you want to work on at the meeting? #dev *hand up #dev you can if you want or just start working on tasks #dev doacracy #dev : @Dastan-glitch pushed 1 commit to master: fa3b0ce573: contrib page: mark completed DAO tasks #dev !list #dev dasman: where is the meetbot, and why aren't links being displayed? also the twitter bot can go back up now #dev okay nice, I have one more week off then I go back to work so will try to contribute where i can #dev nice, lmk anything you need #dev ty #dev you saw my DM? #dev on here? No I didn't, was gonna ask about that because I sent you one but not sure if it came through #dev i added your key #dev did you add mine to your config? #dev yeah I did, let me double check. This is mine again just in case: 5oyX9YVuLbi1SGyiAt9yGzR7nYqaRHG241qcjE9z5rzm #dev do you have your private key set? #dev [private_key."XXXX"] #dev yep, I followed this: https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #dev double checking now #dev ok i'm restarting just in case, brb #dev b #dev sent you a DM #dev nothing, should it come up on the side with your name? I'm checking my ircd_config.toml #dev yes #dev did you restart? #dev (the daemon) #dev nope, will try that now #dev before that, do I need to remove the single # infront of private_key and contact_pubkey ? #dev why is there a # in front of them? that's a comment #dev you generate your keypair, add it to the config toml, then you also add mine #dev gah I thought so...that's how my .toml file has it, I'll fix it now #dev brb #dev ok back #dev : @Dastan-glitch pushed 1 commit to master: d6d45a4c0d: book: edit contrib guide #dev freem: brawndo is managing the meetbot #dev : @Dastan-glitch pushed 1 commit to master: b0899f8f4b: book/contrib: expand tutorial idea #dev for links I migrated all bots to darkirc (to test it more) #dev ok #dev Twitter changed their api, and I had some changes on a fork, will recheck with mainstream and see what happened #random test #random test back #random !hackersays #random “Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.” — Jamie Zawinski 15[Quote #628a0d] #dev gm #dev gm, or gn from australia #dev g'day m'ate #dev g'day indeed #random test #random test back #random test #random test back #dev : @lunar-mining pushed 72 commits to net_hostlist: 7d80e22ba8: dao: auth_xfer add verifiable encryption for all coins produced by money::transfer() #dev : @lunar-mining pushed 72 commits to net_hostlist: fa3b0ce573: contrib page: mark completed DAO tasks #dev : @lunar-mining pushed 72 commits to net_hostlist: d6d45a4c0d: book: edit contrib guide #dev : @lunar-mining pushed 72 commits to net_hostlist: b0899f8f4b: book/contrib: expand tutorial idea #dev : @lunar-mining pushed 72 commits to net_hostlist: 090e8fddfd: hosts: add probe_node() method #dev : @lunar-mining pushed 72 commits to net_hostlist: 80d6eae22e: hosts: create methods to store hosts in greylist after version exchange and periodically probe_nodes, whitelisting them if responsive #dev : @lunar-mining pushed 72 commits to net_hostlist: 82da1ef2bb: hosts: if lists reach max size, remove the oldest entry from the list. #dev : @lunar-mining pushed 72 commits to net_hostlist: b13ecb2811: hosts: create store_greylist() and store_whitelist() methods and tests #dev : @lunar-mining pushed 72 commits to net_hostlist: a74557131b: outbound_session: create run2() method that changes run() behavior to new whitelist protocol.... #dev : @lunar-mining pushed 72 commits to net_hostlist: f3b71f4fdc: net: call refresh_greylist() inside outbound_session::run()... #dev : @lunar-mining pushed 72 commits to net_hostlist: d7d80b6f11: net: implement a new ProtocolAddr that sends addrs from the whitelist and receives to greylist... #dev : @lunar-mining pushed 72 commits to net_hostlist: 00fdaaa0ea: hosts: reimplement test_greylist_store() #dev : @lunar-mining pushed 72 commits to net_hostlist: c074282301: net: remove channel from the whitelist and add to the greylist if we fail to establish a connection. #dev : @lunar-mining pushed 72 commits to net_hostlist: efe3ca7214: net: move whitelist_fetch_address_with_lock() to hosts, and change whitelist_downgrade() function call to take an url, not an (addr, u64) #dev : @lunar-mining pushed 72 commits to net_hostlist: 7952b8ad41: lilith: store last_seen in host list. also change outbound_session to run new protocol #dev : @lunar-mining pushed 72 commits to net_hostlist: 9a09e8c6cd: net: remove HostPtr from ProtocolVersion and update probe_node() #dev : @lunar-mining pushed 72 commits to net_hostlist: 03ce1324bd: net: ProtocolSeed stores addrs on the greylist, and broadcasts own address with last_seen.... #dev : @lunar-mining pushed 72 commits to net_hostlist: 2c01db5270: net: migrate outbound sessions over to new protocol. also replace lilith periodic_purge with periodic_cleanse.... #dev : @lunar-mining pushed 72 commits to net_hostlist: a6c74eda87: net: migrate to new AddrMessage format #dev : @lunar-mining pushed 72 commits to net_hostlist: 053cb71a52: net: move refresh_greylists() out from hosts and implement GreylistRefinery struct/ process in outbound session... #dev : @lunar-mining pushed 72 commits to net_hostlist: 4f0c4cdc0a: net/lilith: move refresh_whitelist() process out of hosts and back into lilith. #dev : @lunar-mining pushed 72 commits to net_hostlist: a19e20e006: net: cleanup #dev : @lunar-mining pushed 72 commits to net_hostlist: 9f25cb4f10: net/ settings: add "advertise" to settings (default value = true) #dev : @lunar-mining pushed 72 commits to net_hostlist: a7b4f60af4: net: implement ping_node() in OutboundSession and ping self before sending own address in ProtocolAddr, ProtocolSeed... #dev : @lunar-mining pushed 72 commits to net_hostlist: 519353ae42: hosts: fix minor typo #dev : @lunar-mining pushed 72 commits to net_hostlist: cc602048d6: net: standardize format + fix logic error on protocol_seed, protocol_address self_my_addrs() #dev : @lunar-mining pushed 72 commits to net_hostlist: 175f6e78a1: net: commit working test #dev : @lunar-mining pushed 72 commits to net_hostlist: c0a47457f8: net: BUGFIX: stop duplicate entries in greylist... #dev : @lunar-mining pushed 72 commits to net_hostlist: de743a03b6: lilith: remove all peerlist filtering logic #dev : @lunar-mining pushed 72 commits to net_hostlist: d4541d4315: net: fix typo in protocol/mod.rs documentation #dev : @lunar-mining pushed 72 commits to net_hostlist: c2ba96dc6f: net: move GreylistRefinery and ping_node() to new hosts submodule. rename hosts.rs to hosts/store.rs. update host imports and ping_node usage #dev : @lunar-mining pushed 72 commits to net_hostlist: 7cf5a1e081: net: delete hosts.rs #dev : @lunar-mining pushed 72 commits to net_hostlist: 066d3dc9c5: net: fix warnings and cargo fmt #dev : @lunar-mining pushed 72 commits to net_hostlist: 748c659f93: lilith: fix warnings #dev : @lunar-mining pushed 72 commits to net_hostlist: de2fb840bf: net: invoke GreylistRefinery in p2p.rs and cleanup #dev : @lunar-mining pushed 72 commits to net_hostlist: 0639e9bdf7: net: working greylist protocol... #dev : @lunar-mining pushed 72 commits to net_hostlist: 2a2d516ac4: net: if a greylist peer is non responsive, remove it from the greylist #dev : @lunar-mining pushed 72 commits to net_hostlist: ae5b4d0a69: net/store: reimplement test_greylist_store() #dev : @lunar-mining pushed 72 commits to net_hostlist: c4ebcb3d45: net: reimplement address filtering on greylist_store().... #dev : @lunar-mining pushed 72 commits to net_hostlist: 4adc0585c0: net: change try_read() and try_write() to read() and write() and cleanup warnings... #dev : @lunar-mining pushed 72 commits to net_hostlist: a61a08c020: net: remove whitelist_store_or_update call from OutboundSession... #dev : @lunar-mining pushed 72 commits to net_hostlist: 560b332e37: net: create perform_local_handshake which does a version exchange without adding channel to the p2p store, and use in ping_node #dev : @lunar-mining pushed 72 commits to net_hostlist: 065f254661: lilith: comment out broken load_hosts code and add FIXME note #dev : @lunar-mining pushed 72 commits to net_hostlist: 3725de07ec: net: and anchorlist and minimal utilities. also clarify hosts specific TODOs. #dev : @lunar-mining pushed 72 commits to net_hostlist: ebe8eb1626: net: check whether host is in the peerlist before adding to greylist. also make additional anchorlist utils.... #dev : @lunar-mining pushed 72 commits to net_hostlist: 03ae65956a: net: add peer to the anchorlist with an updated last_seen when we call p2p.store() on a connected channel #dev : @lunar-mining pushed 72 commits to net_hostlist: b5bf749fe9: net: replace outbound connection loop with monero grey/white/anchor connection_maker()... #dev : @lunar-mining pushed 72 commits to net_hostlist: c850f629b8: net: cleanup connect loop code reuse by implement connect_slot() method. also prevent infinite loop by doing peer discovery when the hostlist is empty.... #dev : @lunar-mining pushed 72 commits to net_hostlist: 6a39e926f1: net: prevent inbound session channels from being stored in the anchorlist #dev : @lunar-mining pushed 72 commits to net_hostlist: 0096f778c6: net: improve outbound_session connection loop logic. #dev : @lunar-mining pushed 72 commits to net_hostlist: 03e6e99e90: net: move host selection logic back into hosts/store to avoid insane nesting in outbound session loop #dev : @lunar-mining pushed 72 commits to net_hostlist: 5be6a07c61: net: add save_hosts() and load_hosts() methods and invoke on greylist refinery start and stop #dev : @lunar-mining pushed 72 commits to net_hostlist: b456d8f5ec: lilith: remove load and save host functionality (made redundant by greylist upgrade) #dev : @lunar-mining pushed 72 commits to net_hostlist: d15cc3b2bd: net: read hostlist path from Settings. Define a default setting and allow overriding in config #dev : @lunar-mining pushed 72 commits to net_hostlist: 995ff6f6c2: lilith: add hostlist path to NetInfo and default config #dev : @lunar-mining pushed 72 commits to net_hostlist: 6e8671d5b0: net: create greylist_refinery_interval in net::Settings and update TODOs #dev : @lunar-mining pushed 72 commits to net_hostlist: ca4d523dd3: net: remove unwrap()'s and cleanup #dev : @lunar-mining pushed 72 commits to net_hostlist: a555f2e744: net: add anchor_connection_count and white_connect_percent to Settings and cleanup #dev : @lunar-mining pushed 72 commits to net_hostlist: 51b4263a93: net: remove connection from anchorlist when it disconnects and cleanup.... #dev : @lunar-mining pushed 72 commits to net_hostlist: 873cd35e0e: net: add hostlist documentation #dev woah! It's snowing commits :D #dev if you're not connected to ircd and someone tries to send you a dm, will you receive it when you 'log on'? #dev forgot to change my name #dev will it stay in the buffer? Or do you have to be connected? #dev hello! #dev hey ziggurat #dev nice name #dev hey a used name here, have you seen this name before? #dev deki #dev no I haven't seen it used here before, then again I've only been active here for a few days #dev are you a new user? #dev i have been here before #dev cool #dev hey ziggurat, greets #dev root: no we have a new version called darkirc which does have that feature #dev ok thanks #markets anonymous exchange accounts: http://dreadytofatroptsdj6io7l3xptbet6onoyno2yv7jicoxknyazubrad.onion/d/InfinityProject #markets oof 4% tho #dev gm #dev Didn't get my main ircd reconnected yet #random https://git.hackliberty.org/hackliberty.org/Hack-Liberty-Resources #random woah cool https://git.hackliberty.org/Philosophy/2013-The-libbitcoin-Manifesto #dev test #dev test back #dev gm #dev Regarding having leaf_pos in the coin serial, it's likely not a good idea or a working one. #dev I realised that you don't know your minted coin's leaf_pos in advance #dev So this is not something that is deterministic #dev : @lunar-mining pushed 12 commits to master: f8dc600fd9: dchat: renamed dchat to dchatd and add placeholder dchat-cli #dev : @lunar-mining pushed 12 commits to master: 45a732cf09: doc: update dchat tutorial chapter 1 #dev : @lunar-mining pushed 12 commits to master: 1eab3398c5: doc: add dchat tutorial to SUMMARY #dev : @lunar-mining pushed 12 commits to master: 6de6815332: Cargo.toml: change dchatd directory to example/dchat/dchatd #dev : @lunar-mining pushed 12 commits to master: 6067b44961: doc: fix dchat tutorial chapter2 #dev : @lunar-mining pushed 12 commits to master: ea28c73fb2: doc: create dchat tutorial chapter 4 and specify TODOs #dev : @lunar-mining pushed 12 commits to master: c03f162c78: doc: finalize dchat tutorial and add TODOs #dev : @lunar-mining pushed 12 commits to master: 4f5d7ddb98: doc: update SUMMARY with new dchat tutorial flow #dev : @lunar-mining pushed 12 commits to master: bbf2a67531: dchat: add anchors/ fix ports/ uncomment daemon #dev : @lunar-mining pushed 12 commits to master: d2fad919d1: Cargo.lock: update dchat dependencies #dev : @lunar-mining pushed 12 commits to master: e5b2c9c767: dchat: remove deleted files and add new ones #dev : @lunar-mining pushed 12 commits to master: ac542ec675: doc/ dchat: add TODO #dev brawndo, it's not in the coin or serial #dev it's in the nullifier #dev nullifier = hash(serial, secret, coin, coin_pos) #dev (you need some unique info associated to only that coin, since duplicate coins can be created) #dev we could also just ban non-unique coins, and put the coin in the nullifier #dev rather every coin *must* be unique #dev We are already enforcing that coin uniqueness #dev There's a set of all seen coins #dev ah so then we don't need the leaf_pos #dev ah ok #dev btw regarding getting the u32, we either have to modify the merkle gadget (less proper way) #dev yeah allowing duplicate coins seems like a bug anyway since the serial and coin_blind should be random #dev Or we can use the decomposed bits in some way to create an Fp (more proper way) #dev ++ #dev yeah i just couldn't see how to get those decomposed bits since unfortunately it's done inside the merkle gadget #dev but anyway i guess it's fine now #dev we have a simple fix that's guaranteed to work #dev (we should add a comment above nullifier derivation in burn.zk that coins are guaranteed to be unique) #dev Sounds good #dev should i add it then? #dev Yes please #dev gr8 ++ #dev :) #dev ;) #dev <3 #dev in hindsight, seems obvious the nullifier should commit to the coin being spent #dev if coins could contain some verification code (like btc script), the nullifier would produce the values satisfying that script then we could anonymize contract calls #dev Yeah #dev So coins are always unique #dev But serials themself might not be #dev I think therefore instead of N=Poseidon(secret, serial), it should be N=Poseidon(secret, coin) #dev In Burn.zk coin is derived using the secret so I think we'd be good on that front #dev nice i already deleted serial, was considering whether we keep secret but i think we should keep it #dev What secret? #dev Coin C=Poseidon(pubkey,value,token,serial,spend_hook,user_data) #dev Can't be less attrs #dev pubkey = secret * NULLIFIER_K #dev nullifier = poseidon(secret, C) #dev Does that make sense? #dev yeah but in ZK we check we own the secret key for that pubkey so it's redundant #dev but it's fine to keep it imho #dev You should because you can otherwise keep hashing known coins #dev And link them to nullifiers #dev If N=Hash(C) #dev That's bad #dev yeah true true #dev we need one extra thing in there #dev yep secret key is good. I'll add a note about that #dev ++ #dev btw we're missing the ability to do ec_mul_scalar(s, point), where point is not constant #dev That's not circuit-native so quite complex to do #dev There were some implementations for that, I need to look it up #dev halo2wrong or something like that #dev ah yes https://github.com/privacy-scaling-explorations/halo2wrong #dev But doesn't ec_mul() do the trick? #dev ah no that's fixed point #dev Yeah I'm not sure #dev for diffie hellman, i had to use mod_r_p #dev : @Dastan-glitch pushed 1 commit to master: 30eb6bba19: money: switch to new nullifier scheme N = hash(secret, coin) #dev I remember learning about Diffie-Hellman key exchange when I did my cryptography elective (while ago now) nice to see this stuff being implemented beyond theory #dev it's a little trick to derive a shared secret, used mainly for asymmetric encryption #dev interesting, do you go into ElGamal encryption? Going through my old notes and it says it turns DH protocol into a cryptosystem #dev yes we use el gamal for notes, see darkfi/src/sdk/src/crypto/diffie_hellman.rs #dev awesome, thanks #dev np #philosophy I like how there's a philosophy section on the site, acting as a guide for why this is all worth pursuing (decentralisation, state sanctioned violence etc) #philosophy Ayn Rand was my first introduction to a lot of these ideas #dev : @Dastan-glitch pushed 2 commits to master: 3e2b475139: update Cargo.lock #dev gm ser #philosophy come for the philosophy, stay for the tech #dev gm #dev test #dev test back #philosophy lol literally me, I Like that phrase though #philosophy but it's also refreshing to hear the word 'philosophy' used in tech, a lot of mainstream tech, corporations are totally alien to the word, especially my work place #dev gm all, 6pm here in aus #dev gm #philosophy https://www.youtube.com/watch?v=rdgnu8XPdvo #philosophy Title: Videodrome (1983) - "Why do it for real?" - YouTube #philosophy nice clip #dev do you guys use copilot to code in rust? Is it accurate? #dev never used it, i'm doubtful tho #dev mayb im wrong #dev yeah fair, it can be hit and miss from my experience with other stuff #dev same never used it #dev Supposedly ppl use it to tab-complete test units and stuff #dev But I found it not that smart, although I only used it for a tiny bit #dev ACTION going afk #dev Happy 2024! #dev HNY! #dev see you, HNY <3 #dev https://www.youtube.com/watch?v=z-zkSHgGiXg #dev Title: Happy New Year! - Snowpiercer - YouTube #dev XD #dev ok afk now until tmrw #dev happy tidings anons! #dev good tidings #dev i am working on a commit lol #dev anyway NYE kinda happened already (solstice) #dev HNY! #dev freem: dm'ed on tg, looking to have a quick chat, could dm you here if you prefer i just don't have ircd on my phone #dev happy new year everyone! #dev happy new year! already 2024 here #dev Happy new year! #dev two and half an hour in 2024 and still nothing special #dev greets #dev test #dev test back #random test #random test back #random !hackersays #random “In programming, as in everything else, to be in error is to be reborn.” — Alan J. Perlis 15[Quote #fd6302] #random wtf #random XD #dev yo #dev : @lunar-mining pushed 8 commits to net_hostlist: 4d4392f9e8: net: add test module to mod.rs #dev : @lunar-mining pushed 8 commits to net_hostlist: 07c2d667e1: session: remove redundant anchorlist write... #dev : @lunar-mining pushed 8 commits to net_hostlist: ca885a43ee: store: improve error naming... #dev : @lunar-mining pushed 8 commits to net_hostlist: 2696290aad: store: fix logic on is_empty_hostlist()... #dev : @lunar-mining pushed 8 commits to net_hostlist: 1578138e8f: outbound_session: move fetch_address logic into new function #dev : @lunar-mining pushed 8 commits to net_hostlist: 18479be298: test: add seed node to net/test.rs #dev : @lunar-mining pushed 8 commits to net_hostlist: 426efdf90b: chore: cargo fmt #dev : @lunar-mining pushed 8 commits to net_hostlist: 27d1b3aa03: hosts: fix logic on anchorlist_fetch_with_schemes... #random test #random test back #dev !list #dev No topics #dev gm #dev gm #dev idk if we have a meeting today fren #dev hi reborn #dev hey #dev hi #dev hi, nothing to dig today #dev what do you usually do during the meetings? This is my first one #dev bye #dev welcome deki #dev ty #dev you can add topic by !topic command, and we discuss topics every monday 4:00 cet #dev bye dasman #dev it's weekly dev meeting. #dev ACTION waves #dev ah okay, I'm mainly going through the 'areas of work' and 'git grep -E 'TODO|FIXME' list to see where I can contribute for nwo #dev deki we usually set topics and discuss whatever ppl want, like potential changes or questions about something etc. #dev today is new years day tho so ppl mostly chillin #dev ok nice #dev deki: also check https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: The DarkFi Book #dev ty #dev hey #random hi #dev test test hello? #dev first time trying out the ircd weechat anyone online? #dev hey, yes I am #dev oh sweet it's working this is pretty cool! #dev haha yeah it's fun #dev so is this a completely peer 2 peer chat using the darkfi network? #dev yes, that's my understanding of it #dev I only got onto it last week but it's been out since september I think #dev okay cool yeah it has been around a while not sure how long though. but finally took the time to try it out. #dev you can put it on your android phone too if you have one #dev glad to have you here btw! #dev thanks, yeah glad to be here! #dev test #dev test back #dev test2 #dev hey was d/c #dev gm #dev welcome anon #random test #random test back #random you are seen #dev b #dev dwdn. #dev dwdn.vdddjjjjjjjjjuu:jjjq! #dev :q! #dev jjjjjjjjjjjjjjjjjjjj #dev reset #dev clear #dev q! #dev :q! #dev q! #dev :q! #dev q! #dev reset #dev 2 #dev oops sorry about that my tty term was fucked #random https://www.theregister.com/2024/01/02/mozilla_in_2024_ai_privacy/ #random !hackersays #random “C(++) is a write-only, high-level assembler language.” — Stefan Van Baelen 15[Quote #3817f0] #dev gm #dev hey #philosophy hello #philosophy hi dada #philosophy oh it's works ! #philosophy i have many logs ... #philosophy i am not good whithe this tech so i havent sure i'm connected #philosophy you are connected #philosophy i'm not good in english too... #philosophy you can always test by running #philosophy !test #philosophy oh haha #philosophy !hackersays #philosophy “It is the user who should parameterize procedures, not their creators.” — Alan J. Perlis 15[Quote #fcb81b] #philosophy !test #philosophy !hackersays #philosophy “C is quirky, flawed and an enormous success.” — Dennis Ritchie 15[Quote #717bef] #philosophy i introduce me , i am french and i see the evlolution os State control, intensifyin on new technologies. i see the suveillance of individuals increasing and the freedom disappear #philosophy bienvenue dada #philosophy un français !! :) #philosophy yes, definitely all forms of state control and surveillance are increasing #philosophy haha yes, although I know a little bit of French from school #philosophy so not only french speak french :) #philosophy yes, je viens d'Australie #philosophy moi aussi je parle francais #philosophy et je suis meme pas francaise #philosophy c'est plus agreable en francais pour moi mais je pense que ce sera lourd pour vous #philosophy non ca va :) #philosophy il y a les vrais francaise dans ce communite aussi #philosophy nous pouvons également utiliser google translate #philosophy personellement je découvre l'anarchie depuis peu et l'agorisme depuis encore moins de temps je voudrai en apprendre plus , j'ai remarquer que l'agorisme rencontrai une certaine mefiance et je ne comprend pas vraiment pourquoi #philosophy ross ulbricht etait agorist #philosophy je suppose que comme l'anarchisme, l'agorisme est associe a une attitude negative alors qu'il s'agit en fait de créer de nouveaux mondes #philosophy *associé #philosophy j'entend souvent la critique de l'agorisme comme étant un capitalisme déguisé alors que pour lce que je crois en comprendre c'est un mode de gestion en communauté qui apparament n'est pas opposéà l'anarchisme comme peu l'être le capitalisme #philosophy <3 #random all the rekt videos are gone #random https://www.youtube.com/@rekthq #random Title: fka-rekt - YouTube #random rekt got rekt? #random seems julien bouteloup is a scammer #random ACTION laughs alone with his stupid pun #random and has been trying to scam the other rekt ppl #random holy shit wtf #random so the guy with youtube access is holding the acct hostage #random sad to see #dev : @lunar-mining pushed 6 commits to net_hostlist: 5f00598c12: outbound_session: remove peer from anchor or whitelist when try_connect fails #dev : @lunar-mining pushed 6 commits to net_hostlist: ad3675eb3c: store: fix death loop... #dev : @lunar-mining pushed 6 commits to net_hostlist: 79e9039b9b: store: create test_fetch_anchorlist() unit test #dev : @lunar-mining pushed 6 commits to net_hostlist: 0ac12ff19d: store: add test_fetch_address() unit test #dev : @lunar-mining pushed 6 commits to net_hostlist: e472003b6d: outbound_session: fetch_address() logic bug fix... #dev : @lunar-mining pushed 6 commits to net_hostlist: 4cde069c53: store: document and cleanup #random https://nitter.oksocial.net/aesopfloppy/status/1742612621952422116 #random Title: aesop 💾 (@aesopfloppy): "" | OKSocial: nitter #dev tes #dev test #dev test back #dev first time trying irc, anyone online today? #dev user: hey #dev hey I'm online #dev yay!! #dev haha yay indeed #dev you can set up private messaging by sharing your public key (doesn't have to be on here, can be a DM on telegram), and saving someone elses in the .toml file #dev explanation here: https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #dev Title: The DarkFi Book #dev Thank you deki! :) #dev :) #dev I've been going through the TODO and FIXME parts in the codebase, and figured I'd try to fix the task "Don't hardcode to 8 decimals" in bin/drk/src/main.rs #dev but I noticed the function that's being used here: encode_base10(*balance, 8) is also being used elsewhere, for example in wallet_dao.rs line 84, it's being set to 8 decimals there too #dev my question is: should this be fixed in *all* instances where encode_base10 has a fixed decimal value? Or *only* where it's specified 'FIXME' in main.rs ? #dev I have to step out, will be back in a few hours but will receive messages on telegram #random : test #random test back #dev i think it means introduce a constant rather than using 8 #dev !list #dev No topics #dev !topic cleanup contract sections naming #dev Added topic: cleanup contract sections naming (by antikythera) #dev !topic db_contains_key shouldnt have Update perm #dev Added topic: db_contains_key shouldnt have Update perm (by antikythera) #dev gm #dev @antikythera so it's okay to stay as 8? So long as it's defined as a constant? I thought we wouldn't want to hardcode any value because we're dealing with different precisions? Or will balance always be 8? #dev 8 decimals is the max precision possible so yes it just should be a constant (imho) #dev okay great, thanks I'll go ahead and fix that #dev ++ #dev deki: are you around? #dev upgrayedd: yes I'm here, just woke up #dev deki: check the review on the pr #dev okay will have a look, thanks #dev upgrayedd: can't find where the review is? I'm at my PR https://github.com/darkrenaissance/darkfi/pull/248 but can't see any review/comments #dev Title: fixing hardcoded value for decimal places to constant by deki-zedd · Pull Request #248 · darkrenaissance/darkfi · GitHub #random https://media.ccc.de/v/37c3-12326-you_ve_just_been_fucked_by_psyops #random Title: YOU’VE JUST BEEN FUCKED BY PSYOPS - media.ccc.de #random yeah saw this one, it comes from adam curtis #random he has talks about this #dev hey #dev upgrayedd: there's no comments/review #dev antikythera: lol yeah forgot to press submit, its up now #random test #random test back #dev upgrayedd: thanks, I got it. About to have dinner will have a look after #dev narodnik: check dm please #dev : @Dastan-glitch pushed 1 commit to master: cc2de1aca1: spec2: concepts page #dev looks like a DAO proposal is only about where to send a certain amount of tokens? Nothing else can be proposed? #dev kanon: the current DAO impl just supports voting to spend from the treasury (following a proposal) #dev we can easily support voting for non-financial proposals like "should we make this software upgrade" for example #dev but the current impl is focused on executing transactions from a shared treasury when a threshold of votes has been reached (and other criteria met, set by the DAO) #dev I see. Thx reborn. Is "we can easily support voting for non-financial proposals..." on the roadmap, and if yes, when could it be expected? Or rather not possible to give any information? #dev kanon: DAO proposal is generic, it can make any contract call #dev it was changed over christmas, the task is completed #dev ah my bad #dev are there any docs on this? #dev antikythera: ^ #dev I see this stuff https://darkrenaissance.github.io/darkfi/spec/dao/dao_propose.html but it's not easy to understand, to say the least #dev Title: The DarkFi Book #dev : @Dastan-glitch pushed 1 commit to master: fca68c54af: fix & update darkirc test script #dev what IDE do people here use for Rust? I'm guessing VS Code is the main one, but wondering if anyone uses RustRover? It's from JetBrains and I like it so far, I've used PyCharm from them and it's a great to use, also available for Linux distros #dev hello #dev kanon: not yet but working on it #dev deki: just a text editor and cargo. IDEs are bloat #dev gm #dev kanon: did you see this btw? https://darkrenaissance.github.io/darkfi/arch/dao.html #dev Title: The DarkFi Book #dev it's old now since the scheme changed last week, but this is the previous version which was non-generic #markets i was wondering if there's some kind of value capture mechanism possible for darkirc #markets so idk like if it costs more to post (stake limit increased), then somehow that increases the value of the locked tokens somehow? #markets staking is kinda like stimulating demand by creating supply shortages #markets so yeah increases the value (at least theoretically), but also makes it more expensive to use #random https://www.vice.com/en/article/qjvma7/drug-trafficking-smugglers-using-drones #random Title: Cheap and They Don't Snitch: Drones Are the New Drug Mules #random they cannot be stopped lol #dev deki: wdym "main one"? #dev : @Dastan-glitch pushed 1 commit to master: dd0e2dabee: spec2: add section on crypto schemes #dev antikythera: i think i figured out where the deadlock is happening #dev in outbound session, we spin up e.g. 8 slots. each slot tries to connect to an address, or does peer discovery #dev i think deadlock happens when e.g. slot 1 and slot 2 simulaenously select the same address from the hostlist, and simultaenously run locking checks when trying to connect to it #dev that's why they first add it to the pending list #dev the pending list should avoid this issue ideally #random https://www.youtube.com/watch?v=igrN_wd_g74 #random Title: Build Your Own Drone Tracking Radar: Part 1 - YouTube #dev upgrayedd: I meant a lot of SW developers I know use VS Code, so I assumed it would be the main choice here? Simple text editor with cargo works too #dev to get good at code, you just need to read, write and think about a lot of code #dev deki: lol I was making a joke on your assumption that we use IDEs... they are all bloat you don't need them #dev the simpler your setup, the better... i use linux terminal + nvim #dev haha fair, it's actually a good way to see them: bloat #dev never considered that #dev recently i added this to my nvim config: #dev map :!touch /tmp/f5 #dev then i can run this in my terminal: #dev echo /tmp/f5 | entr -nrs "cargo run --release" #dev deki: apart from that, they make devs lazy to dig deeper and learn whats really going on under the hood #dev whenever i press F5, it will run the cargo command #dev ++ simpler, strong fundamentals focus #dev (old school way) #dev antikythera: oh thats nice keymap #dev good points, I'm gonna get back into vim I think. I used it a lot at my previous role, but have only used IDEs since #dev : @Dastan-glitch pushed 1 commit to master: 6af0437e21: spec2: sections on concepts, notation, pallas/vesta #dev !list #dev Topics: #dev 1. cleanup contract sections naming (by antikythera) #dev 2. db_contains_key shouldnt have Update perm (by antikythera) #random wax on #random wax off #random daniel-san: is that a command for something? #random what's up with zcash #random wdym? #random they are going to become an L2 #random isn't that a good thing? #random means lower fees, faster transactions etc #dev gm #dev greets #random i think a main issue for zcash was getting liquidity onto the chain #random esp given weak adoption (good adoption in xmr meant liquidity inflows) #random but for both xmr and zec, the main entry point has been centralized exchanges #random so i guess with bad CEX relationship to privacy they have to come up w other ways to get liquidity onto the chain, L2 is one of them #random seems like just a proposal rn and not decided on (unless i'm missing something?) #random but it risks undermining the ZEC value proposition and maybe getting out competed by aztec #random i don't think faster txs + lower fees are zec's biggest issue rn #dev gm #random yeah good points, definitely weak adoption has worked against it, I think it was Naval I heard say once that Zcash would be the future of crypto #dev : @lunar-mining pushed 1 commit to net_hostlist: fcf5a87a28: net: fix deadlock (partial fix)... #dev 99.9% of the time it works 100% of the tiem #dev bbl #dev anyone know why in my log thing where it usually says Msg: PING localhost, I also sometimes get 'Received Prvmsg { id: *numbers*, nickname: *random letters*, target: ..., message: ...} but I don't receive any actual message in the chat? #dev is someone actually trying to message me? I did share my public key in here initially, but I also need the other person's public key to properly receive msgs? #dev deki: these are encrypted messages for which you don't have the key #dev ah ok, thanks #dev upgrayyed: finalising the PR I have atm, I've added BALANCE_BASE10_DECIMALS to wallet.rs, I've also replaced all hardcoded instances in drk where encode/decode is used. My question is: do I need to now add the use statement in every single file where that constant is used? Such as: use main::BALANCE_BASE10_DECIMALS; #dev trying to understand how Rust accesses shared declarations across modules #dev yeah you have to declare it in order to use it #dev doesn't compiler gives you that error? #dev havent' tried compiling, because I didn't implement that change, wanted to ask first to confirm #dev most of info like that are given by the compiler, no need to confirm them with anyone #dev thanks #dev okay compiled returned no errors, will push these new changes soon and await your review #dev i'm gonna have to go to bed too, it's late here #dev deki: I'm pretty sure this code doesn't compile #dev how did you check?: #dev I ran cargo build in the terminal #dev in which folder? #dev you should use make drk in repo root #dev the parent folder darkfi #dev ah ok, so run 'make drk' instead #dev makefile is there for a reason #dev use it #dev cargo build shouldn't work either, unless you only have nightly toolchain as default #dev yes I have nightly toolchain as default #dev also when importing modules, the generat formating is: std, other crates, own crate/super #dev so you should have: use super::{wallet::BALANCE_BASE10_DECIMALS, Drk}; #dev as wallet is a submodule of super #dev so be explicit on your declaration #dev ah right, thanks for the feedback #dev and don't forget to use make fmt and make clippy #dev fmt for code style formatting and clippy for linting #dev in general you should only use make clippy for compiling, to also check linting #dev is make fmt meant to return something? I don't get any feedback, just goes into next line #dev no, but you can see if files where changed as they will become unstaged #dev okay, will try that all soon #dev running make and it nearly finishes then throws one error: failed to run custom build command for 'randomx v1.1.11 (link to github)' Failed to generateMakefile with CMake. I'm guessing I need the RandomX dependency installed? #dev actually I was missing cmake, I thought I had it nm #dev okay I ran make clippy and it compiled with no errors, ok to push again? #dev its your pr don't ask to push lol #dev fair lol #dev ah wait think I forgot something #dev lol not there #dev that was the only correct one #dev in rest crate files #dev and I'm still pretty sure it doesn't compile #dev I forgot to put use super::{wallet::BALANCE_BASE10_DECIMALS, DRK} everywher else i have the old one #dev aside from make clippy, should I run anything else? #dev make clippy passes? #dev no error shown? #dev no errors when I ran it, I did have some dependency issue before but fixed it #dev it doesn't tell you that the is a random ",d" here} #dev https://github.com/darkrenaissance/darkfi/pull/248/commits/b823e6d024a471d5142db5cbded4d428e874d87f#diff-0d7c313eebe3dffe1a158cf752858f290695722d3de75cdf8a2be4dab6a33430R30 #dev bin/drk/src/wallet.rs:30 #dev weird no it never picked that up, I'm still running this through RustRover btw which says is in 'preview' #dev lol glhf then I won't bother debugging an IDE #dev just don't push erroneous code #dev I'll change to VS code, haven't made the ransition to vim only #dev do whatever, my statement still applies :D #dev fair lol #random why do they want liquidity? why not sit tight and bet on a wave of interest in privacy coming soon? #random yeah i think it's just a proposal. but something interesting i saw from the thread they opened is that they hadn't yet discussed it with their dev's. seemed odd if true #random i guess the main concern is that they've been innovating in the space for a while. is this a signal that they're losing conviction or direction? #random there's a bunch of fud on twitter too. idk if it's real. stuff about poor strategic decisions in hiring #dev b #philosophy there are a lot of self-labeled philosophers and thinkers in the crypto world. curious: are there funding platforms for people to write about the space? like could a scifi author solicit funding to write up dream worlds of what's possible? #philosophy or ways to raise funding to hire an "established" scholar or author to look at specific issues with a cypherpunk perspective? #philosophy i'd say something like this could be funded by gitcoin #philosophy AXXI (agorist.xyz) also plans to become profitable via the selling of books, and circle those profits into paying writers etc #philosophy darkfi community also wants to make an agorist scifi #random link? #philosophy a sort of think tank, i guess. but a serious one with a mission. there is so much fluff out there. we need short, distilled, brave, imaginative ideas written in the genre of a journalist in war. something that puts important ideas in your hand immediately, rather than dance around in a postmodern aestheticization. like a foss philosophy genre. #philosophy yeah i should check out gitcoin. i've skimmed it a few times but it doesn't seem to populated by revolutionary thinkers #philosophy yeah i'm familiar with axxi. good stuff. it's a first step but there needs to be a full intellectual infrastructure -- journals, newspapers, forums, universities, etc #philosophy agorist scifi sounds great. wld be curious to hear more abt that #random https://forum.zcashcommunity.com/t/zcash-to-sovereign-rollup/46404 #philosophy like we could fund a top geopolitics expert and culture expert to identify places in the world that are ripe for the growth of the dark forest #philosophy then bring the hacker cavalry to do focused work there #philosophy there needs to be a dao case study journal too. my understanding is that there was an initial wave of failures and people sorta fled from them in shame -- there needs to be public post-mortems so we can gain insight and iterate on them #random ah yeah saw that, was wondering about the strategic hiring comments #philosophy ++ on all points #random can't find it. maybe it's just fud. there are probably organized attacks on privacy projects now too. impossible to know what's up and down anymore. information is spread across self-indulgent twitter threads, shithole medium articles, etc. thus the need for strong, trusted journalism / newspapers #random ++ #random there have been some strange movements wrt zcash atm #random zooko stepping down, other core members perhaps leaving... idk #random but yeah we're so far into post-truth it reminds me of adam curtis "hyperreal", which is a kind of real you know is fake, but you go along with it anyway #random "hypertruth" or something #random yeah i saw that documentary #random there is a bright side to the post-truth era too. like in that documentary he said people literally could not imagine an alternative and essentially became paralyzed. but in that space, if there are people who do have a viable alternative, strong narrative, conviction, and can deliver, the downtrodden will be inspired #random v true #random maybe it's post-Truth -- the end of metanarratives propagated by powerful interests, neoliberalism, fanaticism, whatever. and how we're in a truthS era, where we can all create our own meaning. and the current malaise is sorta the moment after the collapse where people realize, oh, i can create my own little universe with friends. it's disorienting but also a breath of fresh air #random the delisting of privacy coins and the pro-active measures certain privacy coins are taking shows some that there is an external force #random pushing towards creating view keys comes from exchanges, which have regulators over their shoulers saying you SHOULD be doing this #random zcash has always touted working alongside law enforcement, which most certainly is them just positioning themselves to be non-threatening #random https://invidious.lunar.icu/watch?v=hPY-5SR-jPQ #random Title: Michael Goldstein - Bitcoin: An Experiment in Anarchism - Invidious #random the seeds of agorism is a great section in the video also #random crypto isnt apolitical, and as you can see from dev teams implementing chain surveillance directly into their software, and yet still being charged, it wont help what team you "side with" #random diminishing the privacy gains of your coin only weakens the privacy coin and its users, it doesnt ACTUALLY place you in better standing in "their" eyes #markets The elites wants to destroy the concept of capitalism... free market... Cryptocurrencies are the new version they cannot hack. #markets maybe not hack but centralize #markets which might be similar #markets xD #dev gm #dev gm #dev first day back at work and spent most of it going through rust documentation #dev :) #dev came across the command 'cargo check', do people here use this here for the darkfi project? #dev gm #dev deki: I recommend running `make clippy` for that #dev yeah I started using that yesterday, was curious if people added cargo check into their workflow #dev brawndo: is make clippy the only build/compile related command you should run then, when make any code changes to the project? #dev You should also make sure that any relevant tests pass #dev `make test` will run the full test suite #dev thanks, do I need any other toolchains? I only have the nightly one, but I thought I needed another one? Can't find it in the docs #dev That should be fine #dev https://github.com/darkrenaissance/darkfi#build #dev Title: GitHub - darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. #philosophy hello i always in test with weechat, it's funny #dev ty #dev gm #dev gm #dev !list #dev Topics: #dev 1. cleanup contract sections naming (by antikythera) #dev 2. db_contains_key shouldnt have Update perm (by antikythera) #dev https://github.com/darkrenaissance/darkfi/actions/workflows/book.yml #dev Title: Generate DarkFi Book · Workflow runs · darkrenaissance/darkfi · GitHub #dev all the workflows are passing fine, but the book on the website is not updating for some reason #dev i've been trying to fix this the last couple of hours but have no idea what to look for... #dev hm yeah the branch seems to not be updating #dev Let me check if it works on a manual build #dev it does #dev I meant the push #dev hmm it does #dev reiserfs: How about instead of figuring it out, we rehost it under dark.fi/book/ ? #dev I can set that up relatively easily #dev sure thing, that would be a much nicer URL #dev ACK #dev Arti is really becoming more trouble than it's worth #dev !topic net upgrade status #dev Added topic: net upgrade status (by reborn) #dev you were quite optimistic before about the arti timeline #dev also the project has decent activity #dev It's just a lot of schizo code #dev lol #dev weird the online book just updated #dev like after 2 days #dev I pushed a manual commit #dev sh #dev ah #dev Setting up our own anyway #philosophy miagi: it's a lot of hard work to do all that stuff... issue is as always manpower. few ppl willing to step up #philosophy this project is a modest effort to provide the infra and economic network for that stuff #philosophy miagi: regarding geopolitics, they did most influental geoanalysts list on Voltaire Network #philosophy Robert Kaplan, Pepe Escobar etc. #philosophy But it is rare to find such an expert to be forward looking with tech in mind. #philosophy for give an help a great understanding is necessary (and i m only in begining), at what level is it possible to help with what knowledge ? #philosophy dada: in 20 mins we have dev meet in #dev and look at: https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #philosophy Title: The DarkFi Book #philosophy ok i'm in and i go see the contrib page #dev sup #dev hey #dev gm #dev cc #dev hihi #dev !start #dev Meeting started #dev Topics: #dev 1. cleanup contract sections naming (by antikythera) #dev 2. db_contains_key shouldnt have Update perm (by antikythera) #dev 3. net upgrade status (by reborn) #dev Current topic: cleanup contract sections naming (by antikythera) #dev gm #dev we use the term process()/entrypoint inconsistently #dev same for update/apply #dev can we pick some consistent naming? #dev Sec, github is a bit slow #dev We have that define_contract!() macro #dev yep #dev Maybe instead of mapping functions, the main functions could just be called "init, metadata, exec, apply" ? #dev Or rather s,init,deploy, #dev for example, although exec doesn't exec anything #dev we use process/exec/entrypoint, maybe process is best? #dev process/update (or apply if you prefer) #dev i'm not too concerned with naming tbh, just it's consistent #dev I'd be fine with "deploy, metadata, process, update" #dev cool ty #dev !next #dev Elapsed time: 4.0 min #dev Current topic: db_contains_key shouldnt have Update perm (by antikythera) #dev can i remove this perm from this call? #dev seems wrong to do a read op inside update #dev I think there was an edge case where it was used #dev But yeah #dev Agree that it should be removed #dev ah would be nice to know #dev ok thanks #dev !next #dev Elapsed time: 0.6 min #dev Current topic: net upgrade status (by reborn) #dev Maybe if you disable it you can find where it was used? #dev hey so should be ready for code review on this this week #dev yeah will run the entire test suite #dev reborn: Great news :) #dev have been bug fixing, solved most of them imo, just running thru everything with a tine toothed comb #dev I just also pushed a TLS port because the smol devs deprecated async-rustls in favor of futures-rustls #dev That's great #dev ah cool #dev that's it from me #dev !next #dev Elapsed time: 1.9 min #dev No further topics #dev Any general updates? I've been away a bit for holidays, now back on track for the final push #dev i started slowly working on the spec #dev How's the spec going? Need any help? #dev it's easy, just need to work on it for 2 weeks and will finish #dev https://darkrenaissance.github.io/darkfi/spec2/crypto-schemes.html #dev Title: The DarkFi Book #dev Excellent #dev I was looking for ways to make event graph sync get faster, but I don't think it can go any faster, tho I noticed instead of topological sort, we can sort the graph using the layer number, idk how it will affect things but it's just something #dev Do you feel it's slow right now? #dev also to get it out of my system I started to do forward syncing and compare, but things look good now and we should start using darkirc more often #dev dasman: Yeah as soon as we merge the p2p improvements we should be good to go #dev Not slow per say, but I thought if it could go faster it'll be better #dev ++ #dev ah yeah the apps will need to be ported over following code review #dev ok, maybe you and upgrayedd can fiddle with that #dev reborn: I could do that as practice to familiarize myself with the changes :) #dev sounds good #dev right #dev ** #dev Oops #dev ++ #dev :D #dev +^+ #dev :) #dev :D #dev anything else? #dev \°.°/ #dev Cool. I'll be online now 99% of the time so feel free to ping for anything #dev yes, ℕ₆₄ means nintendo 64 #dev sweet #dev antikythera: haha #dev haha #dev for help i see rust is needed ? i need to learn it #dev ? #dev yes dada #dev My plan this week is to dig in a bit into the wasm host functions and see how to apply gas fees there #dev aha great #dev Since they aren't accounted in the normal gas stuff #dev there's a lot of tasks like "make x stable" #dev But I'll mainly go with bytes-written as cost #dev do you have a strategy for gas pricing? #dev ^ #dev ok #dev sounds as good as anything, disk access is slow #dev I think we know the sizes of all buffers passed around host<->wasm #dev So shouldn't be too difficult #dev one thing is that sig verif is slow #dev but not much disk activity #dev Yeah although sled helps a bit since it's able to cache #dev same for proofs i reckon #dev sigs and proofs are slow yeah #dev But we know their cost in advance #dev we ideally need a harness to do benchmarking for all this stuff #dev So we don't always have to verify them #dev would be easier to gather metrics and make judgements #dev We have a bit of that in the contract test harness #dev sec #dev ok so fees, deploying contracts, p2p stuff, ... what are the other big areas? #dev https://github.com/darkrenaissance/darkfi/blob/master/src/contract/test-harness/src/lib.rs#L497 #dev Could be made more granular to have individual statistics for wasm, proofs, and sigs #dev yeah #dev One area is the cross-chain swaps #dev That's here, although stagnant for a few weeks: https://github.com/darkrenaissance/darkfi/pull/246 #dev Title: feat(swapd): begin atomic swap implementation by noot · Pull Request #246 · darkrenaissance/darkfi · GitHub #dev yep #dev Then there is (merge) mining #dev Nothing else rn off the top of my head #dev ok thanks #dev thanks everyone #dev tyty #dev ty #dev :) #dev !end #dev Elapsed time: 15.0 min #dev Meeting ended #dev thanks everyone #dev ty #dev biab #dev dasman: don't forget right now we sync single events #dev you can make it faster by introducing variable sync length(limited by a max constant) #dev brawndo: only 177 gentoo packages to compile :D #random test #random test back #random . #markets #rekt #markets again #markets fml lol #dev something else which is not clear to me is the docs talk about PoS but in several places now I saw PoW being mentioned. Are both being used, or one superseded the other, or how do I have to understand this/ #dev something else which is not clear to me is the docs talk about PoS but in several places now I saw PoW being mentioned. Are both being used, or one superseded the other, or how do I have to understand this_ #dev current testnet is PoS, but we are building a PoW one now #dev we will launch w PoW #dev That's pretty impressive. Will it be more bitcoin-style PoW or monero-style? #dev Considering the project's philosophy I'd rather guess monero #dev To allow anyone to mine? #dev ay are there mirrors of the seminars in the wiki? links are dead #dev good idea to run cargo clean as part of your workflow? #dev deki: nah, only to reset everything if ever needed #dev upgrayedd: thanks, btw still sorting out my build errors for my ticket. Going to work soon so will get back to it after #dev glhf #random test #random test back #dev kanon: check https://dark.fi/insights/development-update-q423.html #dev Title: Development Update Q423 #dev miagi: oh shit they are down, not sure we have a backup #dev gm #dev test #dev test back #dev antikythera: 3b14e2f671a502f3ac267d53ed433fbcb0164392 #dev These are different nullifiers to money nullifiers, right? #dev yes #dev its for voting #dev ok just checking #dev Remember that for hashing anything, you always want to have the same number of elements #dev Because H(a,b) and H(a,b,c) can theoretically produce a collision #dev So in a set of some hashed commitments, you want those hashes to always take the same number of elements #dev That's what cryptographers mean when they say that a hash function is collision resistant for fixed input size #dev aha thanks, makes sense #dev will make sure of that #dev Cool #dev Also sometimes you'll end up with the same number of elements for different commitment types #dev There you can for example add another element which serves as salt, for example the prefixes we use to derive a Token ID vs Contract ID #dev H(1, a, b) and H(2, a, b) will then be different hashes #dev Not always necessary, but sometimes good to make this difference if some context is similar and you want to avoid confusion #dev I suppose it also helps with anonymity #dev For example now in 3b14e2f671a502f3ac267d53ed433fbcb0164392 there won't be matching with money nullifiers because the inputs are different #dev Without that you'd know "oh, this coin voted on a proposal and was now spent" #random test #random test back #markets gm #markets everyone waiting for the btc etf approval #markets would be funny if it's rejected #dev yeah true, the reason I added that though was because nullifiers should be distinct per proposal #dev idk what the conclusion was of the convo about locking coins into votes #dev I think they don't have to be locked #dev ok that's good, means no changes #dev Locking them also inherently brings a bad attack #dev Which is: #dev Someone creates an "unwanted/bad" proposal, then everyone votes on it do make it not pass #dev In the meantime the same proposal is created again, and how nobody can stop the second one #dev It's funny how the base functionality of everything is really really simple #dev And then the job is to add all these constraints around to protect it #dev the locking would be fine since proposals fork the state tree before voting occurs #dev the caveat is that if i unlock my tokens, i can still vote on already active proposals, just not any new ones #dev It's not fine because you can make both at the same time #dev then the proposal doesn't pass, it expires #dev I mean #dev Thinking about it, I don't understand the locking mechanism fully #dev If the state is forked, there is nothing to lock anyway #dev And I do think you should be able to vote on all proposals with your tokens #dev Not be forced into picking your favorite proposal #dev yeah i don't understand either #dev upgrayedd: Does this look alright to you? https://github.com/darkrenaissance/darkfi/commit/2ad9183239842a502bf7df8afd3cea294ff3e419 #dev Title: Server Error · GitHub #dev brawndo: shouldn't the DeployParamsV1 exist in sdk? #dev so both validator and deployor can use them without circular deps #dev Maybe yeah, good idea #dev I'll move it #dev But otherwise? #dev why is the new runtime needed? #dev can't use the already initiated one? #dev oh no #dev different wasm bincode #dev Yeah the parent is the deployoor contract which verifies the contract ID derivation and the wasm symbols #dev Then the child runtime is running the new wasm's deploy() func #dev so the parent have acces to it right? #dev gotcha gotcha gotcha #dev and since its all in the overlay, its alive only in there #dev so consecutive txs can actually use it #dev Yeah #dev without it actually existing in the blockchain #dev yeah lgtm #dev Cool #dev Need to review the actual runtime.deploy function now #dev Then I'll try to make something for the harness #dev noice gj #dev https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/vm_runtime.rs#L412 #dev There is this, but I think it's not relevant anymore? #dev https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/vm_runtime.rs#L422 #dev This should already be the overlay? #dev I think BlockchainOverlay already has the contract stuff #dev sec let me check #dev https://github.com/darkrenaissance/darkfi/blob/master/src/blockchain/mod.rs#L421-L424 #dev yeah so it should go over the overlay #dev but you can verify/test it easily #dev just spin a new empty db, create overlay over it and test the deploy tx against it, then try to access that deployed wasm from next tx in the overlay and in from the actual db #dev second case should fail #dev *nod* #dev brawndo: btw we have the environment defining blockchain here: https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/vm_runtime.rs#L80-L81 #dev so everything goes only thought the overlay already #dev We made that change some time back, don #dev Yeah #dev 't really recall when XD #dev Yeah there's WasmStoreOverlay implemented #dev thanks past us :D #dev :D #dev yay stack overflows in wasm #dev brawndo: just download more ram #dev ^_^ #dev oh my bad I was deserializing the wrong types #dev Let's see if it works now #dev ah no it's real #dev ok I'm including a new build dependency #dev The wasm bins have to be stripped to <1M #dev : @parazyd pushed 1 commit to master: 849da0a521: contract: Strip built WASM binaries using wasm-strip from the wabt toolkit #dev ooh bot's bacjk #random Anyone tried Matrix? Any good, safe? #dev do you guys have any plans to use solidity for this project? Or will it not be part of ethereum? #dev Out of scope #dev Solidity is a bad language anyway #dev how come? I started learning it a few months ago to get into auditing, seemed to be all the rage #dev A friend wrote this: https://makemake.site/post/solidity-considered-harmful #dev Title: Solidity considered harmful - makemake #dev interesting, having said that I have seen a few comments on twitter saying that there's a shift towards Rust #random We used to use it, but its cryptography doesn't scale #dev https://ewasm.readthedocs.io/en/mkdocs/ #dev Title: Ethereum WebAssembly (ewasm) - Ethereum WebAssembly #dev To me this is interesting #dev lmao "In the end, Solidity is Java mated with C++ in such a way that the best genes of both failed to exert a phenotype." #dev interesting, haven't heard of ewasm #dev brawndo: lmao that you added the dep only for debian #dev That's for the CI :p #dev THE COMMUNITY can add the rest #dev : @parazyd pushed 1 commit to master: 43030a9eea: chore: Enable some additional arti-client crate features... #dev : @parazyd pushed 1 commit to master: 561318cf6f: runtime: Disable payload debug message on Deploy #dev do you run 'cargo test' as part of your development? Or do you only do the fuzz testing described in the doc? #dev `make test` #dev ah right that one too #dev have to admit I got a good laugh out of seeing 'deployooor' lol #dev :D #dev deki: I told you before, use/read the makefile #dev : @aggstam pushed 1 commit to master: 4cc5cf6217: contrib/dependency_setup.sh: wabt dep dependency added for xbps #dev : @aggstam pushed 1 commit to master: e5660ce75d: validator: check if proposal already exists when looking ofr its fork index... #random test #random test back #dev : @Dastan-glitch pushed 1 commit to master: 152e81984d: spec2: DAO model #dev what's the correct way to convert a blake3 hash to pallas::Base? #dev darkfi/src/contract/dao/src/model.rs:125 #dev this is what we do currently #random drigy: re: Matrix: i've been recommending Element (slick Matrix client) to replace Slack and similar office communication/collab tools #dev contract/consensus/src/client/proposal_v1.rs:257 #markets hamletmachine: did u see antikythera msg above? #markets 10:11 antikythera i was wondering if there's some kind of value capture mechanism possible for darkirc #markets 10:12 antikythera so idk like if it costs more to post (stake limit increased), then somehow that increases the value of the locked tokens somehow? #markets i said this #markets 10:14 reborn staking is kinda like stimulating demand by creating supply shortages #markets 10:16 reborn so yeah increases the value (at least theoretically), but also makes it more expensive to use #markets errorist: yeah will be hilarious lol #random monerotopia is in buenos aires! #dev antikythera: ^ #dev https://docs.rs/pasta_curves/latest/pasta_curves/struct.Fp.html#method.from_uniform_bytes #dev Title: Fp in pasta_curves - Rust #dev aha ok ty #dev wait why is that taking [u8; 64] #dev Fp is only 32 bytes long... #markets would be bad for my btc bags tho #dev https://crypto.stackexchange.com/questions/84327/how-does-montgomery-reduction-work #dev Title: implementation - How does Montgomery reduction work? - Cryptography Stack Exchange #dev i think from_repr() is the correct call, since internally this Fp uses montgomery form #philosophy antikythera: is there a forum or place where people interested in doing this work can get together? #markets reborn: thx for reposting #markets antikythera: what are you ideas for value capture? staking rewards? i've been thinking we need some kind of ve- tokenomics that award greater staking rewards & governance vote weight based on how long DRK token is locked for (up to 4 years) #markets also IMO need to create some kind of Protocol Owned Liquidity that we can create passive revenue from (via defi protocols, staking, etc) rather than set ourselves up to have to constantly fund dev work #markets easiest way to do this would be some kind of bonding mechanism during intial launch (similar to Ohm but without the 3,3 ponzinomics) where people can purchase DRK at a discount to market price by filling out treasury with desired assets #markets thinking BTC, XMR, maybe ETH given its a blue chip crypto & we would have some kind of evm presence to enable dex LPs #markets (msg got cut off above) ... rather than set ourselves up to have to have to constantly fund dev work BY SELLING DRK #dev from_repr() will not do modulo and will fail if it's a non-canonical encoding #dev https://docs.rs/pasta_curves/latest/pasta_curves/struct.Fp.html#method.from_uniform_bytes is the correct method #dev Title: Fp in pasta_curves - Rust #dev Fp can take a bit less than full 32 bytes #dev I suppose that method takes 512 bytes so it can be generic #dev It's not part of pasta_curves, but rather an inner crate trait #dev ff crate #dev >The length N of the byte array is chosen by the trait implementer such that the loss of uniformity in the mapping from byte arrays to field elements is cryptographically negligible. #dev https://docs.rs/ff/0.13.0/ff/trait.FromUniformBytes.html#implementing-fromuniformbytes #dev Title: FromUniformBytes in ff - Rust #dev deki: So eWASM was the planned execution environment for the original ETH 2.0 system, which would have had multiple executable shards, some of which could have been EVM and some using eWASM, which was a variant of WASM with gas counting inserted and some points of non-determinism removed. From maybe 2016 until 2021 or later huge efforts were poured into it but that was all thrown away when it became #dev apparent that it would not have been any better. Then executable shards got dropped anyway. Then it was decided to do The Merge instead, and to make the beacon chain executable, with future shards being data only. It was a huge distraction from actually making the EVM better (ie. EIP-615, then simple subroutines and now EOF. #dev eWASM is dead. #dev Other chains use WASM, but not eWASM. #markets hamletmachine: we are talking about darkirc chat app specificaly #markets you will need to stake DRK as a spam protection mechanism #markets agree but how to do that before token launches? if current test tokens are free to aquire then sophisticated spammers (nation states etc) can still easily DDOS #markets yes we're talking post launch #dev dark-john: thanks for the info #dev upgrayedd: yes I know, was going through the Rust lang book and came across cargo test, been going through makefile too #random testing #dev aha ty brawndo #dev i think from_raw() and from_uniform_bytes() both work equally #markets those are all good ideas #philosophy i met a bunch of agorists in the monero community, practicing agorism in the wild #philosophy the other big one is hacker linux communities like cyberia/ 2f30.org (altho not sure they actually do anything besides larp) #philosophy then there's agorist.xyz and associated community #philosophy we have a philosophy group on signal #philosophy miagi: if you wanted to help out with journal stuff we'd appreciate that #philosophy journal=agorism journal #dev : @lunar-mining pushed 2 commits to net_hostlist: 96cad54d81: net: 99.9999% of the time it works 100% of the time... #dev : @lunar-mining pushed 2 commits to net_hostlist: 736459aa51: chore: cleanup... #dev commit title of 96cad54d81 is misleading... it actually works 100% of the time (sample size of 500) #dev : @Dastan-glitch pushed 1 commit to master: f573585b72: spec2: vote nullifiers and finish dao model page #dev has anyone got github 2fa working with a yubikey? #dev or should i use codeberg to make a PR? #dev nm re: ubikey, got sorted #dev gm #dev antikythera: Yes probably, though you have to be careful how you construct the from_raw array #dev yeah i'm not sure of the encoding, but it doesn't matter since i'm mapping a hash to a pallas::Base value #dev In any case I believe from_uniform_bytes is more correct usage of the API #dev Could make a helper wrapper function even #dev that's fine, i'll use it if you think it's better #dev quick q: does it pad zeros on right or left? nw if you don't know, i'll look it up #dev Who pads? #dev i mean is it little or big endian? #dev i guess little #dev Yeah from_uniform_bytes takes little endian. So when you have a 32-byte hash you want it first: [fffff...00000] #dev ++ ty #dev np #dev https://docs.rs/ff/0.13.0/ff/trait.FromUniformBytes.html #dev Title: FromUniformBytes in ff - Rust #dev See here what they wrote about the reasoning #dev ahh excellent, makes a load of sense #dev great #dev So it's a cryptographic reason in essence #dev from reading this page, i get the impression that 32 bits of 256 bits are more likely to be used when mapping a 32 byte array to pallas::Base #dev whereas adding another 32 bytes, reduces the risk of those 32 bits #dev https://en.wikipedia.org/wiki/Continuous_uniform_distribution #dev Title: Continuous uniform distribution - Wikipedia #dev the blake3 hash is uniform in the range [0, 2^256), which is mapped to [0, p] #dev the values [p + 1, ..., 2^256 - 1] are mapped to [0, ..., 2^256 - p] (which is 32 bits) #dev this makes the hashing to pallas::Base non-uniform, but here they are saying that having an extra 32 bytes adds more randomness to make it less of an issue #dev "The length N of the byte array is chosen by the trait implementer such that the loss of uniformity in the mapping from byte arrays to field elements is cryptographically negligible." #dev Should we then be duplicating the hash so we have 512 bits? #dev Or pick another hash function? ^_^ #dev well it would need to be random, so you could hash it again or use a bigger hash #dev BLAKE2b is 512 bits #dev thats probably why they use blake2 #dev interesting lol #dev upgrayedd: Is `pow_target` based in seconds in ValidatorConfig ? #dev LFG https://github.com/darkrenaissance/darkfi/pull/249 #dev Title: Net hostlist upgrade by lunar-mining · Pull Request #249 · darkrenaissance/darkfi · GitHub #dev : @parazyd pushed 1 commit to master: ec1e9ff64e: contract/test-harness: Set fixed-difficulty=1 mining #dev reborn: Nice! #dev upgrayedd: Also, what consensus is the contract test-harness using? Could you please add a method where I can just generate a new block and give a holder as the mining reward recipient? #dev With fixed-difficulty=1, any block should pass normal verification, nothing special should have to be done #dev reborn: i just was skimming through and noticed in protocol_seed: if self.settings.advertise == false { #dev minor thing #dev thanks #dev : @lunar-mining pushed 1 commit to net_hostlist: 2dbaf413a0: protocol_seed: fix bool syntax #dev : @Dastan-glitch pushed 1 commit to master: 993587ada7: zk/debug: add Uint32 and MerklePath for export_witness_json() #dev brawndo: yes in seconds(defined here: https://github.com/darkrenaissance/darkfi/blob/993587ada7ac2cfbef2c19349414237ec9586a34/src/validator/pow.rs#L82-L83) #dev test-harness doesn't do any consensus, it uses validator add_transactions() to write to the state directly #dev we already have a pow reward tx you can use in there #markets lmao antikythera yday you were saying it would be funny if the ETF thing didn't happen #markets well SEC was "hacked" and tweeted it was approved #markets then later said they were hacked and deleted the tweet #dev reborn: I added a few comments on the PR, other than that LGTM :) #dev upgrayedd: ah but how do I advance the block height? #dev I wanted something like: for i in 1000 { generate_block(&holder) } #dev check how we do unstake request and then unstake where we wave the time lock #dev tldr: you just generate the height/slot you want and pass that to the timekeeper #dev ok I'll have a better look at it, ty #dev https://github.com/darkrenaissance/darkfi/blob/master/src/contract/test-harness/src/consensus_unstake.rs#L132 #dev https://github.com/darkrenaissance/darkfi/blob/master/src/contract/consensus/tests/stake_unstake.rs#L194-L200 #dev : @Dastan-glitch pushed 1 commit to master: 9d82ce3a1c: dao::vote(): correct mistake in nullifier #dev check those functions #dev in those tests we even have trying to use coind befero timelocks checks #dev showcashing wrong height/slot #dev so you want something similar #dev I didn't add consensus there are contracts should only care about current state and height(u64) #dev s,are,as #dev *nod* #dev can i switch the DAO auth calls hashing to BLAKE2b-512? #dev lmk if something ain't clear after you read those tests #markets lol #dev antikythera: Yeah sure, use https://docs.rs/blake2b_simd/latest/blake2b_simd/ #dev Title: blake2b_simd - Rust #dev ok gr8 #dev : @parazyd pushed 1 commit to master: 6b238fdb9a: ci: Install wabt for book gen #dev woah this is useful https://lib.rs/ #dev Title: Lib.rs — home for Rust crates // Lib.rs #dev never actually visited the homepage before #dev Your favorite :P https://lib.rs/os/macos-apis #dev Title: macOS and iOS APIs — list of Rust libraries/crates // Lib.rs #dev https://lib.rs/crates/sled-overlay #dev Title: sled-overlay — db interface for Rust // Lib.rs #dev lmao #dev :D #dev nice #dev brawndo: slocs seems a bit high #dev does it count comments and/or tests? #dev >Dependencies #dev lol we literaly have single dependency, sled XD #dev sled and its recursive deps #dev oh oh yeah the actual one is 293? #dev thats low XD #dev #773 in Database interfaces #dev it should be higher XD #dev haha #dev 770 we going up #dev ahahahaha #dev LOL #dev Keep refreshing #dev our 3 views moved it up #dev it should go by usage not views, but maybe yeah #dev brawndo: ACK #dev : @Dastan-glitch pushed 1 commit to master: 4d87af64f4: dao: replace use of blake3 hash with blake2b. See code comments for explanation of the rationale #dev ty the book is fixed now #random test #random test back #markets hamletmachine: i'm not a fan of ve tokenomics but I agree on the protocol owned liquidity and using treasury assets to farm #dev brawndo: here? #dev what do you think is better: smol::future:or or futures::select? #dev select allows for more than one task #dev FuturesUnordered #dev antikythera: thats in futures right? #dev yep it's used in net. I saw brawndo use it, and thought it's better than futures::select because it's not a macro #dev smol::future::or is not either, thats why I asked XD #dev i think futures::select is used to get the first future to finish #dev and grab the return value #dev FuturesUnordered lets them all finish #dev select! polls all features and finishes once any of them finish #dev I don't want them all to finish #dev yep true, well sry for trolling ;) #dev I want to grab the first one finishing #dev no worries #dev my question is more since I don't know weither this will look clean: #dev smol::future::or({smol::future::or(task_0(), task_1())}, task_2()) #dev compared to futures::select!{task_0(), task_1(), task_2()} #dev the macro is better #dev well maybe not actually #dev since task_0 and task_1 invoke a channel to task_2 #dev so the tldr is task_0 and task_1 combine a channel to stop task_2, in case one of them finishes #dev you can also use FuturesUnordered (looking at the doc) #dev so instead of passing the sender to both of them, you can combine them in a future #dev if you call .clear() it will drop any remaining #dev yeah but in that case, all 3 futures must return same stuff right? #dev which I don't need/want #dev i got around this before by doing branches inside the macro #dev so you wrap the future *inside* the macro branches and just ignore the return value #dev you can use the return value for signalling #random test #random test back #random think I fucked up my ubuntu because of python #random luckily I had a snapshot otherwise had to reinstall lol #dev I do the same by branching the smol::future::or #dev it werks #dev ok as you wish #dev Yeah avoid select!() if you can #dev We can eventually get rid of the futures crate #dev was reading through the previous convo you all had, want to ask why this required a change: convert a blake3 hash to pallas::Base. Was the current way in model.rs wrong? #dev antikythera: brought it up initially #dev the range of pallas::Base is [0, p-1] where p < u256 (=32 bytes) #dev so for those values produced by blake3 hash which are [p, u256::MAX], they get mapped to [0, u256::MAX - p] #dev so those 32 bits of pallas::Base are hashed to more frequently #dev an ideal hash function is perfectly uniform. all the crypto is based on this assumption. if the assumption is improper, it opens us up to bad unforeseen attacks #dev interesting, so it's a legitimate security concern above anything else? #dev blake2 is more secure but slower than blake3 #dev ACTION just parroting what they/them read on wiki #dev reading about it now https://github.com/BLAKE3-team/BLAKE3 #dev Title: GitHub - BLAKE3-team/BLAKE3: the official Rust and C implementations of the BLAKE3 cryptographic hash function #dev never heard of this hash function though, I only did one cryptography elective at university and don't remember being taught this (but we had stuff like DH key) #dev check out the spec being written in doc, it might be useful #dev (still unfinished) #dev : @Dastan-glitch pushed 1 commit to master: 45f5bd506f: dao model: add note about blake2 hash function usage #dev nice, will do thanks #dev is blake3 the standard that's used throughout crypto? #dev there's no standard hash function but several trusted ones including blake #dev if there was a standard, it's probably the sha functions #dev I see #dev : @Dastan-glitch pushed 1 commit to master: ac3f29036e: book: git mv spec2 spec #random we hit 1k github stars #random !hackersays #random drigy: matrix was so shit that we had to create this #random it was lagging massively on all our messages. it's such a shit heap in general #random > gets triggered by matrix #random > creates best chat app known to man #dev : @Dastan-glitch pushed 1 commit to master: ead4b2338f: book: botched move #dev lol #random lmao #dev yeah ffs i did mv spec2 spec/ ... talking with devs and trying to link them the spec #dev upgrayedd: How do I advance the height after executing the pow reward tx? #dev 14:28:16 [ERROR] Internal error getting from slots tree: Slot 1 not found in database #dev brawndo: https://github.com/darkrenaissance/darkfi/blob/master/src/contract/money/tests/pow_reward.rs#L131-L133 #dev each time you increase the current_height you generate its slot #dev ah gotcha, it's the generate_slot fn I was missing #dev I now we have mixed pow and pos naming :D #dev future proofing is a bitch XD #dev Also the first generate_slot() should be for slot 0, right? #dev yeah but we already have that baked in the harness so its there #dev as its part fo the genesis block #dev so the harness/db already has it #dev so you first generate_slot should be for slot 1 #dev hm ok #dev assuming you started with current_slot = 0; current_slot += 1 or current_slot = 1 #dev : @parazyd pushed 3 commits to master: dc0a1fb134: contract/money: Ignore benchmark tests when running test units #dev : @parazyd pushed 3 commits to master: efedcbf856: contract/money: Rename "integration" test to "token_mint" #dev : @parazyd pushed 3 commits to master: e659f2c6d0: contract/money: WIP complete integration test #dev s,current_slot,current_height #dev I'm doing something wrong #dev Can you check in money/tests/integration.rs ? #dev last pushes? #dev git HEAD #dev I tried with various combinations of height/slot to no avail #dev (Can run with make test-integration) #dev Probably wanna enable the debug log as well #dev This is very strange: #dev [DEBUG] (2) runtime::vm_runtime: wasm executed successfully #dev [DEBUG] (2) runtime::vm_runtime: Contract returned: I64(33) #dev ah no nvm it does catch an error #dev your first mistake is created a pow_reward_tx for slot 0 #dev It's for slot 1 #dev th.pow_reward(&Holder::Alice, None, verification_slot + 1, None)?; #dev yeah but you have to generate the slot before executing the tx #dev oooh #dev https://github.com/darkrenaissance/darkfi/blob/master/src/contract/consensus/tests/stake_unstake.rs#L52-L53 #dev https://github.com/darkrenaissance/darkfi/blob/master/src/contract/consensus/tests/stake_unstake.rs#L66-L68 #dev https://github.com/darkrenaissance/darkfi/blob/master/src/contract/consensus/tests/stake_unstake.rs#L70-L75 #dev in this example we start at height 1 #dev Lemme check #dev we aidrop some tokens to alice #dev then stake those tokens #dev progress height after grace period and generate that slot #dev then execute a proposal for alice #dev so the proposal is verified against the slot after grace period we created #dev : @parazyd pushed 1 commit to master: d0eac00cea: contract/money: Fix slot generation in integration test #dev ^ #dev Thanks :) #dev yeah that should work now #dev It passes(TM) #dev I know its a bit tedious, but I think its better than having to handle consensus/blocks #dev with this you just simulate current state in a height #dev yy it's fine now that I understand it #dev hooray :D #dev my mind is a bit mushed #dev smol and chanells don't wanna play together #dev I think the route is to create a separated StoppableTask for what I'm trying to achieve #dev and these tasks communicate with the channels #dev so not using smol::feature::or #dev What's the idea? #dev we need a listener to listen for incoming proposals from the network #dev so when receiving them, we append them to our current state, and then reevaluate if current best fork has changed #dev so we notify the mining threads to stop and start mining the new best fork #dev meh #dev What happened to having a separate miner program? #dev Mining in darkfid will inherently slow it down a lot #dev Because async will not work properly since the threads will be taken by the miner #dev lol thats exactly the issue I have now #dev fuck I forgot about that idea #dev darkfid sending jobs to the minerd #dev FUCK #dev kek #dev Yeah they can communicate over jsonrpc #dev You can even build an API that works with xmrig #dev (But that'd have to be HTTP so probably better not) #dev well I will do it for our native stuff first and we improve after #dev http? #dev lol #dev Yeah because monero daemon did it #dev ok no worries, this actually saves me a lot of headaches trying to make all the threads play together nicely #dev we just need the darkfid to be the state/network observer #dev and simply send requests to the miner #dev :) #dev darkfi-saurond #dev right now what was happening was all the threads being stuborn #dev since async etc #dev I was going to name it barad-dur #dev Two Towers reference :D #dev darkfi-911.exe #dev since barad-dur is the saruman tower that was mining the forest to create the uruk hais #dev XD #dev Yeah #dev oh no barad-dur is the sauron-eye tower #dev If you're combining async and threaded stuff, you'd usually leave 2 or so threads available for the async executor #dev But obviously, since we can, better to delegate to separate program #dev orthanc is the saruman one #dev Then the kernel will handle it better than we can #dev yeah the problems rise when you try to combine async triggering normal threads #dev so better leave the kernel handle it indeed #dev since it will also decouple/debloat the main daemon #dev ++ #dev : @parazyd pushed 1 commit to master: 13bd090150: contract/money/integration: Gather block reward owncoins #dev : @parazyd pushed 1 commit to master: 036afda345: validator: Configurable fee verification, incomplete... #random agree ircd is obv superior to matrix, just rec Element for companies I have worked with as an easy thing they can do to increase org opsec #markets yes it would be awesome if we were able to fund all our dev ops with passive revenue from our own treasury assets, without having to sell DRK (or to sell any of our treasury assets either). Creates a much more virtuous loop where we aren't constantly putting downward price pressure on DRK when we are forced to periodically sell in order to fund ops #philosophy another good agorist community are the Freedom Cells... they do an annual event called the Greater Reset which is 5 days of different solutions to the whole WEF globalist anti-human plan... Parazyd spoke at it last year about DarkFi during the tech day #philosophy https://thegreaterreset.org/ #philosophy Title: The Greater Reset 5 - January 17th-21st, 2024 - The Greater Reset 5: January 17-21st, 2024 #markets errorist: what would you say are the biggest concerns with ve? #random antikythera: lol okay :) #random Also, why is darkfi code not on GitLab? Doesn't big evil MSFT own GitHub? #random drigy: its on codeberg https://codeberg.org/darkrenaissance/darkfi #random Title: darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. - Codeberg.org #random cheers #dev was offline, back now #markets hamletmachine: take Crv (Curve Finance) as an example, even though people lock tokens for years, it didn't help with stabilizing the price of Crv, just an observation #markets would be also nice to borrow against DRK #random https://twitter.com/Snowden/status/1745205885704556848 #random Edward Snowden(@Snowden): "though we're merit neutral i'd like to note that we HATES it. we HATES it, precious. the courtses. the courtses. the filthy little courtses! they STOLE the approval, precious. they took it from us!" https://t.co/TrM7523CWY #philosophy hamletmachine: wow, didn't know about that one, nice #markets fair. tho i don't necessary think the ultimate ve value was for price stabilization as much as presented a way that a large dao/protocol could ensure that its governance would be decided by those had not only had the largest stake, but also the longterm commitment to their decisions (since they had to lock their stake for 4 years) #philosophy will make sure to watch the live stream #markets agree, for governance it definitely helped #philosophy its a solid community. instead of sitting around complaining about all the BS happening in the world, they are just focused on solutions so we can survive & thrive regardless. Tech is a big piece but they spend more time talking about physical/mental health, farming/food independence, sovereign economics/parallel networks (agorism) etc #markets what do you think about having delegates, like some DAOs/L2s do? #markets generally a good thing, individuals will not be as active or informed in governance as much as key insiders. reputation is a good barometer IMO #markets what's the purpose of having delegates? #markets i think whether we use ve- or some kind of delegation method, key would be that we don't create a conflict of interest for the core team & most engaged believers in the health of the protocol to be in a position where they have to sell the DRK (especially at a loss over its future value in a more mature darkfi ecosystem) in order to pay bills etc, as well as lose a proportional % of their #markets governance stake #markets deki: delegates would be someone in the community you trust to have the best interests of darkfi at heart, to whom you could 'delegate' your proportional voting stake #markets ahh right #markets but could change that at any time if they did something shady, or you just felt like taking control of your own voting back #markets yeah so rather than having a lot of people, maybe thousands all voting, you can concentrate that in a smaller pool? #philosophy that's so cool #markets brb #markets the smaller pool of voters would carry the proportional voting weight of the whole group who delegated their stake to them #markets that's right, thanks for the explanation #markets yup, that can be a good thing but I also fear a bad thing, because it creates idols and from what i've seen most people delegate at the beginning and they don't pay attention to governance, they should be paying attention and redelegating their votes to people doing the job better, but they don't always do that #markets makes sense to pay attention to Arbitrum and Optimism governance, lots can be learned over time #markets democracy always results in people "should" pay more attention but inevitablydon't lol #markets :D #markets https://twitter.com/Snowden/status/1745224780196835683 #markets Edward Snowden(@Snowden): "The computer can be used as a tool to liberate and protect people rather than to control them." #dev test #dev test back #philosophy reborn: can you dm me 2xGFDfSQoCdRTHdBBFEKV3E9yZXjrQ6GMNfZDYwradFX #philosophy hamletmachine: cool ty #markets what about having the governance token be different to DRK? #markets wdym, each DAO defined its own gov token #markets s/defined/defines #markets there's no reason it should be DRK #markets same way ETH DAOs have custom token #dev bye #dev : @lunar-mining pushed 2 commits to net_hostlist: c7cf7d861d: lilith: change no hostlist warning to fatal panic #dev : @lunar-mining pushed 2 commits to net_hostlist: 639f1f72bf: store: fix and simplify tests #dev brawndo: around? #dev upgrayedd: I got my code compiling with make clippy, had a to sort out some dependency issues. I did get 4 warnings unrelated to my code changes though, does this matter? Here's one example: https://pastebin.com/NA3Bh9Ak #dev Title: warning: using `clone` on type `Coin` which implements the `Copy` trait --> - Pastebin.com #dev deki: you should rebase master first, so your changes are always on latest master head #dev ah right forgot to do that #dev you know how to do that from upstream right? #dev yes #dev will sort it out now, then recompile #dev : @aggstam pushed 2 commits to master: dc882d256b: validator:pow: decoulbed mine_block() from PowModule so it can be used outside of it #dev : @aggstam pushed 2 commits to master: a27725b58f: script/research/minerd: miner daemon skeleton #philosophy reborn: pls try again if you already tried. my config.toml was fugged up #dev : @aggstam pushed 1 commit to master: 09137d4633: script/research/minerd: handle new request trigger using smol channels #dev brawndo: check this out ^^ #dev deki: thats not how you rebase upstream... #dev upgrayedd: yeah I stuffed it up, trying to force push to overwrite it but I don't think I can #dev should I just delete the branch and do it again? #dev no you can just reset head to here 0152cd422509bbe8ccd1e5a689575facfa876a1d #dev and then do it properly #dev rest head, aka delete all those commits #dev ok so I'll do: git reset --hard 015cd... then do a git push origin *branch name* --force ? #dev yy #dev and for proper rebase: sync your fork master with upstream master, then on your branch: git rebase master && git push -f #dev ok ty #dev that all worked out fine, thanks for your help #dev also ran make clippy and that compiled with no errors #dev gonna go to sleep here, gn #dev test #dev test back #dev Say I want to start a network of local nodes, how do I go about that? Do I hardcode some bootstrap nodes, or can bootstrap addresses be provided as params? How can I check they actually connected? #dev namaku: define local nodes, you mean a local network of your own? #dev upgrayedd: yes, for example for testing #dev namaku: have you checked here? https://github.com/darkrenaissance/darkfi/tree/master/contrib/localnet #dev ah no, thanks. But there are no docs. Is `tmux_sessions.sh` the script to start the network? #dev namaku: what docs do you need in there? #dev its a single script(yeahs the tmux_session.sh) and each nodes config(which describes what each line does in comments) #dev ok ok. I would put at least "run `tmux_sessions.sh` to start this network" (and possibly add requirements if there are any). But that's me. #dev well those files are mostly used by devs to simulate networks, therefore its assumed to know how to run a script and/or have requirements already setup, along with the corresponding binaries #dev but always, feel free to contrib more information if you feel it should have more stuff :D #dev this assumes only project members run local networks. I would dare to say that is not very contributor friendly. For example, DAO builders might want to run local networks #dev How does it assume that? #dev if anything, it assumes that you understand what these files are saying/doing #dev How is that "not very contributor firendly"? #dev I am not trying to be fussy but "those files are mostly used by devs to simulate networks" etc suggests that to me #dev yeah but I'm trying to understand how you are arriving to that conclusion? #dev I didn't say ONLY #dev There should be a docs chapter "how to run your own local network". I know because I was responsible for such docs in my prev project #dev Did you miss this message? upgrayedd | but always, feel free to contrib more information if you feel it should have more stuff :D #dev no, but I first had to ask you to get a link to the codebase, which got us to this conversation #dev and what that supposed to be? #dev the folder was not like hidden or anything #dev s,be,mean #dev You may know the codebase by heart, but "search the whole codebase and you will find" (how do I know I will find?) isn't really contributor friendly in my opinion. Again, not here to start a dispute. This also IS a contribution. #dev lol nobody is disputing, I just don't understand the logic #dev ok #dev a simple recursive grep of the word "localnet" would point you to those files #dev you don't need to know the codebase by heart #dev even simpler, search "localnet" in the repo host(github, codeberg) would point there again #dev I just don't get, how you can come the non contributor friendly statement without doing the bare minimum #dev (and the light gashlighting afterwards) #dev and lastly, since you mentioned docs, did you even checked them? https://darkrenaissance.github.io/darkfi/testnet/node.html?highlight=local#local-deployment #dev Title: The DarkFi Book #dev (again pointing to same scripts) #dev maybe coz I felt lightly gaslighted first (it's a single script! do the bare minimum!). Stopping here. #dev lol #dev how did me describing the folders content felt gashlighing? #dev anyway good laugh thanks :D #dev upgrayedd: are my latest changes for the PR okay? I've run make clippy, running make test and it's passing everything so far (taking a while though) #dev has anyone got this project compiling on a macOS? Or is it only meant for linux distr? #dev greets #dev greets #math any recommendations for learning cryptography? Books or YouTube etc #math my last elective at university was a cryptography course but it was merely an introduction, plus very theoretical heavy #math Boby and Alice were there too lol #math *Bob #math I can send my exam notes from back then if anyone's curious, feel free to reach out: 5oyX9YVuLbi1SGyiAt9yGzR7nYqaRHG241qcjE9z5rzm #dev anyone else follow Matthew Green? He's a cryptographer and professor, if you use twitter he's worth following, although he doesn't always talk about crypto stuff, he does have a blog: https://blog.cryptographyengineering.com/ #dev Title: A Few Thoughts on Cryptographic Engineering – Some random thoughts about crypto. Notes from a course I teach. Pictures of my dachshunds. #random https://bashify.io/img/ec37d108ab7d5fce5208bf5aad682690 #random ffs #random https://ibb.co/BybKKyF #random Title: dawn hosted at ImgBB — ImgBB #random ^_^ #random haha classic #dev gm #dev hey #dev deki: you should squash the commits to a single one #math what do you mean by learn? #math like the absolute conceptual basics or you want to be a cryptographer? #math do you know what a zk proof is? i would first learn how groth16 works and write a simple prover in sage #dev ++ #dev skoupidi: sure, making sure I've got the right command: git rebase -i HEAD~n or git merge --squash? #math antikythera: yeah I meant more in terms of concepts that are relevant to what is being developed here. So yes ZK proofs are one of them, I've been going through a course someone sent on the telegram chat. Haven't heard of groth16 #dev deki: git rebase one, as you want to squash them in your own branch first, not merge them to master #dev upgrayedd: okay thanks #dev to verify you did it correctly, the resulted commit changes must the identical to current PR ones #dev https://github.com/darkrenaissance/darkfi/pull/248/files #dev Title: fixing hardcoded value for decimal places to constant by deki-zedd · Pull Request #248 · darkrenaissance/darkfi · GitHub #math just study groth16 from online tutorials #math study this https://medium.com/cryptoadvance/bls-signatures-better-than-schnorr-5a7fe30ea716 #math Title: BLS signatures: better than Schnorr | by Stepan | Crypto Advance | Medium #math and learn about elliptic curve group law, and what is a finite field #math you can play around in sage with them #math then you're ready #math antikythera: awesome! tysm #dev okay just squashed all commits into one with a single message #random how does everyone interact with the ircd chat? Via a computer or android smartphone? If it's android do people have a preference for which one? #random I'm using my windows PC running wsl atm #dev : @aggstam pushed 1 commit to master: 7c9b3549cf: darkfid2: use minerd to mine blocks, validator: cleaned up threads info as its not longer required #random i'm interacting via my computer, ubuntu box #random you could ssh to your wsl instance and chat from mobile but you need to close ircd/weechat locally and open it from ssh #random maybe you can run a second instance with some hacks but haven't tried yet #random errorist: or you can use a multiplexer to detach the session #random like tmux or screens #random yeah I've got an iPhone and was looking at what ssh type apps they have for that #random upgrayedd: oh that's cool #random will try it out #random for example in tmux: you start 2 panes, one for the daemon, the other for the client(weechat) #random to detach: ctrl+b->d #random to attach to active session: tmux attach-session -t 0 #random that session will be persistant through your ssh logins #random so your ircd combo will always be active, and you can remote access it #random another option is to setup weechat as a server #random I really want to get a second hand android to try this #random dope #random deki: you should be able to find a ssh client for ios #random I'll try that first, I'm just assuming apple being apple it will block somewhere #random :D #random :) #random upgrayedd >>> I agree it's better to run Weechat as a server #random deki >>> get a google pixel and install grapheneos on that. there is loads of pixels for sale locally as people want to ugrade to avoid looking like plebs. #random mosh: yeah I know, just presented the much quicker/simpler approach #random missed that bit #random m0sh: thanks for the rec, I've been out of the loop with android so didn't know about grapheneos #random last open source OS I knew about was cyanogenmod #random deki: thats renamed to lineageos #random ah right #random super easy to install, you just need to enable anroid to allow the installation. #random yeah some ppl like lineage . i mean it is closer too stock android in appearance by default #random definitely keen to use something more privacy oriented #random I nearly bought a Pinephone but decided against it because of the reviews #random yeah the pinephone is in alpha/beta still. this is the issuee with open source hardware and software in general it can not fund the devs needed to develop a merket ready product #random indeed, especially with hardware. I used to work as a hardware engineer, and PCB design is tricky, but especially when you're dealing with the sort of signals a smartphone requires #random imei randomizing should be as easy as mac addres randomizing #random m0sh: can you randomize imei directly on grapheneos? #random imei/imsi seems to a be an issue with anon comms #random still haven't gotten a banana phone #random errorist >>> not that i have seen #random would be an amazing crossover #random upgrayedd: https://ibb.co/njqzjGz #random Title: Screenshot-20240112-145253 hosted at ImgBB — ImgBB #random so cool #random need to buy you a beer #random beers are always welcomed :D #random ooh that looks very pretty #dev anyone here use Cairo? It's very similar to Rust syntax wise #dev used for Starknet which is a layer 2 for ethereum #random Hey guys, I am just talking to a collegue and he mentioned ator protocol. Tor based privacy. Anyone has an opinion on it? #random I would like to do my research about it but thought to ask here first #random I iamgine building on top of tor would be a bit unproductive for a big project because it is a "slow" tech. I prefer if they would be building on top of something like 'nym' networks #dev : @Dastan-glitch pushed 1 commit to master: f46eb4c0e4: src/event_graph: request and reply multiple events #dev upgrayedd: ^ chaotic sync down to 3 seconds from 7 #dev 00:24:02 [INFO] [EVENTGRAPH] Fetching events #dev 00:24:05 [INFO] [EVENTGRAPH] DAG synced successfully! #dev : @Dastan-glitch pushed 1 commit to master: dd43ff2bfd: remove unused import #dev hihi #dev gm #dev : @Dastan-glitch pushed 1 commit to master: 6fb5083a4e: spec: change from blake3 to blake2b and add explainer why #dev congrats dasman, lets pick up the pace so we can ship mainnet #dev gm #dev or good evening from down under #dev did you guys change to blake2b because it's more secure? I remember discussing it a few days ago when blake3 came up #dev https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#hashing-to-fp #dev Title: The DarkFi Book #dev check your logs and the comment in the code #dev ty #dev dasman: yo gj! have some comments tho: #dev https://github.com/darkrenaissance/darkfi/blob/f46eb4c0e4d8a6cb53e1fc8a5b8b52fed1bc8547/src/event_graph/proto.rs#L416-L442 #dev 1. in this loop, you should use events reference, don't clone the vec #dev 2. genesis timestamp should be retrieved outside the loop once, so you don't constantly hit the RwLock on each iter #dev 3. same for bcast_ids, grab the write lock outside the loop once, unlock after all iter has finished #dev 4. I don't see the request/response vector size limit #dev 1-3 are memory/locks optimizations, 4 is prob missing impl #dev antikythera: are we chaning the blake2b everywhere? #dev if not: "DarkFi uses BLAKE2b" is wrong, as its just the DAO, where everwhere else we use blake 3 #dev https://github.com/darkrenaissance/darkfi/blob/master/doc/src/spec/crypto-schemes.md?plain=1#L89 #dev upgrayedd: does my PR check out ok? Asking so I can go onto another task #dev deki: code wise looks fine, although I'm not sure how you tested it compiles/works #dev I ran make clippy and make test, both passed with no errors if that's what you mean? #dev drk is not a workspace member, it won't be included in those #dev ah I see #dev we can leave it at limpo until drk is integrated again back to workspace #dev upgrayedd: thanks, will correct that #dev actually (re-reading) the section just claims we use blake2b instead of blake2s #dev if we use blake2s, we could then add we use that as well #dev (it doesn't say anything about blake3) #dev antikythera: yeah the correct approach is to specify what is used where #dev upgrayedd: ++ #dev ty #dev dasman: mine went to 2sec, don't recall what was before tho #dev upgrayedd: yours was 5 #dev noice so >2x speedup #dev yups :D #dev I reckon the limit will lower it, but still thats impressive #dev if you consider we went from unknown time(due to eternal loops, deadlocks, etc) to under 10< for 100k messages sync #dev (don't forget this is optimal net conditions, everything is local, we just test the sync algo) #dev correct, I'm aware of that #dev will make the above changes and test online, and we'll see #dev dasman: lmk so we can test it together, also over tor #dev our initial testing was good, so I reckon it won't change it terms of correctness but you never know #dev especially since a p2p upgrade is comming #dev : @Dastan-glitch pushed 1 commit to master: 9257e01e35: spec: DAO::mint() and DAO::propose() #dev : @lunar-mining pushed 3 commits to net_hostlist: 40619581cd: store: reduce LOC in hostlist queries and update usage.... #dev : @lunar-mining pushed 3 commits to net_hostlist: 765bd819b2: net: change unwrap() to expect() on hostlist queries #dev : @lunar-mining pushed 3 commits to net_hostlist: 3f51d80438: chore: fix test fixes #dev : @Dastan-glitch pushed 1 commit to master: befba39321: spec: reword section on blake2 #philosophy https://en.wikipedia.org/wiki/Planet_Nine #philosophy Title: Planet Nine - Wikipedia #philosophy ^ i heard from an astrophysicist this is pretty close to confirmed #philosophy "this hypothetical super-Earth-sized planet would have had a predicted mass of five to ten times that of the Earth, and an elongated orbit 400 to 800 times farther from the Sun than the Earth is." #dev : @Dastan-glitch pushed 1 commit to master: d3be6c2819: src/event_graph: aquire locks outside loops #dev upgrayedd: what exactly do you mean by vector size limit? #dev limiting the number of requested events? #dev yeah have a max value thats configurable by the operator, but always less than a hardcoded constant max #dev also I think Vec::with_capacity() boosts things up a bit, but I'm just testing the extreme case, what do you think? #dev is the vec size(or max size) already known? then yeah it helps #dev why tho? the number of parents (missing_parents) is deacresing as the tree grow #dev wait a sec #dev lets say I have a fresh node and I want to sync the tree #dev I grab everyones current tips and start going backwards from there #dev that vector goes until were? #dev until you get Null ID #dev Genesis #dev yy #dev the problem is, that here: https://github.com/darkrenaissance/darkfi/commit/f46eb4c0e4d8a6cb53e1fc8a5b8b52fed1bc8547#diff-45851d09ef007cfcf178e5079f16af4a026efd24195932064b2afb87983b1c94R72 #dev Title: src/event_graph: request and reply multiple events · darkrenaissance/darkfi@f46eb4c · GitHub #dev I can nuke your node with a veeeeeeery long vector #dev effectively ddossing you #dev so by setting a max limit, we protect these cases + another way to find mallicious nodes #dev so we have a config value of how many we request from others, sending it along our request #dev and the other node checks that that value is less than the hardcoded max everyone follows #dev similarly: https://github.com/darkrenaissance/darkfi/commit/f46eb4c0e4d8a6cb53e1fc8a5b8b52fed1bc8547#diff-45851d09ef007cfcf178e5079f16af4a026efd24195932064b2afb87983b1c94R77 #dev Title: src/event_graph: request and reply multiple events · darkrenaissance/darkfi@f46eb4c · GitHub #dev when we receive the response, an attacked can flood us with events #dev so we can quickly check that the response vector is <= the max we have(which we requested) #dev so if I ask for max 10, the response must contain max 10 #dev okay makes sense against ddos, but just to make it clear, we don't request all the events, we request missing parents as vec and reply them back #dev oh so that vec is for a single events parents? #dev correcr #dev then the max is already set, iirc 5 #dev correct #dev that's why I was confused #dev which we should again check for consistency #dev so in the request #dev we ask for some events parents, or their id directly? #dev yeah you request missing parents Ids #dev for a single event tho right? #dev yes #dev so we went from asking each parent individualy, to asking them all in one request #dev right yes #dev you know you can speed this up even more right? #dev how? #dev instead of asking a single events parents, ask for multiple #dev but I guess since we ask different nodes for different events that wouldn't make sense #dev but again you're syncing you go backwards you don't have events more than you get #dev yy I was thinking something like: #dev lets say tips are 10 #dev ask for all 10 at once #dev for all their parents #dev so lets say each one got 2 parents, you will get max 200 parents back #dev but right now we loop and ask different node for each event right? #dev you could make something like: N / number of nodes, and ask each node for all those #dev yes, once you get it you break the loop and go to the next one #dev so if you have a single peer, you ask the parents for all 10 events you got #dev if you have 2 peers, ask the first one for the first 5 parents, and the second one for rest 5 #dev and go on and on backwards #dev aha #dev that will be cool, I'll work on it #dev you see the speedup now? #dev yy #dev good #dev I don't think it introduces complexity, since right now #dev for example if you got 2 peers, you will ask: #dev first peer: [0, 2, 4, 6, 8], second peer: [1, 3, 5, 7, 9] #dev but that would happen as individual requests inside the loop #dev divide and conquer :D #dev while you can ask each peer directly for the tips #dev since you already know how many requests you will make to them #dev so instead of requesting first peer for 0, after a bit for 2 ... #dev you ask directly for all of them #dev hence why we also need limit, since the response must always be <= 5 * request_vec.len() #dev it only needs a good handling in case a peer doesn't respont #dev but I guess that means the tips will stay in the map and will ask on next iter #dev Okay now I'll just divide my requests between peers and see what happens, I'll keep you updated #dev noice, just introduce some randomness in the requests, just for extra entropy #dev like don't do: first: [0,1,2,3,4] second [5,6,7,8,9] #dev #mansloveentropy #dev yy #dev gm #random test #random test back #random test #random test back #dev greets #dev : @Dastan-glitch pushed 1 commit to master: bba2c5472a: make DAO nullifiers the same as money, otherwise we can't detect whether the coins we're using were already spent or not. Having access to a set non-membership merkle tree here would fix this. #dev gm, I've noticed a lot of places in the code where it says 'TODO' or 'FIXME', what's the protocol for doing these? Do you create an issue in the github repo, or just create your own branch and notify people here? #dev deki: just ask here before you start in case someone else also working on it #dev okay thanks #dev or if anyone has tasks for me, I'm open. Keep in mind I've only recently started with Rust (but know python/C some C++) #dev everything is here https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: The DarkFi Book #random kopachke: sounds like nym but for tor instead of mixnets #random seems like they're noobs though with no idea what they're doing #random the team page is the hardest cringe i've ever done #random i think tor made a post saying they don't condone it or sumn #dev : @Dastan-glitch pushed 1 commit to master: fc68e1b113: spec: DAO::propose() nullifier #dev : @Dastan-glitch pushed 1 commit to master: 9ec277abee: spec: add money contract with money transfer #dev : @lunar-mining pushed 6 commits to net_hostlist: b38a1267fb: store: remove redundant else clauses #dev : @lunar-mining pushed 6 commits to net_hostlist: e40405a257: store: bug fix... #dev : @lunar-mining pushed 6 commits to net_hostlist: 3abd2c62bb: net: don't hide connection upgrade inside perform_handshake_protocols()... #dev : @lunar-mining pushed 6 commits to net_hostlist: bd0c7684c8: outbound_session: replace downgrade_host() with `rejected` vector... #dev I have a quick question for any devs. The chat logs that are on agorism.dev/logs, anyone know how are they being pushed to the server? #dev I've read weechat docs, so i know where my own logs are, just wondering what the best way would be to mirror/host them? #dev yevesedwards: its a simple irc bot listenning in configured channels and appending each message to a log file, then you expose that log file on the server #dev yvesedwards: check here for inspiration https://github.com/darkrenaissance/darkfi/tree/master/bin/darkirc/script #dev awesome, thanks for the info #dev hey yvesedwards, welcome #dev hey run #dev !list #dev No topics #dev !topic net upgrade status #dev Added topic: net upgrade status (by rún) #random boobs because of thei website or something else too? #random noobs* lolz :D #dev I'm trying to create a "kbei #dev create a "bridge" that doesn't use telegram, not even sure it's useful, just fucking around, just need a better way to host it #random test #random test back #random test #random test back #random hm, i don't get testback in #lunardao #random miagi: testbot doesn't work in every channel #random also you don't need it in every channel, since all channels go through your daemon, so if you get response in one channel, you will get in rest of them #dev http://nkl5i6mlugtmc22mfhmhmhikekjvfnnsa7u5546cfzei3hxqq7nhjvid.onion/darkfi/ #random testing http://nkl5i6mlugtmc22mfhmhmhikekjvfnnsa7u5546cfzei3hxqq7nhjvid.onion/darkfi/ #dev yvesedwards: lol so you wget the log file each time from agorism.dev? #random 🔥 🔥 🔥 #dev well for the test I have, that's why i was asking about hosting logs #dev it's not dynamic, only gets text file when the page is loaded #dev you can change the text file it points at and it's basically a template for any chat that has a hosted .txt log #dev gm #random test #random test back #random test #random test back #dev gm #dev gm #random test #random test back #dev : @Dastan-glitch pushed 1 commit to master: 3e04487447: spec: DerivePubKey() #dev brawndo: can u share your pubkey please #random test #random test back #dev gm #dev lou: 6NpTuikk64ejox5h7TyRJG7F3x1ea3tYWs7KwMvFw1HE #dev Share yours as well pls #dev !list #dev Topics: #dev 1. net upgrade status (by rún) #philosophy skull of a 5 year old neanderthal infant: https://ychef.files.bbci.co.uk/1024x1280/p09nm5h5.webp #philosophy another one: https://humanorigins.si.edu/sites/default/files/styles/full_width/public/images/landscape/NeanderthalChild_Dederiyeh2_skull_CC_3qtr_r_l.jpg.webp #dev ty brawndo #dev 5J7EBWjYGkp9FnjSxQBz4Ydw7LWDBsLLAF5wDaUJ9ivn #dev test #dev test back #dev lou: I think I set it up so you can DM me whenever #dev ++ #dev hm something weird's happening #dev Do you see my msgs? #dev I can try messaging someone if you're still having issues #dev What's your dm pubkey? #dev Mine is 6NpTuikk64ejox5h7TyRJG7F3x1ea3tYWs7KwMvFw1HE #dev 5oyX9YVuLbi1SGyiAt9yGzR7nYqaRHG241qcjE9z5rzm #dev ok restarting #dev brb' #dev test #dev test back #dev ircd::irc::client: [P2P] Decrypted received message: Privmsg { id: 2355642742537020626, nickname: "deki", target: "deki", message: "test", timestamp: 1705316382, term: 0, read_confirms: 0 } #dev I don't know why I'm seeing this in my log #dev sorry just adding you to my .toml file now #dev sure sure #dev just sent you a dm #dev hm yeah not seeing it #dev [contact."deki"] #dev contact_pubkey = "5oyX9YVuLbi1SGyiAt9yGzR7nYqaRHG241qcjE9z5rzm" #dev I added this and restarted #dev yes that's right, same for you I have [contact."brawndo"] and your pubkey #dev Weird #dev I'll restart #dev ok #dev back, had to restart pc wouldn't show the channels #dev ok it works now #dev Thanks #dev sweet #dev brawndo: u seeing my dm's? #dev lou: Yes #dev gophers://bitreich.org/I/memecache/c-vs-rust.png #dev true true #dev !list #dev Topics: #dev 1. net upgrade status (by rún) #dev : @parazyd pushed 1 commit to master: 64c80377a2: contract: Move POW_REWARD constant to money contract #dev upgrayedd: How come in the code there's a REWARD constant of 100_000_000 and in the test harness where I created a block, I got a coin of value 2000000000 ? #dev brawndo: that constant shouldn't be used #dev https://github.com/darkrenaissance/darkfi/blob/master/src/sdk/src/blockchain.rs#L134-L155 #dev use this #dev ohh #dev Damn ok #dev iirc pos still uses the constant as we haven't implemented post-pow stuff #dev so I left it there as is #dev Alright, I'll revert the commit I just made #dev just nuke the head XD #dev nah #dev I'll add a comment to the revert commit #dev ++ #dev hey guys I won't make it to the meeting, it's past midnight here so going to sleep. Haven't taken on another task, just been going through the code to see what I can do #dev No worries #dev : @parazyd pushed 3 commits to master: e7f2b556db: contract/test-harness: Update VKS and PKS checksums #dev : @parazyd pushed 3 commits to master: b13464f27a: Revert "contract: Move POW_REWARD constant to money contract"... #dev brawndo: I don't think you needed to update vks/pks #dev They changed #dev In bba2c5472a6b29bc64bd8097d81508f25b0a6f4b #dev Or rather they changed for me #dev did you remove the bins before checking? #dev Lemme check #dev btw irrelevant: wanted to ask you about args parsing #dev https://github.com/darkrenaissance/darkfi/blob/master/src/lib.rs#L75-L76 #dev these I think not needed, since clap already prints them #dev now to the juicy stuff #dev when using flatten and same type of arg, like here https://github.com/darkrenaissance/darkfi/blob/master/bin/darkfid2/src/main.rs#L95-L105 #dev Yeah flatten fucks it up #dev when you try --help you will get error, as clap thinks its a duplicate arg #dev I don't know how to fix it #dev if you skip them, you can't use rest args for some fucking reason #dev like for example to use custom config --config path doesn't work #dev as it doesn't see the config argument #dev so in order for it to work, your --help doesn't #dev noice #dev haven't digged further than this #dev Perhaps we just need to not use clap :p #dev yeah but the error with --help comes from clap #dev as it doesn't allow duplicates, which makes sense #dev so its a lose-lose situation XD #dev : @parazyd pushed 1 commit to master: eecee6c829: contract/test-harness: Include Money::FeeV1 zk circuit for cached vks #dev Why does it happen with --help ? #dev --help will print all arguments along with their description #dev What's the duplicate I mean? #dev oh like in the example #dev ah ic #dev we use flatten BlockchainNetwork 3 times #dev to define each network config #dev That should probably be rewritten to use only one #dev And then branched with exclusive flags: --mainnet, --testnet, --localnet #dev aha like a command #dev ./darkfid {mainnet, testnet, localnet} and then --args #dev Or rather --network=mainnet #dev we already have that #dev it works like that right now #dev you define the network using --network and then we grab the corresponding config via the flattened structs #dev https://github.com/darkrenaissance/darkfi/blob/master/bin/darkfid2/darkfid_config.toml#L12-L13 #dev https://github.com/darkrenaissance/darkfi/blob/master/bin/darkfid2/src/main.rs#L91-L93 #dev ok yeah but rather than having those structs in clap, you can deserialize the toml yourself and find them #dev We do that in darkirc for example #dev oh like we do in ircd iirc #dev Precisely #dev to extract configured contacts #dev Yeah #dev Eventually I'll write a toml lib without deps so we can just do this shit on our own #dev noice yeah that should work #dev Probably just make bindings for this https://github.com/cktan/tomlc99 #dev Title: GitHub - cktan/tomlc99: TOML C library #dev Right now literally every toml lib has a soyerde dep #dev yeah that should go #dev btw I will migrate drk to use tinyjson not serde_json #dev so we can make it working again #dev ah yeah cool #dev I'm not gonna do much in terms of design, I will just make it instead of calling darkfid like we used to, just use a db connector to execute the sql query directly(for wallet stuff) #dev so we pretty much use the exact same queries/tables, just call darkfid only for blocks/blockchain stuff #dev otherwise the whole wallet management should happen by drk itself #random test #random test back #dev ++ #dev : @parazyd pushed 1 commit to master: 511b072c25: validator/verification: Allow fee call at any place in the transaction #dev sup #dev yo #dev hi #dev hi #dev hai #dev can someone run this? im outside #dev !start #dev Meeting started #dev Topics: #dev 1. net upgrade status (by rún) #dev Current topic: net upgrade status (by rún) #dev https://github.com/darkrenaissance/darkfi/pull/249 #dev Title: Net hostlist upgrade by lunar-mining · Pull Request #249 · darkrenaissance/darkfi · GitHub #dev rly short update that i've fixed the small changes brought up by brawndo, fixed a final bug and now this is truly gtg #dev The test unit fails still #dev https://github.com/darkrenaissance/darkfi/actions/runs/7519968805/job/20469120013?pr=249 #dev Title: Net hostlist upgrade · darkrenaissance/darkfi@bd0c768 · GitHub #dev So once that is fixed, we can merge #dev congrats #dev Also run a make clippy #dev ok will fix the unit test, probs something small #dev ++ #dev congrats folks #dev !next #dev Elapsed time: 2.5 min #dev No further topics #dev gg #dev gg #dev gg #dev cargo +nightly test --release --features=net --lib include-ignored #dev this passes for me #dev thread 'net::tests::p2p_test' panicked at src/net/tests.rs:74:6: #dev called `Result::unwrap()` on an `Err` value: SetLoggerError(()) #dev I think somewhere you have the logger reinitialized #dev Use the init_logger() function #dev oh forgot to commit changes to integration test #dev btw the failing test seem to be the event_graphs one #dev so since they use the p2p/net module, you should test those #dev : @lunar-mining pushed 2 commits to net_hostlist: 5f83327aec: chore: delete unused methods #dev : @lunar-mining pushed 2 commits to net_hostlist: 4f4e4fb5b3: net: small integration test tweaks #dev as I assume once they finish testing, they try to shutdown the p2p module, triggering the hostlist save error #dev ah i think brawndo was talking about a different test cos the path is net/test.rs #dev where are you seeing that upgrayedd? #dev assuming due to the previous logs being for event_graph tests #dev https://github.com/darkrenaissance/darkfi/actions/runs/7519968805/job/20469120013?pr=249 #dev Title: Net hostlist upgrade · darkrenaissance/darkfi@bd0c768 · GitHub #dev in this error log #dev oh no my bad lol #dev thread 'net::tests::p2p_test' #dev yeah its the logger error brawndo said #dev discard my ignorance #dev brawndo: i had to change dao vote nullifier to be the same as money which leaks anonymity #dev ok i just committed the latest integration test file so it probs works now, waiting for github to finish running the test #dev cos we test coin is in the tree but it might be a spent coin already #dev we could use set non membership but i dont see how with incrementalmerkletree and i dont want to delay #dev theres a workaround though, just do a money::transfer() call alongside DAO::vote() to upgrade the nullifier #dev fyi #dev I think we're fine with that "leak" for now #dev rún: it will fail again, you should use init_logger or do something like this: https://github.com/darkrenaissance/darkfi/blob/4f4e4fb5b3ada51ce3238ff3cd56519dbb38df10/src/contract/test-harness/src/lib.rs#L77-L91 #dev (read comment why) #dev checking #dev ok got it #dev tnx #dev finish here? #dev or anyone has anything else to share? #dev all good from my side #dev all good, just wanted to share that info #dev https://darkrenaissance.github.io/darkfi/arch/arch.html #dev Title: The DarkFi Book #dev which phase we on? #dev 3? #dev or 2? #dev I would say dcon1 #dev we are still integrating/developing stuff #dev we're going backwards :) #dev 1 step backwards, 2 forward :D #dev !stop #dev !end #dev Elapsed time: 19.4 min #dev Meeting ended #dev Thanks all #dev o/ #dev market is pucking up bigly #dev ACTION getting sweaty #dev yeah shippin szn #dev ty all #dev see u #dev cya #dev : @lunar-mining pushed 1 commit to net_hostlist: ec5abf9683: net: make clippy + fix test #dev https://github.com/darkrenaissance/darkfi/actions/runs/7531379104/job/20499820377?pr=249 #dev Title: net: make clippy + fix test · darkrenaissance/darkfi@ec5abf9 · GitHub #dev now i am seeing this: #dev thread 'event_graph::tests::eventgraph_propagation' panicked at src/event_graph/tests.rs:164:9: #dev i guess this is what upgrayedd was talking about earlier? #dev and this: #dev Error: Clippy had exited with the 101 exit code #dev https://github.com/darkrenaissance/darkfi/actions/runs/7531379705/job/20499957040?pr=249 #dev Title: Net hostlist upgrade · darkrenaissance/darkfi@ec5abf9 · GitHub #dev but 'make clippy' and cargo +nightly test... work fine on my machine #dev lain: clippy is propably runner bugged out #dev run event_graph tests to check the failling one #dev yeah it's the event graph test #dev thread 'event_graph::tests::eventgraph_propagation' panicked at src/event_graph/tests.rs:164:9: #dev Node 0, expected 2 events, have 1 #dev so events failled to propagate #dev the clippy thing seems non-legit cos the command it's using runs fine on my device #dev cargo clippy --message-format=json --all-features --release -- -D warnings #dev this passes for me: #dev cargo +nightly test --release --features=event-graph --lib eventgraph_propagation -- --include-ignored #dev oh hmm #dev it works when i switch of the p2p test #dev s/of/off #dev lain: check if you use same ports #dev perhaps those tests use same ports some some bugging is happenning #dev when they run in parallel #dev i wuz using same ports, but even when i use diff ports, it seems the tests still conflict some how #dev which are the two tests? #dev I can check #dev wait wait #dev trying some stuff #dev https://github.com/darkrenaissance/darkfi/blob/net_hostlist/src/net/tests.rs#L125 #dev just got it working #dev both tests use 13200 as starting port #dev yeah ik #dev what was it? #dev : @lunar-mining pushed 1 commit to net_hostlist: c0e23dca86: net: fix ports on test #dev just the port i think, rerunning tests now #random LunarDAO twitter space with @nullchinchilla of @GephOfficial & Earendil and @harryhalpin of @nymproject on Jan 19th at 15:00 UTC #random Discussing #privacy & #network architecture #random Tradeoffs, design choices, and achieving strong censorship resistance #random mark your calendars 🗓📅 #random nice :) #dev : @aggstam pushed 1 commit to master: f78f1e018d: darkfid2: parse network config directly from the config file, not as flattened arg #dev brawndo: ^^ #dev a bit hacky, but it is what it is #dev hey upgrayedd, can you drop you pubkey, wanna dm ya #dev sadar: FfrD6FVbQZmbA5TQVxeRra4cAryH8ijC9G3r2BieFzSs #dev give me yours #dev C9vC6HNDfGQofWCapZfQK5MkV1JR8Cct839RDUCqbDGK #dev sadar: ready when you are #dev do you see my message? #dev sadar: nope #dev sadar: did you save the config file and restarted ircd? #dev upgrayedd i dropped the wrong pubkey #dev heres mine: 37m4LDGUEaRN4pPf5Mpxp7dphEbRy3Z5EzVbn7u8txWP #dev sadar: ready when you are #dev greets #dev greets #dev gm #dev https://github.com/darkrenaissance/darkfi/actions/runs/7531918209/job/20501526117?pr=249 hey so this check is failing but it's something to do with consensus/ validator stuff, not the network code #dev Title: net: fix ports on test · darkrenaissance/darkfi@c0e23dc · GitHub #dev error[E0433]: failed to resolve: could not find `validator` in `darkfi` #dev same error here: https://github.com/darkrenaissance/darkfi/actions/runs/7531918646/job/20501526993?pr=249 #dev Title: Net hostlist upgrade · darkrenaissance/darkfi@c0e23dc · GitHub #dev finally there's also this clippy check that's failing https://github.com/darkrenaissance/darkfi/actions/runs/7531918645/job/20501526770?pr=249 #dev Title: Net hostlist upgrade · darkrenaissance/darkfi@c0e23dc · GitHub #dev but 'make clippy' works fine on my side #dev output is kind of a mess but if you grep "error" in the above output it leads to validator errors also #dev e.g: ../contract/deployooor/darkfi_deployooor_contract.wasm: No such file or directory (os error 2)\n --> src/validator/utils.rs:92:13\n #dev brawndo: pub const VALUE_COMMITMENT_PERSONALIZATION: &str = "z.cash:Orchard-cv"; #dev thats in sdk constants/fixed_bases.rs #dev should i put that in the spec? I assume halo2 doesn't allow us to custom this #dev : @Dastan-glitch pushed 1 commit to master: f9a8b41657: sdk/crypto: use the same generator for pedersen_commit_base() and pedersen_commit_u64() #dev gm #dev 09:49 brawndo: pub const VALUE_COMMITMENT_PERSONALIZATION: &str = "z.cash:Orchard-cv"; #dev 09:50 should i put that in the spec? I assume halo2 doesn't allow us to custom this #dev Can be changed to whatever, but should be in the spec, yeah #dev I don't like this commit: f9a8b41657 #dev You don't understand how it works and you just made a random change #dev So please revert it #dev pedersen_commitment_base will take a base field element and specifically uses the NullifierK generator since that has special properties inside the ECC halo2 gadget #dev The same way pedersen_commitment_u64 will take a u64 element and use that specific generator in order to perform a 64-bit width range check #dev They're specifically different functions because the _u64 function implies the assumption that you shouldn't commit to something larger than 64 bits #dev ok reverted #dev i ran make test on the repo and it passed #dev : @Dastan-glitch pushed 1 commit to master: 5fb0913cb0: Revert "sdk/crypto: use the same generator for pedersen_commit_base() and pedersen_commit_u64()"... #dev what's special about NullifierK inside halo2 gadget? abstractly they are both group generators and have the same mathematical properties. #dev btw is it ok for me to change use the terminology block instead of slot? #dev It's not about the mathematical properties #dev It's the way they're written in code #dev ok #dev _u64 will enforce a 64-bit range check and uses a different generator to be able to trigger that #dev There's a reason why those constants are implemented #dev https://github.com/darkrenaissance/darkfi/blob/master/proof/opcodes.zk#L5-L7 #dev got you, thanks for clarifying #dev np #dev upgrayedd: what terminology do we use instead of slot? #dev should i say "block height" or "block index"? #dev haumea: block height #dev wdym change the terminology block instead of slot? #dev yo can i merge the branch re: above msgs. the failing tests are related to consensus/ validator, not network code #dev lain: lmc #dev lain: thats not a test error #dev test all passed #dev thats a build features error(make check) which exists for some time in master #dev yeah i meant make check #dev it's failing on a validator thing #dev so can i merge #dev some feature import is missing #dev haven't bothered to check XD #dev i just see 'validator' and go 'not my problem' #dev lol #dev lain: did a quick skim of the changes #dev https://github.com/darkrenaissance/darkfi/pull/249/files#diff-589965138a6b5fa23381966bbd486bcc4e4e6baa774806492d85b60b3386902cR87 #dev Title: Net hostlist upgrade by lunar-mining · Pull Request #249 · darkrenaissance/darkfi · GitHub #dev this file should be using the app name #dev since right now, iiuc, every app that hasn't configured a hostlist file path will use that one #dev yeah correct aside from lilith which is forced to configure a hostlist per spawn #dev we haven't ported the other apps over yet #dev quick q: #dev upgrayedd: currently in DAO/spec i use the term slot everywhere, but you told me it's obsolete #dev will change it now #dev s/slot/block_height/ #dev haumea: I never said its obselete lol #dev ah is it ok then for me to use slot then? #dev I said in PoW its block height #dev or you prefer i use slot? #dev in PoS its slot id #random https://9to5google.com/2024/01/13/youtube-new-wave-slow-downs-ad-blocker/ #random Title: YouTube is slowing down for users with ad blockers in new wave #dev I always prefered block height and you know it :D #random start downloading all the vids you watch #random use this script: https://github.com/narodnik/script/blob/master/ytwatch.py #dev ok gotchagotcha #random test #random test back #dev lain: so the tldr logic is: grab random peer from greylist, if they don't respond remove it from greylist, if they respond add to whitelist and remove from greylist, correct? #dev it should use path::config_dir() tho instead of .config/darkfi as default re: above #dev that's the refinery yes #dev how do nodes get added to graylist? #dev protocol seed and protocol addr #dev nodes send their whitelist (AddrMsg), and when we receive the Addrs, it's added to greylist #dev yeah thats on startup #dev how will this scenario go: #dev not just start #dev I create a node, advertise to lilith, running all good #dev in outbound session, if we don't have connections, we reseed #dev plus protocoladdr is running continually iirc #dev so its lilith responsibility to keep track of live nodes? #dev every node keeps track of nodes #dev but that's lilith's special focus yes #dev aha so in the scenario, I create a second node, connect to lilith, connect to my first node #dev what happens if after a while my first(or second) node drops? #dev will my other node append it to greylist directly, or ask lilith and hope it has checked that node for liveness? #dev lilith's refinery should downgrade the connection to greylist #dev then it doesn't get sent during seed process #dev lilith is not connected to that node #dev doesn't matter #dev lilith has it in the hostlist, refinery pings nodes in the hostlist #dev yeah after a refinery_interval right? #dev yes #dev we can adjust this in settings #dev rn i think it's 10s #dev so the question is, does lilith/node pings all whitelisted members after that interval? #dev ah no it just does that to the greylist #dev exactly! :D #dev sorry for going the long route to get to it #dev just wanted to get you through my thought process #dev yeah i get you #dev so previously, we had a method called downgrade connection #dev so if I understand it correctly, a normal node whitelist is just their connected peers right? #dev which would downgrade a connection from white or anchorlist when we couldn't establish a connection. however i removed this cos it's not in line with the monero impl #dev only lilith has a total "network view" of all whitelisted nodes right? #dev no #dev whitelist is just created from greylist #dev we ping peers and promote them #dev what you are talking about is "anchorlist" #dev anchorlist is when we've actually managed to connect to a node #dev aha, so we got a subset of liliths anchorlist right? #dev no #dev lilith just shares its whitelist #dev all nodes just share the whitelist #dev so everyone got everyone? #dev lilith is not doing anything special aside from running inbound nodes on multiple networks #dev everyone has a hostlist with grey, white and anchor connections #dev ok just trying to understand current topology #dev ppl share the whitelist, and save the greylist when the receive whitelists #dev s/ppl/nodes #dev since if slots counts is big, the network pretty much becomes a mesh where everyone is connected to everyone correct? #dev anchorlist is never shared, it's just remembered by nodes and they try to reconnect to anchor nodes on startup #dev upgrayedd: that depends #dev we have a new flag in settings called 'advertise' #dev if advertise is set to false, you don't broadcast your address #dev so you could be an island just making outbound connections #dev aha ok so anchorlist is pretty much a predefined list of known nodes, and we append to that our whitelisted ones so we remember them on next run right? #dev it's seperate to whitelist #dev it's its own list #dev yeah read what I'm saying #dev we append to the anchor list our whitelisted nodes #dev so basically on outbound connect, we first try to connect to anchorlist, then whitelist, then greylist #dev no there's no appending #dev oh its just in memory? #dev it's stored on disk and loaded to memory #dev as 3 seperate vectors #dev gotcha gotcha gotcha, so anchorlist is pretty much hardcoded as it never changes correct? #dev we remove addresses from the anchorlist if the channel stops #dev session::remove_sub_on_stop() #dev ok so lets go over a scenario: #dev my anchorlist has 5 nodes, empty whitelist/greylist #dev I start my node, with 5 outbound slots, which get filled by my anchorlist #dev will I ask seed? #dev I guess yeah and fill the greylist with the response #dev and then will ping greylist and upgrdare to whitelist #dev does that sound correct? #dev if you've only 5 outbound slots and they all get filled then the outbound session won't trigger the seed sync #dev but if 1 doesn't work, then that slot will do Peer Discovery #dev and do the things you mentioned above #dev wait tho, so I will only advertise to my anchrolist, not to lilith/seed? #dev if you have advertise set to 'true' you will send your addr to the seed node (protocolseed) and other nodes (protocoladdr) #dev ok good continuing the scenario #dev now my anchrolist and whitelist should both have 5 nodes, and empty greylist #dev when I start again, I set slot to 3, so I grab some 3 random nodes from anchorlist, upgrade them to whitelist(already exist there) and I'm good #dev no there's no interaction between anchorlist and whitelist #dev the question now is: how I'm checking the 2 other nodes that exist in my whitelist are live? #dev so my whitelist will still be empty? #dev whitelist will only be empty if the refinery hasn't started yet #dev !topic funcid in coin #dev Added topic: funcid in coin (by haumea) #dev but if we only share whitelists, how I'm I going to share my anchor nodes to another peer? #dev you don't share anchors #dev anchors are only for you #dev aaa like manual peers #dev yeah kinda but used in Outbound connections rather than manual #dev ok, the question is still valid tho, how will we check whitelisted remaining nodes #dev yeah rn we don't do this, there is no "whitelist refinery" #dev we assume if they are on the whitelist it means they are safe, and there's no way to remove them if not #dev i believe this is in line with the monero impl #dev yeah but its not safe #dev since we use pick random nodes from whitelist #dev there is no determinism that a node won't be removed from there #dev hence why lilith we used the ringbuffer #dev to ensure we check everyone at some point #dev just to be clear #dev we don't pick from the whitelist directly #dev yeah but we store it #dev we do: anchorlist, if not anchorlist, whitelist, if not whitelist, greylist #dev we send it #dev not store #dev we store in greylist #dev store in disks #dev yes #dev so on my next run, whitelist already has nodes #dev but when we receive a whitelist, it's stored to grey, and must be pinged #dev that we never check for liveness #dev that's true #dev I'm talking about our own whitelist, not the one we get #dev we never get a whitelist #dev just for sake ofclarity #dev but yes, if we load it from the disk and it has gone offline i see the problem #dev so there's 2 solutions: we save to the greylist #dev (i.e. load the whitelist from disk, append to greylist) #dev making it part of the refinery #dev or we add some kind of downgrade method for if we can't connect #dev rn if we can't connect we just chose annother peer #dev i can check again the monero impl #dev the problem with 1 is that, lets say they node is active when we check it, so we push it to our whitelist, our slots are filled, so we will never check it again #dev but i believe they do not do any "whitelist refinery" #dev for 2 its the same, if our slots are filled, we will never check rest whitelisted nodes #dev no #dev it doesn't relate to slots #dev if slots are filled, no peer discovery is happening #dev if our slots are filled, we don't do a seed sync (this is not my impl btw, preexisting logic) #dev yeah whitelist doesn't relate to peer discovery #dev greylist is the result of peer discovery #dev yeah but we use that greylist to fill the open slot #dev hence the connection #dev peer discovery -> recv greylist -> greylist refinery -> add to whitelist #dev sorry i dnt follow #dev aha so when we try to fill slots, we only check whitelist right? #dev no #dev we do this: anchorlist, if not anchorlist, whitelist, if not whitelist, greylist #dev the % anchorlist and % whitelist are set in settings #dev so you can say 100% anchorlist plz or 100% whitelist #dev but if there's not enough slots, the algo will still look for slots on the greylist #dev same in monero impl #dev ok sure, but still the problem still remains #dev we never check node liveness once they enter whitelist #dev yeah #dev doesn't matter how they got there #dev i offered 2 solutions above #dev but also monero doesn't do this #dev yy I said refinery is the best option #dev since you want that happenning in runtime #dev not just oneshot and hope for the best #dev ok so everything non-anchor becomes greylist on shutdown #dev (and therefore start) #dev yeah #dev what this means is that the nodes will reply empty Addr message in the time interval before running the refinery #dev but indeed it's safer #dev still imo greylist ping check shouldn't be random, it should be a ringbuffer like we had in lilith #dev can u explain this #dev monero does random #dev since for example this scenario can happen: I'm looking to fill a slot, grab random greylisted peer, they are off, I remove them #dev next peer I grab they are good, I connect to them, ask their list to append to greylist #dev my next iter might brab that peer again #dev ah so ring buffer is more efficient cos no chance of selecting same peer? #dev since it was also in my peers greylist but they didn't remove it #dev yeah the ring buffer always appends new to end #dev so overtime you ensure to have checked everyone at least once #dev ok sure #dev check how it was done in lilith #dev ++ #dev the periodic_purge thing #dev yeah i remember #dev so in the greylist case, you just always pop front #dev : @Dastan-glitch pushed 1 commit to master: f357f1778b: spec: add money coin, current day, pedersen commits #dev fyi that "make check" error also exists on master #dev lain: yy I wrote that earlier :D #dev ah missed it #dev kk i will make these 2 changes #dev : @Dastan-glitch pushed 1 commit to master: 50522bd7db: dao/spec: rename all mentions of slot to blockheight #dev : @Dastan-glitch pushed 1 commit to master: 8f405308b1: test-harness: s/slot_to_day/blockheight_to_day/ #dev brawndo: here? #dev the question is do we prefer explicit features set like ["zk", "rpc", "blockchain", "validator"] or since validator contains rest reduce to just ["validator"] #dev i'd just make a small point here: #dev sometimes when building something i specify X, but then it requires W, Y, Z which i have to add manually... that's kinda annoying #dev It seems better to be explicit #dev Since you have the possibility of a feature changing and not implying the other feat #dev yeah I aggree explicit is better, just asked to be sure #dev haumea: annoying in what sense? #dev nvm overridden lol #dev lol just asked of curriosity #dev is it something like : import lib::* vs import lib::{foo, bar} #dev What's happening with the p2p branch now? #dev Is it done? #dev tldr of discussion above: some minor tweaks re whitelisted peers liveness check are required #dev current tests are passing, I'm fixing the feature issue now #dev upgrayyed: can u check dm please whenever possible. #dev lou: whats your pubkey? #dev haumea: I changed the tx fee call to be able to be anywhere inside of a tx #dev haumea: Since the fee call is 1 input and 1 output, and if we do not allow spend hooks, what do you think about making the fee call free? #dev brawndo: thats illegal XD #dev So it doesn't count towards gas cost #dev We'll have to constrain it a bit so it is not abused, but it could be good #dev upgrayyed: one sec #dev Otherwise we can also make it cost money #dev Because it can be (ab)used to make a transfer #dev what's the benefit of no gas cost? it would make calculating the gas fee slightly harder but nbd #dev brawndo: since nothing stopping me from havving 2 fee calls, aka first for tx fee, second to transfer, it should cost money #dev i mean the cost is still there, but now it's hidden / not explicit #dev upgrayyed: 5J7EBWjYGkp9FnjSxQBz4Ydw7LWDBsLLAF5wDaUJ9ivn #dev lou: I got you, shoot whenever ready #dev haumea: It would actually make the fee calculation easier, not harder #dev If it were free #dev But yeah there is space for abuse #dev i mean looking at the cost of tx, as upgrayedd said #dev upgrayyed: just dm'ed you. tell me if it u didnt get anything #dev if it's free then it's subsidized by the network/miners #dev do we want people paying fees? then by making it free, we incentivize that #dev Fees will be mandatory #dev it's not a crypto question, more a token eng one #dev I'm saying every tx will have to have a tx fee call #dev yeah but i mean more calls .etc #dev lou: nothing, do you have my correct pubkey? #dev upgrayyed: probably not. Can u send please #dev lou: FfrD6FVbQZmbA5TQVxeRra4cAryH8ijC9G3r2BieFzSs #dev ty #dev lain: there is a call to make fees, but it has a cost. should it be a free call or calculated as part of the fee? #dev is there a benefit to making it free #dev Probably not #dev Actually if it's limited in what it can do, I think it has a fixed gas cost in fact #dev couldn't you spam free gas queries if so #dev It can be constrained to 1 fee call per tx or stuff like that #dev But nvm, just an idea #dev if there's no cost, we just calculate the cost of tx inputs, otherwise we calculate cost of tx inputs + fee function call? #dev If the fee call is not fixed gas, then: #dev 1. Calculate the gas used without the fee call #dev 2. Create the fee call to account for that used gas #dev 3. Calculate the gas used _with_ the fee call #dev 4. Replace the fee call with result of 3. #dev 5. Hope that it's enough fee #dev If the fee call is free OR fixed gas, then: #dev 1. Calculate the gas without the fee call #dev 2. Append the fixed gas needed for the fee call #dev 3. Create the fee call to account for 1. and 2. #dev . #dev So provided that the fee call is constrained in the sense that it just takes 1 input and makes 1 output, and does not allow spend hooks, thinks become quite simpler #dev ++ #dev i think a small fixed fee is probably fine #dev Not fixed fee in terms of price, but fixed in the used gas #dev ++ #dev brawndo: since fee call is the same across all txs, isn't the used gas constant also? #dev Fixed fee can cause spam attacks like the problem that zcash had #dev upgrayedd: Yeah that's what I'm proposing #dev I thought it was a given, based on code #dev XD #dev ;) #dev ok #dev I'll start cleaning up the host wasm functions and get the gas pricing happen there #dev do we still have spam risk if we have contraints on the fee call? #dev ACTION chilling waiting make check to finish #dev oh yeah sorry when i said simpler, i meant validator side #dev wallet side is slightly more complicated #dev but in general shifting complexity to wallet is better #dev : @parazyd pushed 1 commit to master: 0e6f51e895: chore: Update copyright year in license headers #dev lain: The spam risk is only if we do not have dynamic fee. e.g. charging 0.0001 DRK for ANY transaction #dev But we won't have that. The pricing will depend on what the tx does #dev brawndo: shouldn't we limit the 1 fee call per tx tho? #dev so you can't transfer using that instead of money::transfer #dev Yeah we probably should #dev thats on validator side tho, in verify tx #dev mhm #dev I mean outside of wasm #dev :D #dev ah got it, yes fees should be dynamic, i meant the fee call itself could be fixed gas price for simplicity #dev (as an alternative to it being free) #dev instead of limiting to 1 fee call in a tx on validator side, can we instead add that rule to propagation rules in p2p layer? #dev esp since it's related to fee rules / gas pricing anyway #dev haumea: if the tx is not valid you don't propagate it #dev i'm saying to just check the rule in propagation rules, not for validation #dev tx being valid is the propagation rule #dev there are node validation rules R, but there are also network propagation rules S #dev S is a subset of R #dev sorry i mean R is a subset of S #dev but they are not equal #dev S has more rules than R #dev i'm saying the fee rules, including 1 fee per tx should go in S, but not in R #dev does that make sense? #dev no XD #dev why? #dev where does S exist? #dev I mean who/what defines it #dev the nodes define it as relaying rules, but not for validation #dev it's for unconfirmed txs relayed in the p2p, but distinct from block validation rules #dev They're the same rules #dev ^^ #dev you're checking the fee in the block validation? #dev that doesn't seem like a good idea #dev Of course #dev Why? #dev why have unchecked/unvalidated txs floating around? #dev you misunderstood #dev ok this is kinda important to understand #dev 1. the miners decide the fees themselves (it's a fee market). so when we accept a new block, we don't check the fees of the txs in the block. #dev No the miners do not decide the fees themselves #dev so it's up to the miner to reject the tx or not depending on the fee set, not by the nodes validating the blocks (because then you would reject blocks which include txs that have insufficient fees) #dev This is not Bitcoin #dev the fee in the tx must at least cover the gas cost, so there is a hard lower limit #dev that's what we check #dev wait are we doing fee market or dynamic fee pricing like ETH? #dev The fee is based on consensus #dev And you verify the fees in order to validate the coinbase transaction, where you see what fee is burned and what fee is rewarded to the miner #dev if that fee is sufficient, the miner will chose to include tx or not, but it must be valid in terms of sufficient fee to cover gas cost #dev There is the minimum fee of the gas cost #dev Anything extra is miner's tips #dev ++ #dev ^^ #dev sure lets exclude the minimum, that's another thing #dev we can't exclude the minimum #dev thats what makes the tx valid or not #dev i mean i'm not talking about the minimum right now #dev you could have big fee txs or small fee txs #dev we don't care about extras in terms of validity #dev as long as fee covers base gas cost, its valid #dev Yeah the extra fee is just MEV #dev the point i'm making is that nodes do care about the fee #dev yeah thats MEV as brawndo says #dev whether they relay the tx or not #dev it has nothing to do with validity #dev + other conditions #dev They should #dev Otherwise they would relay spam txs all around the network #dev That's such an easy attack #dev i'm talking here about 'other conditions' for relaying txs in the p2p network #dev Fill the mempool for free #dev that's where fee discrimination should happen, not in block validation rules imho #dev Why would you have 2 rulesets when you can have one? #dev give an example of 'other conditions' #dev It doesn't make sense in any condition to me #dev because the additional rules let you add more restrictive conditions to txs without baking them into the validation rules #dev You're fragmenting consensus #dev its not fragmenting consensus #dev And the codebase #dev it's allowing stricter rules on the txs while keeping the validation rules to their minimum #dev we can then later make certain rules less restrictive without affecting consensus rules #dev give an example of such a rule #dev in bitcoin this is called policy vs consensus rules #dev https://bitcoin.stackexchange.com/questions/100317/what-is-the-difference-between-policy-and-consensus-when-it-comes-to-a-bitcoin-c #dev Title: What is the difference between policy and consensus when it comes to a Bitcoin Core node validating scripts? - Bitcoin Stack Exchange #dev ok boomer #dev lmao #dev We don't have the Bitcoin fee policy #dev Nor I think we should #dev ++ #dev it's not just fee policy, it's other stuff like only having 1 fee call per tx #dev i have no idea why you'd put that in the consensus #dev 1 fee call per tx is a validity rule #dev tx validity rule #dev why not put it in the tx propagation rules? it allows you to be stricter with what kind of txs you allow, without compromising the consensus checks #dev its already in tx propagation rules #dev as the tx propagation rules is : tx be valid #dev anyway i put the info there, you can read about it #dev if you exclude it, I can create a block with a tx I haven't propagated that has no fee #dev "The purpose of policy checks is generally to (a) close off DoS vectors and (b) to make future consensus changes safer to deploy, by preventing relay of transactions that would violate such future consensus changes well in advance." #dev free tx #dev look you want people to be able to make cheap txs and have them get confirmed, but they might be too cheap for people to propagate so only special miners will confirm them #dev but there are other reasons to restrict certain unsafe txs or limit usage without adding specific consensus rules #dev you don't want to put everything in consensus since it's final #dev bruh we are talking about a very specific tx validation rule #dev not some random rule #dev the rule you are describing is: if fee is sufficient && fee > than_my_prefered_fee thresshold -> propagate #dev haumea: You don't have a good understanding of our tx validation and it's leading you in the wrong direction #dev the tx must always be valid when propagating, so the fee must be sufficient, thats what we check and want inside tx validation #dev ok, well plz consider the info shared, i won't carry this on #dev It is noted #dev upgrayedd: if len(tx.fee_calls) == 1 -> propagate #dev (not in consensus) #dev that rule doesn't check tx validity, why would you propagate an invalid tx? #dev if everyone has set that rule, the tx will simply get floating around for ever #dev since noone would ever check it #dev i mean in addition to the consensus rules, not instead of it #dev yeah thats why I'm saying, sufficient fee is a consensus rule #dev and consensus rule should always be checked before propagating #dev if consensus_rules_is_valid() && ... && len(tx.fee_calls) == 1 -> propagate the ... stuff is p2p propagation policy, not consensus rules. It's an additional set of rules alongside the consensus rules. #dev sufficient fee is a consensus rule, but my node might only propagate high fee txs #dev this is needed to allow txs with high fee to go through in times of high traffic #dev yeah I understand the usage, but thats "optimization" ruleset for net congestion, they don't change the fact of basic consensus validation #dev that means that the node holds a "cache" of said txs to propagate at a later time #dev we don't have that(yet) #dev these rules, whatever they are, don't take from the fact that consensus rules must always be valid #dev yeah but i mean you can also add rules there like disallowing certain host functions or certain calldata if we are worried something is unsafe #dev also said tx, might be invalid later #dev but without needing to add these restrictions to consensus #dev yeah yeah, but still, thats a per node rule set, not global/consensus #dev i was saying the limits on the usage of fee calls are better there instead of consensus #dev the min fee thing is a global/consensus rule, hence it must always be true(aka tx being valid) #dev no its not #dev I gave an example why #dev me mining a block with a tx I never propagated that is not valid for that rule #dev when I propagate the block, since the rule is not a consensus one #dev other nodes won't check it #dev so what? #dev wdym so what? #dev you have 2 fee calls in a tx #dev what's wrong with that if you mined it #dev cheaper transfer #dev so abusing the protocol #dev yeah but what's wrong if it's priced into gas calcs? #dev its not, thats the issue #dev fee call is constant gas #dev yeah but it's priced in #dev (not subsidized by the network) #dev + it's disallowed on the p2p layer so it's very hard to do #dev its gaming the system, it doesn't matter if its priced in, then whats the point of having a money::transfer? #dev + its not hard to do #dev yes it is hard to do, you have to mine a valid block or find someone who does, then pay them to mine your tx #dev https://github.com/bitcoin/bitcoin/tree/master/src/policy #dev here for example shows how replace-by-fee is implemented using this too #dev checks on tx calldata (script) to mitigate DoS attack vectors: https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L177 #dev there is another abuse: tx with empty fee, that means I can produce a block with free txs #dev the fee call is there, but its not sufficient to cover gas cost #dev then it fails the consensus rules and the block is rejected. the consensus rules MUST be valid for blocks to be accepted. #dev I'm not arguing wether or not overlaying policies shouldn't be used/are not good, I'm saying that that specific rule, aka single fee call with sufficient value must be a consensus one, not a policy one #dev i'm saying the limit on only 1 allowed, and not for example 2, 3 or more, could be a policy rule and imho should not be a consensus restriction #dev I dissagree, on the premises on not making wacky (ab)use of protocol #dev : @aggstam pushed 1 commit to master: 78a47053f1: contract/money/Cargo.toml: added missing darkfi validator feature #dev upgrayedd: about the hostlist default path, are you saying it's better to leave the default empty and have be manually configured by apps? otherwise not sure what you mean by "this file should be using the app name" #dev I mean the default one should use the app name(you can get that using the CARGO_PKG_NAME) #dev ah kk didn't know that, tnx #dev so for example if in darkfid I haven't configured a path, it should be : ~/.local/darkfi/darkfid/hostslist.tsv #dev ++ #dev in darkirc -> ~/.local/darkfi/darkirc/hostslists.tsv #dev you got it :D #dev and with config_dir() first i think #dev for cross platform #dev yy, just use app-specific folder #dev ++ #dev hence why I used .local not .config #dev since these are runtime produce stuff, not init configuration #dev ++ #dev : @parazyd pushed 1 commit to master: e034470611: runtime: Minor comment cleanups and log verbosity. #dev btw feature error is fixed, make check should pass now(TM) #dev Sweet #dev test #dev test back #dev sry disconnected for a sec #random test #random test back #dev nothing missed #dev : @parazyd pushed 3 commits to master: 87a85e047f: runtime/import: Enable pages assertion in put_object_bytes() #dev : @parazyd pushed 3 commits to master: 3240221614: runtime/import: General function cleanup and use darkfi_sdk error codes... #dev : @parazyd pushed 3 commits to master: e340fa6824: sdk: Apply relevant changes related to 3240221614727e7bb754de6b33397dc90a92ddee #dev Let's see if tests pass :p #dev ACTION runs make test locally #dev Make sure to recompile contracts #dev I never updated my vks/pks so we are good XD #dev mosts contracts test seem to pass #dev Most? :D #dev No you need to recompile the wasms #dev Because sdk code changed #dev https://github.com/darkrenaissance/darkfi/blob/master/Makefile#L133 #dev everything passed #dev Kewl #dev : @aggstam pushed 1 commit to master: e829424a9c: sdk/util: added block height retrieval functions and use them at appropriate places #dev brawndo: repo is green again :D #dev haumea: check latest commit, now you don't have to use convoluted terminology :D #dev ^_^ #dev : @aggstam pushed 1 commit to master: 0b63956945: contract/money/error: added missing error code #random test #random test back #dev upgrayedd: something we overlooked in the ring buffer vs random peer selection discussion is that the hostlists are ordered by "last seen" #dev with the most recently seen peers at the top of the list #dev i'm not sure about combining the ring buffer with this existing ordering #dev hm let me think #dev that fact that they are ordered tho has nothing to do with selection right? #dev as its still getting a random from that list #dev not rn, but if we add a ring buffer then it impacts #dev yeah it will #dev how/where is this order used? #dev it's used when we fetch addresses to connect to #dev so chosing the ones with the mostly recent last_seen fields first #dev then can't that act as the ring buffer? #dev yeah that's what i'm wondering #dev if it's kinda redundant given this pre-existing ordering #dev well if you always grab the last in that list, its the same as using a ring buffer but backwards #dev since if they respond they will get on top of the list(as last seen whitelisted) #dev if they don't they get demoted so greylist will handle them #dev we were talking about using the ring buffer in the greylist refinery tho #dev why does greylist have a last seen? #dev if they respond they get promoted to whitelist #dev every host list is a Vec #dev nodes send whitelist which is a Vec #dev on receiving the whitelist, nodes add it to their greylist #dev then they ping the entries #dev if the node is active, it is promoted to whitelist with an updated last_seen #dev when for example in peer discovery you receive new nodes to append to greylist #dev to you sort it again? #dev and based on who is the last_seen field there #dev if we do end up chosing connections from greylist (this can happens if we have no whitelist or anchorlist connections) it will chose from the one with the most recent last seen field first #dev us or peer? #dev yes we always sort when we call store() on a greylist (grey, white, anchor) #dev ok then same logic #dev you didn't answer my question tho #dev who sets the last_seen field? us or the peer #dev depends #dev and how is it getting updated, since we don't check whitelisted peers for livenes? just on first attempt to connect to? #dev i am setting the last_seen field of the whitelist and anchorlist hostlists #dev but other nodes set the greylist hostlist (this is their whitelist) #dev s/hostlist/last_seen #dev last seen is set in the greylist refinery #dev wait because the last statement doesn't make sense #dev lemme be more clear #dev is it set only in greylist refinery? #dev because if thats the case, an anchor/whitelist nodes last seen will never get updated if we always connect to it #dev as it will never get downgraded to greylist #dev greylist last seen: sent by other peers, whitelist last seen: set by the greylist refinery (which pings nodes and promotes them to whitelist with an updated last seen), anchorlist: set when we establish a connection to a peer #dev oh yeah you said we always push whitelist to greylist on startup #dev so they get updated by that #dev yep we do that now #dev ok so I would go like: #dev for greylist just keep it random, as it doesn't really matter since the moment we connect they get removed from the list #dev (I assume when in peer discovery we check if received addresses are not already in our lists) #dev for whitelist: since we have the last seen order, you can simply always get the last(oldest) node from the list to check #dev since the order acts as the ring buffer but in reverse #dev we don't check whitelist remember #dev yeah but we said we should #dev or wait #dev no, we just add all the whitelist to the greylist at the end #dev if the channel gets closed we demote them? #dev so it has to go via the refinery #dev no, we never demote, but we do remove anchorlist connections if they disconnect #dev so if a node goes into whitelist, we never move them out while running? #dev even if they disconnect? #dev yes #dev correct #dev well thats wrong #dev it's what monero does #dev we simply take another connection #dev we should demote them when they disconnect #dev why tho? #dev if they go down, why send them to another peer? #dev they go into their refinery #dev so if they are offline, they get removed #dev that's why all recv'd nodes are deemed suspicious and placed on the greylist #dev so we move them from whitelist to grey list #dev s/nodes/hostlists #dev node1 sends faulty whitelist to node2, node2 downgrades to greylist #dev sorry #dev wrong #dev yeah but why keep that info in our whitelist since its disconnected? #dev node2 removes from greylist #dev it doesn't make sense #dev i mean we can remove it, but it's kind of redundant since that's the entire point of the refinery #dev also monero doesn't do it like this #dev yeah but its extra redudant info on both sides #dev we hold info we don't need #dev the other side gets info it will surely fail #dev why have that? #dev maybe monero missed this point #dev monero p2p network is ultra stable #dev what we are discussing is not about stability #dev its about having unneccesary stuff #dev its like me giving someone a milk sweet, knowing they are lactose intolerance #dev k well it's easy to change #dev shit will hit the fat #dev s,fat,fan #dev just seems kinda redudant #dev the extra request the peer will make to a closed node seems kinda redudant to me #dev so if we can prevent that, why not do it? #dev : @lunar-mining pushed 7 commits to net_hostlist: 4bf43ec521: net: downgrade whitelist to greylist on stop... #dev : @lunar-mining pushed 7 commits to net_hostlist: 06ae4fd054: settings: change refinery interval default to 5 seconds... #dev : @lunar-mining pushed 7 commits to net_hostlist: 99d0adc5bb: settings: change default hostlist to .local/darkfi/CARGO_PKG_NAME... #dev : @lunar-mining pushed 7 commits to net_hostlist: 4ded978f06: chore: cargo fmt #dev one last thing #dev how is seed check liveness of advirtised nodes? #dev seed(lilith) is not connected to any of them #dev as they only connect on startup and advertise their address #dev is this still the logic or it changed? #dev lilith does the refinery #dev it's the same as any other node #dev nodes send their address through protocolseed #dev it gets added to the greylist, refinery etc #dev yeah, once moved to whitelist tho, how does lilith know they still alive? #dev its the same problem #dev we keep a list and let the peer handle liveness #dev so lilith list can be total garbage, yet we still send it around #dev thats why we added the purging loop btw, so lilith(seed) don't keep garbage around #dev https://darkrenaissance.github.io/darkfi/arch/p2p-network.html#proposed-update this is the TLDR of the monero impl #dev Title: The DarkFi Book #dev https://eprint.iacr.org/2019/411.pdf this is the main source i was using, plus monero p2p module #dev see section 2.2 'Peer list' #dev so i think a large part of this design is to reduce the pressure on seed nodes #dev but yeah afaik there could be an attack with seed nodes sending bullshit lists #dev which is why monero seed nodes are centralized/ trusted #dev in the monero impl, there is no "whitelist refinery" #dev yeah its not needed #dev since they don't remove garbage from whitelist #dev the problem with what I'm reading, is that they don't define why they don't remove them #dev why should we accept that? #dev our seed nodes are minimal, they don't have pressure #dev and we want full decentralization, so this is not acceptable imho #dev garbage should be always cleaned #dev so if we want to remove them, my proposal would be to do so inside "remove_sub_on_stop" which is a method that waits for a stop event on a channel and removes it from the p2p list of channels if a stop event is received (this is where we currently remove anchorlist entries) #dev (when they disconnect) #dev so nodes when a whitelist node gets dc they move it to their greylist(to try again later) and seed periodically pings nodes to remove them #dev that works #dev yeah nodes should handle the whitelist demotion like they already do in anchors #dev but lilith needs the purging task/loop as its not connected to any of them #dev so basically lilith would implement a "whitelist refinery" #dev yeah, pretty much the purge loop task #dev but instead of ringbuffer, you use the already sorted list and always pick last #dev if they respond they go on top, otherwise yeet #dev ACK #dev btw #dev want me to go full schizo mode? #dev always #dev not removing a disconnect peer ip is against privacy #dev as its similar to telemetry #dev they keep track of who's connected to their seed #dev :D #dev well nodes can set advertise to false if they don't want to share info #dev but i get u #dev it's like "delete my data on exit" #dev exactly! #dev btw doesn't that means that all nodes reports from monero are wrong? #dev I mean if the report is based on their seeds whitelist, its never up to date if they don't check liveness #dev (or removing) #dev lain: btw instead of vectors, wouldn't a hashset> be more optimized? #dev (assuming u64 ascedding order) #dev new entries will always go on last position #dev so you can quickly grab each side with .first() and .last() #dev and you don't need to manually sort them #dev (the vec is because 2 entries might have same last_seen) #dev but I guess the vector does the same job, since last_seen is based on your clock which is always ascedding, so you just push it on front with same effect #dev that's a good point re: appending to the end #dev the reason we opted for a Vec was cos you can't randomly select from a hashset #dev and we required that in the greylist refinery #dev biab, eating #dev bon apetite! #random https://www.alibaba.com/product-detail/XHZ-50-Fixed-Wing-Drone-UAV_1600997697791.html free #random Title: Xhz-50 Fixed Wing Drone Uav 50kg Heavy Payload Drone 160 Km/h Fixed Wing Gasoline Engine Uav Surveying Mapping Inspection - Buy Fixed Wing Drone Uav,Heavy Payload Drone,Gasoline Engine Uav Product on Alibaba.com #random xmrswaps> https://nitter.net/SamouraiDev/status/1747308463762325707 #random Title: 403 Forbidden #dev gm #dev gm #dev gm #dev gm #dev file:///home/narodnik/src/darkfi/doc/book/spec/crypto-schemes.html#homomorphic-pedersen-commitments #dev ffs #dev https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#homomorphic-pedersen-commitments #dev Title: The DarkFi Book #dev we should maybe customize the personalization #dev : @Dastan-glitch pushed 1 commit to master: 059dd47523: spec: add missing merkle tree section #dev haumea: It might break the gadgets, I'm not sure #dev Orchard is MIT license anyhow #dev I'm not super-clear on how to generate the stuff in src/sdk/src/crypto/constants/fixed_bases/ #dev ok np, it's fine #random https://www.wsj.com/business/elon-musk-illegal-drugs-e826a9e1 #random Title: Page Not Found #random "Some executives and board members fear the billionaire’s use of drugs—including LSD, cocaine, ecstasy, mushrooms and ketamine—could harm his companies" #random i called it #random https://archive.ph/xFjby #random wait does that mean if i take shrooms i can't operate a space faring company #random no but if you're high af nonstop you are a degen druggie #random ketamine is kinda gross but here: "In 2018, for example, he took multiple tabs of acid at a party he hosted in Los Angeles. The next year he partied on magic mushrooms at an event in Mexico. In 2021..." #random that's not what i'd call high af nonstop #random it says he's microdosing ketamine and high at meetings or media interviews #random as well as partying very often #random ok yeah that sounds bad #random "raised concerns about his drug consumption more than once in side conversations with board members about Musk’s increasingly erratic behavior" #random i reckon there will be a fall from grace at some point #random An attorney for Musk, Alex Spiro, said that Musk is “regularly and randomly drug tested at SpaceX and has never failed a test. #random kek #random Why would they be testing him? #random lmao #random i hurd he's taking some diabetes med for weighloss lol #random kinda gross #random like he doesn't have diabetes, just too lazy to work out or eat less #random lol #random You would reckon the drugs would take care of that #random lain: there is a crisis here in pharmacies, where they don't have a specific diabetes drug which is injected #random because pharmacies sell it to dark market as weight loss drug #random even tho you are only able to buy it with a prescription, but you know, every rule has a loophole :D #dev what sort of personal projects do you guys recommend I do in Rust that would be relevant to this project? Should I build my own blockchain? #dev do the tutorial on writing a p2p app #dev then make some p2p collab tools like accounting or a calendar #dev for example the calendar could use calcurse as its frontend #dev ah nice, that's a great idea actually #dev Should rather work with geode to get a filesystem working #dev haven't heard of calcurse but looking it up now I love the look of it #dev Then you can use that for .ics files and you don't have to bother with calendars #dev nice #dev thanks, will look into that too #dev geode #dev https://github.com/darkrenaissance/darkfi/blob/master/src/geode/mod.rs #dev https://github.com/darkrenaissance/darkfi/tree/master/bin/fud/fud/src #dev well geode files would have no knowledge of the structure of the calendar #dev Why would they have to? #dev so operations to update, add items .etc are atomic #dev Just write a FUSE implementation #dev Backed by geode #dev what about conflicts? #dev It's append-only #dev the file is just a series of bytes though #dev but if there's a structure of nodes, then conflicts can often be automatically resolved #dev You build such algorithms on top of geode #dev like if you add an item to the calendar, and i add one, then geode impl doesn't know they are interchangeable #dev Geode is for data storage #dev And for example "fud" is for file storage, which implements logic of files on top of geode #dev You could do something like that for any file type or whatever #dev so i'd use geode for sharing webpages or images on a marketplace #dev but wouldn't you prefer the event graph for the calendar or tasks? #dev No you'd use something on top of geode #dev how is the calendar different from the chat? #dev Geode does not do networking #dev The calendar is different from the chat in the way that it uses a different protocol. You have to manage .ics files eventually if you want to be compatible with existing calendar utilities. #dev the .ics files are exported from calcurse, but the calendar itself is a series of atomic operations you can share directly over the p2p #dev ics files are used for sharing events #dev so what's the purpose of geode? Does it help with p2p file sharing? #dev Maybe you want something like caldav instead #dev deki: Geode is a module for storing data in fixed-size chunks #dev You can plug a p2p protocol on top of it to implement file sharing and routing tables #dev ah I see, well I'll start to look into it soon enough, will likely come back with more questions #dev if you're really ambitious, you can create an anon p2p marketplace #dev - seller pages using fud dht/geode #dev - DMs / listings using darkirc/event graph #dev - escrow is in script/escrow.sage #dev - reviews using rate limit nullifiers #dev ooh I like the sound of that, but isn't that what got Ross Ulricht in jail :\ #dev aren't you looking forwards to some peace and quiet #dev I think I'll try that as a side project after I've done something easier that's p2p #dev lol I suppose #dev came across this on twitter, pretty interesting stuff: zero knowledge ML https://twitter.com/svpino/status/1747247975246528900 #dev what is interesting about it? what is the problem it's solving? #dev using zk proofs in deep fakes, or like he said, which model generated it, or signing legitimate imagery as proof it's real #dev I don't think it's solving a problem, at least not right now #dev so a hospital (his example) wants me to run their ML algo on my data, right? #dev why would they want me to do that instead of just doing it themselves? #dev trying to understand #dev hmm good point, not sure #dev maybe you don't want to release your data? #dev to them #dev yeah but what's the relation to ML? it's just evaluating a function on my data #dev and i don't see what privacy it gives you #dev surely the privacy comes from doing it in aggregate with 1000s of other people #dev and they want to make some statistical measure of the data... which ZK cannot do (you need FHE) #dev yeah that's valid, it does seem like a solution searching for a problem. Only application I can think of is if you want to keep private certain parts of your ML model, whilst allowing other parties to use it for the output #dev so they run a ML model on my data and show me they put my data in the ML model to get the result... but i cannot see what the ML model is so the result could be random #dev unless there's a third party who verified the ML model and it has a special auth signature #dev well yeah if you want to prove the output came from that ML model, wouldn't a zk proof be a valid way to do it? #dev yes it would, but the problem is you cannot access the ML model so how do you verify it? there has to be some kind of auth from a trusted third party #dev I see what you mean #dev ZK and ML/AI are big money topics rn #dev not sure how that could be resolved, other than the trusted 3rd part auth #dev im often wrong on this kinda stuff tho #dev well, a lot of this tech is still new/early that it's hard to say if it will have any applications #dev I think zk proofs are kinda awesome, I've seen them around (like zkSync) but wasn't until someone posted a course link in telegram that I appreciated them #dev yeah they are really good #random https://twitter.com/mdudas/status/1747610914054910081 #random lmao #random Jamie Dimon says only use case for bitcoin is kyc/aml #dev what about FHE? is it going to be used in darkfi? #dev Eventually #dev It's still really slow #dev because it does compute on encrypted data? #dev Yeah #dev A lot of things going on #dev It's multiple gigabytes of RAM needed for relatively simple operations #dev I see #dev : @parazyd pushed 1 commit to master: f9515f3ddc: runtime: Begin implementation of host function gas costs #dev upgrayedd: https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/import/util.rs#L284 #dev There is this call that reads from sled(-overlay) #dev Is there a way to know the value's size without reading it completely into memory? #dev brawndo: it incoves this: https://github.com/darkrenaissance/darkfi/blob/master/src/blockchain/slot_store.rs#L167 #dev so the return is a serialized Slot #dev yy so that is already in memory #dev https://github.com/darkrenaissance/darkfi/blob/master/src/sdk/src/blockchain.rs#L84-L99 #dev I guess no way to know before reading? #dev so the size shoudl be this serialized struct #dev the problem is that its not constant #dev That's already using up the memory #dev as we have some vecs #dev I wanted to know if there is a way to just query the size before reading #dev from the db? #dev Yeah #dev I have to check if sleds support that #dev I don't see something like that #dev nbd if not #dev Just a bit of a spam vector #dev yeah I get it #dev : @parazyd pushed 1 commit to master: c03d48645c: runtime/import: Subtract gas fee in get_slot() #dev You see here ^ #dev Sometimes we know the gas costs in advance so we don't even have to perform the operations #dev But unfortunately not possible from dbs, so we still end up filling the memory before exploding #dev I don't know if we can do some trick #dev like reading the iterator IVec len #dev but don't know if it will load that to memory or not #dev I think IVec is also already allocating #dev aha #dev It says it's a buffer #dev Not a stream #dev true true #dev checking docs now #dev so its a limitation of underlining tech #dev Yeah np #dev we can do an index tree #dev where key = hash, value = size #dev In any case, I experimented with a few things and figured out an ez way to account for host gas #dev so we know the sizes of everything in blockchain #dev So it's a win in the end :D #dev Nah that's overkill #dev aha noice #dev yeah just thinking out loud #dev I did loads of things #dev ACTION hates that corpo lingo #dev Then in the end: https://github.com/darkrenaissance/darkfi/commit/f9515f3ddc90c018d44dd02fcf302b69feb54f22#diff-09de91bd3ba3706233f6be38745e3e20100f1f1717c4506036ec5e85fea1f1ce #dev Title: runtime: Begin implementation of host function gas costs · darkrenaissance/darkfi@f9515f3 · GitHub #dev will check them later #dev right now my pc is overloaded with docker builders #dev lmao #dev (one for ungoogled chromium and one for librewolf) #dev I'll bbl #dev yeah I'm doing some personal maintance #dev have fun #dev I build overnight #dev that was the plan #dev my calculation were good, but damn I'm bad at math XD #dev soz was disconnected #dev !list #dev Topics: #dev 1. funcid in coin (by haumea) #dev hintjens on meetings: https://youtu.be/7HECD3eLoVo?t=703 #dev Title: Pieter Hintjens - How Conway's Law is eating your job?, Opening Keynote at Coding Serbia 2015 - YouTube #memes quit #dev gm #dev gm #dev gm* #random test #random test back #dev gm #dev hey #random https://haveibeenpwned.com/ #random Title: Have I Been Pwned: Check if your email has been compromised in a data breach #dev gm #dev : @Dastan-glitch pushed 1 commit to master: 3ac3f314ed: spec: add dao::vote() #dev : @parazyd pushed 1 commit to master: 9fb2febfb3: runtime/import/db: Implement host gas cost for zkas_db_set()... #dev : @lunar-mining pushed 6 commits to net_hostlist: 3d5eabfe59: net: downgrade host if they disconnect or we can't connect to them.... #dev : @lunar-mining pushed 6 commits to net_hostlist: eda5c69af4: lilith: add whitelist_refinery task... #dev : @lunar-mining pushed 6 commits to net_hostlist: f3361db4c4: lilith: change hostlist paths on default config #dev : @lunar-mining pushed 6 commits to net_hostlist: 2674cfd32e: store: do not shuffle hosts on fetch_address()... #dev : @lunar-mining pushed 6 commits to net_hostlist: 576afd574d: store: create test_remove() unit test #dev : @lunar-mining pushed 6 commits to net_hostlist: fed0e582c1: net: bug fixes and cleanup... #dev : @lunar-mining pushed 1 commit to net_hostlist: deb3ea5936: net: cleanup warnings + run make clippy #dev : @parazyd pushed 1 commit to master: a3ed654d3a: runtime/import/db: Apply gas subtraction to remaining db.rs functions #dev : @lunar-mining pushed 1 commit to net_hostlist: 818ceaec4d: store: don't remove from greylist or whitelist on anchorlist upgrade... #dev upgrayedd: i added those things we discussed #dev lilith now does a "whitelist refinery" #dev + we downgrade hosts when we can't connect to them or when they disconnect #dev wen merge #dev lain: soon (TM) #dev XD #dev what's lilith? Think I've seen it mentioned before #dev deki: https://github.com/darkrenaissance/darkfi/tree/master/bin/lilith #dev nice, thanks #random yeah my main email was h4x0r3d kinda figured it would be lol #dev afk #dev b #dev : @lunar-mining pushed 98 commits to net_hostlist: 1a60b322a0: dchat: renamed dchat to dchatd and add placeholder dchat-cli #dev : @lunar-mining pushed 98 commits to net_hostlist: 9edf44684c: doc: update dchat tutorial chapter 1 #dev : @lunar-mining pushed 98 commits to net_hostlist: dc26084279: doc: add dchat tutorial to SUMMARY #dev : @lunar-mining pushed 98 commits to net_hostlist: e8f93527f9: Cargo.toml: change dchatd directory to example/dchat/dchatd #dev : @lunar-mining pushed 98 commits to net_hostlist: dd11c47af5: doc: fix dchat tutorial chapter2 #dev : @lunar-mining pushed 98 commits to net_hostlist: 2dff107fee: doc: create dchat tutorial chapter 4 and specify TODOs #dev : @lunar-mining pushed 98 commits to net_hostlist: c4d5f90020: doc: finalize dchat tutorial and add TODOs #dev : @lunar-mining pushed 98 commits to net_hostlist: 7285b80600: doc: update SUMMARY with new dchat tutorial flow #dev : @lunar-mining pushed 98 commits to net_hostlist: fafa2c53a4: dchat: add anchors/ fix ports/ uncomment daemon #dev : @lunar-mining pushed 98 commits to net_hostlist: 54ab2c3947: Cargo.lock: update dchat dependencies #dev : @lunar-mining pushed 98 commits to net_hostlist: 5709066f1a: dchat: remove deleted files and add new ones #dev : @lunar-mining pushed 98 commits to net_hostlist: b521300bc9: doc/ dchat: add TODO #dev : @lunar-mining pushed 98 commits to net_hostlist: daeefbb7bf: money: switch to new nullifier scheme N = hash(secret, coin) #dev : @lunar-mining pushed 98 commits to net_hostlist: ebbd88dee3: update Cargo.lock #dev : @lunar-mining pushed 98 commits to net_hostlist: fa71b711a1: spec2: concepts page #dev : @lunar-mining pushed 98 commits to net_hostlist: 25e696e03b: fix & update darkirc test script #dev : @lunar-mining pushed 98 commits to net_hostlist: 9ae3668779: spec2: add section on crypto schemes #dev : @lunar-mining pushed 98 commits to net_hostlist: bbddc4d0b6: spec2: sections on concepts, notation, pallas/vesta #dev : @lunar-mining pushed 98 commits to net_hostlist: d70b133dae: doc: Update .gitignore #dev : @lunar-mining pushed 98 commits to net_hostlist: e2dafa6051: example/dummy-contract: Fix paths #dev : @lunar-mining pushed 98 commits to net_hostlist: b6bb82798a: dchat: Remove stray lines in Cargo.toml #dev : @lunar-mining pushed 98 commits to net_hostlist: 857ebb42bf: chore: Update crate dependencies #dev : @lunar-mining pushed 98 commits to net_hostlist: 77f3c0d079: net: Port from deprecated async-rustls to futures-rustls.... #dev : @lunar-mining pushed 98 commits to net_hostlist: a4b011e93e: book: Fix ZK circuit paths for RLN page #dev : @lunar-mining pushed 98 commits to net_hostlist: 08e1ddc33c: ec: fix small typos #dev : @lunar-mining pushed 98 commits to net_hostlist: d30a0f312c: dao::vote(): add proposal_bulla to the nullifiers #dev : @lunar-mining pushed 98 commits to net_hostlist: 59a819b9aa: remove unmaintained ShareAddress #dev : @lunar-mining pushed 98 commits to net_hostlist: 7240e6251f: chore: Clippy lints #dev : @lunar-mining pushed 98 commits to net_hostlist: f2390ec288: runtime: Remove unused sanity_check() function... #dev : @lunar-mining pushed 98 commits to net_hostlist: 0668ac4606: contract/deployooor: Implement initial client API #dev : @lunar-mining pushed 98 commits to net_hostlist: cb9f095e9d: contract/deployooor: Include deployment instruction payload in params #dev : @lunar-mining pushed 98 commits to net_hostlist: 55f72d0956: validator: Implement contract deployment handling upon tx verification #dev : @lunar-mining pushed 98 commits to net_hostlist: 9d2671d9c7: validator: Move DeployParamsV1 to darkfi-sdk #dev : @lunar-mining pushed 98 commits to net_hostlist: 80b650e4f5: contract/deployooor: Add initial integration test #dev : @lunar-mining pushed 98 commits to net_hostlist: b0ba8b7d3d: validator: Deploy the deployooor contract as a native contract #dev : @lunar-mining pushed 98 commits to net_hostlist: ed892ea991: contract/deployooor: Update API to use DarkLeaf for contract calls #dev : @lunar-mining pushed 98 commits to net_hostlist: 099e2e72ba: contract: Strip built WASM binaries using wasm-strip from the wabt toolkit #dev : @lunar-mining pushed 98 commits to net_hostlist: 4ec1daa589: chore: Enable some additional arti-client crate features... #dev : @lunar-mining pushed 98 commits to net_hostlist: b10b078147: runtime: Disable payload debug message on Deploy #dev : @lunar-mining pushed 98 commits to net_hostlist: 494da41475: contrib/dependency_setup.sh: wabt dep dependency added for xbps #dev : @lunar-mining pushed 98 commits to net_hostlist: a318bb3d76: validator: check if proposal already exists when looking ofr its fork index... #dev : @lunar-mining pushed 98 commits to net_hostlist: fd177220e1: spec2: DAO model #dev : @lunar-mining pushed 98 commits to net_hostlist: 901793bb79: spec2: vote nullifiers and finish dao model page #dev : @lunar-mining pushed 98 commits to net_hostlist: 690b747b26: contract/test-harness: Set fixed-difficulty=1 mining #dev : @lunar-mining pushed 98 commits to net_hostlist: 9a2505c9e1: zk/debug: add Uint32 and MerklePath for export_witness_json() #dev : @lunar-mining pushed 98 commits to net_hostlist: 063a03e892: dao::vote(): correct mistake in nullifier #dev : @lunar-mining pushed 98 commits to net_hostlist: 68f08077f8: ci: Install wabt for book gen #dev : @lunar-mining pushed 98 commits to net_hostlist: 870fd3e246: dao: replace use of blake3 hash with blake2b. See code comments for explanation of the rationale #dev : @lunar-mining pushed 98 commits to net_hostlist: 62b9cdc04c: dao model: add note about blake2 hash function usage #dev : @lunar-mining pushed 98 commits to net_hostlist: 4d411b0934: book: git mv spec2 spec #dev : @lunar-mining pushed 98 commits to net_hostlist: fecd412ecf: book: botched move #dev : @lunar-mining pushed 98 commits to net_hostlist: 7a6b0a5203: contract/money: Ignore benchmark tests when running test units #dev : @lunar-mining pushed 98 commits to net_hostlist: d24248d026: contract/money: Rename "integration" test to "token_mint" #dev : @lunar-mining pushed 98 commits to net_hostlist: ecc5c6ae11: contract/money: WIP complete integration test #dev : @lunar-mining pushed 98 commits to net_hostlist: 9c18ec3446: contract/money: Fix slot generation in integration test #dev : @lunar-mining pushed 98 commits to net_hostlist: 2f9a9cc237: contract/money/integration: Gather block reward owncoins #dev : @lunar-mining pushed 98 commits to net_hostlist: 31d0d2f617: validator: Configurable fee verification, incomplete... #dev : @lunar-mining pushed 98 commits to net_hostlist: daa625d856: validator:pow: decoulbed mine_block() from PowModule so it can be used outside of it #dev : @lunar-mining pushed 98 commits to net_hostlist: 4fffd4ac2c: script/research/minerd: miner daemon skeleton #dev : @lunar-mining pushed 98 commits to net_hostlist: 54a2674717: script/research/minerd: handle new request trigger using smol channels #dev : @lunar-mining pushed 98 commits to net_hostlist: efe6f39041: darkfid2: use minerd to mine blocks, validator: cleaned up threads info as its not longer required #dev : @lunar-mining pushed 98 commits to net_hostlist: 2074625d1d: src/event_graph: request and reply multiple events #dev : @lunar-mining pushed 98 commits to net_hostlist: 2fe38d699c: remove unused import #dev : @lunar-mining pushed 98 commits to net_hostlist: cda4521dad: spec: change from blake3 to blake2b and add explainer why #dev : @lunar-mining pushed 98 commits to net_hostlist: 111c803085: spec: DAO::mint() and DAO::propose() #dev : @lunar-mining pushed 98 commits to net_hostlist: c83347857e: spec: reword section on blake2 #dev : @lunar-mining pushed 98 commits to net_hostlist: 77fb9d4321: src/event_graph: aquire locks outside loops #dev : @lunar-mining pushed 98 commits to net_hostlist: 9fd2e2e467: make DAO nullifiers the same as money, otherwise we can't detect whether the coins we're using were already spent or not. Having access to a set non-membership merkle tree here would fix this. #dev : @lunar-mining pushed 98 commits to net_hostlist: 493fbfe1eb: spec: DAO::propose() nullifier #dev : @lunar-mining pushed 98 commits to net_hostlist: ce5a92ff21: spec: add money contract with money transfer #dev : @lunar-mining pushed 98 commits to net_hostlist: d67c3d2029: spec: DerivePubKey() #dev : @lunar-mining pushed 98 commits to net_hostlist: d42ba0d511: contract: Move POW_REWARD constant to money contract #dev : @lunar-mining pushed 98 commits to net_hostlist: ab044b02fd: contract/test-harness: Update VKS and PKS checksums #dev : @lunar-mining pushed 98 commits to net_hostlist: 5d8e4a5451: Revert "contract: Move POW_REWARD constant to money contract"... #dev : @lunar-mining pushed 98 commits to net_hostlist: d7ef5c25e1: contract/money/integration: Assert expected PoW reward #dev : @lunar-mining pushed 98 commits to net_hostlist: 8e5e997426: contract/test-harness: Include Money::FeeV1 zk circuit for cached vks #dev : @lunar-mining pushed 98 commits to net_hostlist: 8087222a86: validator/verification: Allow fee call at any place in the transaction #dev : @lunar-mining pushed 98 commits to net_hostlist: c7248f44f6: darkfid2: parse network config directly from the config file, not as flattened arg #dev : @lunar-mining pushed 98 commits to net_hostlist: e46c6dbb6b: sdk/crypto: use the same generator for pedersen_commit_base() and pedersen_commit_u64() #dev : @lunar-mining pushed 98 commits to net_hostlist: be4898e0c7: Revert "sdk/crypto: use the same generator for pedersen_commit_base() and pedersen_commit_u64()"... #dev : @lunar-mining pushed 98 commits to net_hostlist: 6b9ea039d7: spec: add money coin, current day, pedersen commits #dev : @lunar-mining pushed 98 commits to net_hostlist: 4cd92a8189: dao/spec: rename all mentions of slot to blockheight #dev : @lunar-mining pushed 98 commits to net_hostlist: 639b4e89df: test-harness: s/slot_to_day/blockheight_to_day/ #dev : @lunar-mining pushed 98 commits to net_hostlist: d3fae80d5a: chore: Update copyright year in license headers #dev : @lunar-mining pushed 98 commits to net_hostlist: 3d36a1b382: contract/money/Cargo.toml: added missing darkfi validator feature #dev : @lunar-mining pushed 98 commits to net_hostlist: 5b104ef6a5: runtime: Minor comment cleanups and log verbosity. #dev : @lunar-mining pushed 98 commits to net_hostlist: e16e5ceed9: runtime/import: Enable pages assertion in put_object_bytes() #dev : @lunar-mining pushed 98 commits to net_hostlist: 0d67df0adb: runtime/import: General function cleanup and use darkfi_sdk error codes... #dev : @lunar-mining pushed 98 commits to net_hostlist: 703666623f: sdk: Apply relevant changes related to 3240221614727e7bb754de6b33397dc90a92ddee #dev : @lunar-mining pushed 98 commits to net_hostlist: eb2dc41dd7: sdk/util: added block height retrieval functions and use them at appropriate places #dev : @lunar-mining pushed 98 commits to net_hostlist: 1b19b54099: contract/money/error: added missing error code #dev : @lunar-mining pushed 98 commits to net_hostlist: 764da6e7c8: spec: add missing merkle tree section #dev : @lunar-mining pushed 98 commits to net_hostlist: 4f97ed6989: runtime: Begin implementation of host function gas costs #dev : @lunar-mining pushed 98 commits to net_hostlist: ab3a55c6fe: runtime/import: Subtract gas fee in get_slot() #dev : @lunar-mining pushed 98 commits to net_hostlist: 929166b412: spec: add dao::vote() #dev : @lunar-mining pushed 98 commits to net_hostlist: 8a10b292c3: runtime/import/db: Implement host gas cost for zkas_db_set()... #dev : @lunar-mining pushed 98 commits to net_hostlist: fe28c86fa3: runtime/import/db: Apply gas subtraction to remaining db.rs functions #dev looks scarier than it is lol #dev just updating the remote #dev so i merged master in order to fix the failing 'cargo check', but now the master commits have been echoed into the pull request #dev thought it would just show diff #dev https://stackoverflow.com/questions/16306012/github-pull-request-showing-commits-that-are-already-in-target-branch #dev Title: git - GitHub pull request showing commits that are already in target branch - Stack Overflow #dev tried the solution here but it didn't work #dev anyway, i think this is ready to merge #dev i'd like to move onto other tasks #dev lmk thoughts #dev : @aggstam pushed 1 commit to master: 4c8dab8204: drk: drk rewritte skeleton added #random test #random test back #dev gm #dev afk #dev hey #dev : @Dastan-glitch pushed 1 commit to master: 75484eb7e4: spec: DAO::exec() #dev : @Dastan-glitch pushed 1 commit to master: 1061873008: spec: rename coin params to coin attrs #random test #random test back #dev brawndo: i'm getting dao make test failing with merkle_add_ result being i64 instead of i32. I checked all the defns across the code, and they all return i64. I also removed target and .wasm codes and rebuilt #dev debug!(target: "runtime::vm_runtime", "Instantiating module"); #dev let instance = Arc::new(Instance::new(&mut store, &module, &imports)?); #dev this is where it fails in vm_runtime.rs. i also don't see anything in imports about the return value, and some of those methods return i64 #dev haumea: Which test fails specifically? #dev pipiline tests passed fyi #dev so its a it doesn't work on my machine situation XD #dev My favorite one #dev the DAO integration test #dev Error: WasmerInstantiationError("Error while importing \"env\".\"merkle_add_\": incompatible import type. Expected Function(FunctionType { params: [I32, I32], results: [I32] }) but received Function(FunctionType { params: [I32, I32], results: [I64] })") #dev i'm looking all over the code but don't see anything. i thought maybe it's a build artifact, but i don't see what it could be #dev i did git bisect and traced it to 3240221614727e7bb754de6b33397dc90a92ddee #dev It seems that something didn't recompile #dev i'm cloning a new repo to test #dev ah damn it works wtf #dev :) #dev aha i had to delete all the wasm files, not just DAO ones #dev I think running `clean` from the main Makefile would sort you out #dev Or distclean even #dev ok thanks #dev btw idk if this is recommended: darkfi/src/contract/dao/proof/dao-auth-money-transfer-enc-coin.zk:26 #dev or how i should import pubkeys into .zk #dev Yeah that's fine #dev Alternatively you can just witness its coordinates separately #dev But then I suppose you can't do DH #dev It's ok, I wouldn't call it an UGLY HACK haha #dev More like casting without syntactic sugar :D #dev lol #dev ok cool thanks #dev can i add a python macro preprocessor to .zk files for the DAO? #dev i have a lot of code duplication going on #dev : @parazyd pushed 1 commit to master: 5aad1deb73: runtime/import/merkle: Account for gas costs in merkle_add() #dev haumea: What would that look like? #dev probably just jinja macros https://ttl255.com/jinja2-tutorial-part-5-macros/ #dev Title: Jinja2 Tutorial - Part 5 - Macros | #dev ugh ugly #dev yeah true #dev Why don't you just implement functions in zkas that unroll on compile time? #dev nbd #dev don't want to get too distracted, trying to finish the spec in time #dev Code duplication is a non-issue #dev That's a future optimisation #dev sure #dev I wanted to implement functions and loops in zkas eventually but it'd take too much time right now #dev It can just be done through syntax really #dev The compiler can just unroll it all #dev So you don't get really messy either #dev well it might be a bad idea to just add that adhoc to that toolchain #dev Why do you think so? #dev because ideally the zk proofs would be written inline with the verification logic, and have a common format for defining types #dev right now you have to look in a .zk file, then go to the relevant section in process_instruction(), and then make sure things match in get_metadata() and the client code #dev whereas in the crypto papers it's usually written in terms of wallet does this, verifier checks this and also does this check in the proof #dev Yeah well you'd do the same implementation like the zkvm, but it would be executed natively as opposed to halo2/zk #dev "Verification" is an ambiguous word though #dev yeah i just mean the model. what we have is fine right now, just the next layer tooling will do more heavy lifting, but we don't need to add much to what we have already #dev (so you write a kind of type that works across zk and wasm, and it gets compiled to relevant stuff for both) #dev and then the ZK logic is done in some kind of block, like unsafe { ... } in rust #dev Yeah perhaps #dev Anyway #dev I finished the host gas costs for imported wasm functions, now (almost) everything accounts for gas #dev Although not perfectly #dev But we should now be able to have proper fees #dev nice, how do you want to do pricing? by running benchmarks? #dev I went with every wasm opcode = 1 gas, and the host functions mostly account for 1 byte read = 1 gas and 1 byte written = 1 gas #dev I don't have a clear idea on correct pricing #dev we need data, and then we can create a model #dev rn we have a hardcoded gas limit of 400M #dev Our denomination is 10^8 = 1DRK #dev I suppose we want to keep fees under 1 DRK most times? #dev On Solana fees are small, like 0.0001 or so #dev Maybe a bit more these days with more complex contracts #dev We could divide the spent gas by some number and have that as the required fee #dev each DRK is $0.06 #dev likely more eventually #dev I'm not talking about USD value #dev That's irrelevant at this point I think #dev so 0.1 DRK might be good to start #dev we don't have much (any) optimizations to the blockchain, but traffic will start slow #dev For example DAO::propose(): [WASM] Gas used: 15422191/400000000 #dev however it will become a much bigger problem with usage #dev 84577809 #dev the tx with Exec is the most expensive, since it does 3 calls (transfer, auth, exec) #dev >>> 84577809 / 10**8 #dev 0.84577809 #dev sry nvm this lol #dev >>> 15422191/400000000 #dev 0.0385554775 #dev 0.15422191 #dev so 4% of the gas limit #dev ^ This is the DRK cost of dao propose #dev 0.154 #dev that's reasonable #dev If we would go 1gas=1 denom #dev This does not account for zk or signatures yet btw #dev ah yeah... #dev both expensive ops #dev https://github.com/darkrenaissance/darkfi/blob/master/src/consensus/fees.rs #dev I had this as a placeholder, but I don't know if the pricing is right #dev i think you can just price it based off number of columns and rows #dev And signatures should probably be: tx_size * n_sigs #dev we can look at the zcash cost estimator #dev I don't know if we know columns/rows in advance #dev Lemme check the VK struct #dev what does pricing reflect? like how do we prefer CPU, memory, data written, bandwidth #dev is it purely the price in terms of CPU cycles? #dev Computational effort in general #dev needs to be precise #dev It's CPU and data #dev I'll ask re: columns and rows in a proof #dev 11:43 And signatures should probably be: tx_size * n_sigs #dev Does this look right? #dev : @Dastan-glitch pushed 1 commit to master: b1da730489: dao: apply same verifiable encryption for other outputs, to the DAO change output as well. #dev i think it's more like (tx_size + C) * n_sigs #dev C is a fixed cost per signature verification #dev : @parazyd pushed 1 commit to master: 7b42b1c1e2: validator/verification: Fix tx fee call index #dev Right yeah #dev btw we can return [i64; N] from wasm functions (just confirmed) #dev so we don't need to stuff multiple values in a single i64 or anything like that #dev ah cool #dev I don't think we are doing that anywhere right now, but good to know #dev I fixed up all the error code stuff as well #dev yeah i saw that, thanks #dev there's some stuff in SDK error handling where we use i64::MIN + error value, and anything >0 for return values #dev so that potentially could be changed to [i32; 2] instead if we thought it was less error prone #dev Yeah it could but that reminds me too much of golang #dev lol #dev never used it #dev I think it's fine to follow this style, where <0 is error #dev golang sounds like erlang #dev Yeah people called it errlang (sic) as a meme #dev foo, err := do_something() #dev if err != nil { log.Fatal(err) } #dev You always have to check errors like this #dev a lot of go stuff in cryptocurrency projs, mainly when they aren't crypto heavy #dev Some of the first snarks were done in go #dev https://github.com/Consensys/gnark #dev Title: GitHub - Consensys/gnark: gnark is a fast zk-SNARK library that offers a high-level API to design circuits. The library is open source and developed under the Apache 2.0 license #dev I like Go a lot actually #dev But maybe I'm peabrain #dev https://pbs.twimg.com/media/EEgrCUcWsAIs2QN?format=jpg&name=small #dev Although "I want no local storage near me" was one of the key ideas in plan9 #dev https://vadosware.io/post/how-and-why-haskell-is-better/ #dev Title: How and why Haskell is better (than your favorite $LANGUAGE) #dev i read this the other day #dev The utopia being you can just use any computer and access your files as you would normally #dev that would be amazing #dev Yeah #dev It'd be like phone booths #dev You could insert a coin and make a call from anywhere to anywhere #dev The same thing scales to files, providing that infrastructure is perfect #dev But we live in a world with too many adversaries #dev how did we end up with google dox #dev unreal #dev UI #dev UI assimilates masses #dev Like how everyone has an iphone #dev Like how AirBNB killed Booking.com #dev Like how it was never the year of the Linux desktop #dev this year looks promising XD #dev linux is making a comeback #dev 4% #dev i was watching a video with some normies talking about this mac plugin to tile your windows lol #dev they thought it was incredible #dev Good UI will get us far #dev 'productivity hack' #dev We need to get that simple and functional #dev mad how everybody prefers matrix over irc #dev Everyone hates metamask now #dev many software projs moving to matrix instances #dev i hate elements, and the irc integration sucks #dev Discord still seems king there #dev (weechat-matrix plugin) #dev Discord is IRC btw #dev yeah but even for free software projs #dev Yeah lol #dev weird i didnt know that #dev twitch.tv chat is also IRC #dev how do they add all the emojis and do multilined messages? #dev UI #dev And protocol extensions #dev unicode chars :D #dev https://ircv3.net/#what-were-working-on #dev Title: Welcome - IRCv3 #dev https://kiwiirc.com/ #dev Title: KiwiIRC - The webIRC client #dev https://thelounge.chat/ #dev Title: The Lounge #dev There's a bunch #dev You see how the latter is very similar to discord app #dev that ircv3 link is great #dev Yeah though there was backlash from that since it's also involved people tho did the freenode takeover #dev https://irc.com/ #dev Title: IRC.com #dev This is by Private Internet Access and that Andrew Lee dude #dev ah a lot of stuff is gone from that site #random test #random test back #dev the lounge doesn't have multi-line messages #dev *shrug* #dev main extensions to irc should be: 1. async insert of messages for p2p 2. images 3. multi-line (for example code snippets) #dev but tbh i only care about #1 #dev 1. append-only #dev 2. links #dev 3. pastebin #dev :p #dev links are insecure #dev >t. https://xkcd.com/1782/ #dev Title: xkcd: Team Chat #dev No less than arbitrary file upload #dev And less of a liability than having to host questionable files #dev just for images, rather than clicking arbitrary links or websites #dev : @parazyd pushed 1 commit to master: 61dee47ad1: tx: Improve log messages #dev reading through the previous convo, how do you determine stuff like gas limit of 400M, or determining fees and the likes? Is it based off what others are doing, or is there some general guide? #dev It's totally artificial and arbitrary at this point #dev We need to see some real world usage and do benchmarks #dev ah right, is therea formula to follow though? #dev You charge for "time" essentially #dev The longer something takes to compute, the more resources it takes #dev And therefore should be more expensive #dev I think all of it can be thought of as "time" in the end #dev Even the data you read/write from databases #dev interesting #dev is that how these L2s manage to bring down fees, because they're faster? Like Starknet for example #dev I honestly don't know #dev Might be a good research topic #dev I will check it out #dev so basically fees are lower because transactions are done off the main L1 chain, or they can be batched together as a single transaction #dev Starknet has some great documentation for this stuff if you're looking for inspiration: https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/ #dev Title: Gas and transaction fees :: Starknet documentation #dev Thanks, I'll be sure to read that :) #dev : @parazyd pushed 1 commit to master: f733f094e7: validator: Account for Schnorr signature verification for fees in txs #dev :) #dev : @parazyd pushed 1 commit to master: 36315f09fd: validator: Add TODO note about RAM usage for circuit VKs #dev regarding the UI/UX talk, I think the dark.fi website is awesome in that regards, especially the colours used (green light in a dark setting) and finishing the manifesto with 'let there be dark'. If you can carry that all over it will attract the right people #dev Yeah that is the general aesthetic of choice #dev it's what drew me in initially, well that and someone posted a video of dark wallet from 2013, which I found inspiring which lead me to the project #dev : @aggstam pushed 1 commit to master: 8af99afe71: drk2: initialize schemas #dev brawndo: ^^ #dev its comming together :D #dev Sweet #dev btw I find this nice for browsing sqlite dbs: https://sqlitebrowser.org/ #dev Title: DB Browser for SQLite #dev Not as cumbersome as the CLI sometimes #dev brawndo: yeah I use that #dev :) #dev yeah we use that at work too #dev what browser do you all recommend? #dev browser as in web browser? #dev yes sorry, meant web browser #dev None lol #dev They're all bad #dev ^^ #dev XD #dev yikes lol #dev librewolf build from source #dev what about brave? It's meant to be privacy focused, no idea if it is tho #dev lol nope #dev https://ircv3.net/specs/extensions/server-time #dev Title: `server-time` Extension - IRCv3 #dev looks like we can support inserting messages into the buffer directly #dev see supported clients list #dev haumea: or you can use a plumbing script #dev with weechat? i don't think so #dev no you add it your terminal #dev st supports its #dev to view historic messages in weechat? #dev to view images #dev wdym historic messages? #dev in darkirc we do a replay, but ircv3 allows you to put timestamps on PRIVMSG #dev : @parazyd pushed 2 commits to master: 3cb838daeb: validator/fees: Add gas use calculator for ZK circuits #dev : @parazyd pushed 2 commits to master: 02e1885d40: validator/verification: Account for ZK proof verification cost when verifying tx fee #dev oh wait, I read inserting images not messages #dev XD #dev but the plumbing usage can still be added #dev haumea: The timestamps are a client thing and the client chooses how to render it #dev also editing/deleting messages is being added https://github.com/ircv3/ircv3-specifications/pull/524 #dev haumea: We also already have the timestampes attached to IRC messages through the event graph #dev Title: Add message redaction by progval · Pull Request #524 · ircv3/ircv3-specifications · GitHub #dev Editing and deleting is also part of the client rendering, it's just certain types of messages with attached metadata #dev The important thing is backwards compatibility with existing clients #dev where are the timestamps? i don't see it in the code #dev you mean in PRIVMSG? #dev https://github.com/darkrenaissance/darkfi/blob/master/src/event_graph/event.rs#L34-L35 #dev i'm talking about darkirc/src/irc/ #dev Extract it from the event #dev It's not supposed to be in PRIVMSG #dev yes it is, the ircv3 spec has it there #dev IRCv3 is not a real spec #dev it's widely supported by many clients #dev https://ircv3.net/specs/core/capability-negotiation #dev Don't distract yourself #dev interesting, weechat has it too #random test #random test back #random test #random test back #random Agorists and Counter-Economists, #random In a half hour, The Greater Reset 5: Manifestation is going to play our tribute to Samuel E. Konkin III, founder of Agorism. The 20th anniversary of his death is next month and we want to commemorate his work. #random https://thegreaterreset.org #random wonderful ty for sharing #dev gna merge net_hostlist today unless anyone has further comments #dev bbl cya #dev gm #dev lain: Go for it :) #dev :D #dev b #dev : @lunar-mining pushed 12 commits to net_hostlist: f5a9cf3e96: drk: drk rewritte skeleton added #dev : @lunar-mining pushed 12 commits to net_hostlist: 279fdf6a5f: spec: rename coin params to coin attrs #dev : @lunar-mining pushed 12 commits to net_hostlist: 7e1795b6e8: dao: apply same verifiable encryption for other outputs, to the DAO change output as well. #dev : @lunar-mining pushed 12 commits to net_hostlist: 317e443b7d: validator/verification: Fix tx fee call index #dev : @lunar-mining pushed 12 commits to net_hostlist: bb5b015a00: tx: Improve log messages #dev : @lunar-mining pushed 12 commits to net_hostlist: bf43e8f77d: validator: Account for Schnorr signature verification for fees in txs #dev : @lunar-mining pushed 12 commits to net_hostlist: f2ef873e32: validator: Add TODO note about RAM usage for circuit VKs #dev : @lunar-mining pushed 12 commits to net_hostlist: 0800757693: drk2: initialize schemas #dev : @lunar-mining pushed 12 commits to net_hostlist: 2fdcc78b17: validator/fees: Add gas use calculator for ZK circuits #dev : @lunar-mining pushed 12 commits to net_hostlist: d23f93c1cf: validator/verification: Account for ZK proof verification cost when verifying tx fee #dev : @lunar-mining pushed 228 commits to master: 090e8fddfd: hosts: add probe_node() method #dev : @lunar-mining pushed 228 commits to master: 80d6eae22e: hosts: create methods to store hosts in greylist after version exchange and periodically probe_nodes, whitelisting them if responsive #dev : @lunar-mining pushed 228 commits to master: 82da1ef2bb: hosts: if lists reach max size, remove the oldest entry from the list. #dev : @lunar-mining pushed 228 commits to master: 240263cf84: hosts: remove whitelisted peers from the greylist and improve random greylist selection process #dev : @lunar-mining pushed 228 commits to master: e4b366cf68: hosts: write test and convenience methods #dev : @lunar-mining pushed 228 commits to master: b13ecb2811: hosts: create store_greylist() and store_whitelist() methods and tests #dev : @lunar-mining pushed 228 commits to master: a74557131b: outbound_session: create run2() method that changes run() behavior to new whitelist protocol.... #dev : @lunar-mining pushed 228 commits to master: f3b71f4fdc: net: call refresh_greylist() inside outbound_session::run()... #dev : @lunar-mining pushed 228 commits to master: d7d80b6f11: net: implement a new ProtocolAddr that sends addrs from the whitelist and receives to greylist... #dev : @lunar-mining pushed 228 commits to master: 00fdaaa0ea: hosts: reimplement test_greylist_store() #dev : @lunar-mining pushed 228 commits to master: c074282301: net: remove channel from the whitelist and add to the greylist if we fail to establish a connection. #dev : @lunar-mining pushed 228 commits to master: efe3ca7214: net: move whitelist_fetch_address_with_lock() to hosts, and change whitelist_downgrade() function call to take an url, not an (addr, u64) #dev : @lunar-mining pushed 228 commits to master: 7952b8ad41: lilith: store last_seen in host list. also change outbound_session to run new protocol #dev : @lunar-mining pushed 228 commits to master: 9a09e8c6cd: net: remove HostPtr from ProtocolVersion and update probe_node() #dev : @lunar-mining pushed 228 commits to master: 03ce1324bd: net: ProtocolSeed stores addrs on the greylist, and broadcasts own address with last_seen.... #dev : @lunar-mining pushed 228 commits to master: 2c01db5270: net: migrate outbound sessions over to new protocol. also replace lilith periodic_purge with periodic_cleanse.... #dev : @lunar-mining pushed 228 commits to master: a6c74eda87: net: migrate to new AddrMessage format #dev : @lunar-mining pushed 228 commits to master: 053cb71a52: net: move refresh_greylists() out from hosts and implement GreylistRefinery struct/ process in outbound session... #dev : @lunar-mining pushed 228 commits to master: 4f0c4cdc0a: net/lilith: move refresh_whitelist() process out of hosts and back into lilith. #dev : @lunar-mining pushed 228 commits to master: a19e20e006: net: cleanup #dev : @lunar-mining pushed 228 commits to master: 3c30fe64ab: net: properly integrate GreylistRefinery in outbound session #dev : @lunar-mining pushed 228 commits to master: 406a37bbb4: net: only run GreylistRefinery if the greylist is not empty. also properly initalize Weak #dev : @lunar-mining pushed 228 commits to master: cf3642fb3a: net/ lilith: change last_seen to use UNIXEPOCH instead of SystemTime #dev : @lunar-mining pushed 228 commits to master: 491ad0a318: net: add debug statements #dev : @lunar-mining pushed 228 commits to master: 9f25cb4f10: net/ settings: add "advertise" to settings (default value = true) #dev : @lunar-mining pushed 228 commits to master: a7b4f60af4: net: implement ping_node() in OutboundSession and ping self before sending own address in ProtocolAddr, ProtocolSeed... #dev : @lunar-mining pushed 228 commits to master: 519353ae42: hosts: fix minor typo #dev : @lunar-mining pushed 228 commits to master: cc602048d6: net: standardize format + fix logic error on protocol_seed, protocol_address self_my_addrs() #dev : @lunar-mining pushed 228 commits to master: 175f6e78a1: net: commit working test #dev : @lunar-mining pushed 228 commits to master: c0a47457f8: net: BUGFIX: stop duplicate entries in greylist... #dev : @lunar-mining pushed 228 commits to master: de743a03b6: lilith: remove all peerlist filtering logic #dev : @lunar-mining pushed 228 commits to master: d4541d4315: net: fix typo in protocol/mod.rs documentation #dev : @lunar-mining pushed 228 commits to master: 066d3dc9c5: net: fix warnings and cargo fmt #dev : @lunar-mining pushed 228 commits to master: 748c659f93: lilith: fix warnings #dev : @lunar-mining pushed 228 commits to master: de2fb840bf: net: invoke GreylistRefinery in p2p.rs and cleanup #dev : @lunar-mining pushed 228 commits to master: 0639e9bdf7: net: working greylist protocol... #dev : @lunar-mining pushed 228 commits to master: ae5b4d0a69: net/store: reimplement test_greylist_store() #dev : @lunar-mining pushed 228 commits to master: c4ebcb3d45: net: reimplement address filtering on greylist_store().... #dev : @lunar-mining pushed 228 commits to master: a61a08c020: net: remove whitelist_store_or_update call from OutboundSession... #dev : @lunar-mining pushed 228 commits to master: 80df5b68b5: net/hosts: Add missing mod.rs #dev : @lunar-mining pushed 228 commits to master: ef3b95ffdf: net: avoid adding our own address to the greylist when on localnet... #dev : @lunar-mining pushed 228 commits to master: e693b48cb5: net: clean up reference/ pass by value usage in store.rs #dev : @lunar-mining pushed 228 commits to master: 845b9ded6b: net: fix tests on store.rs #dev : @lunar-mining pushed 228 commits to master: 1a282a951d: net: call channel.stop() when we get a handshake error on ping_node #dev : @lunar-mining pushed 228 commits to master: d591fac8dc: net: remove whitelist_downgrade() from outbound_session (monero doesn't do this) #dev : @lunar-mining pushed 228 commits to master: 560b332e37: net: create perform_local_handshake which does a version exchange without adding channel to the p2p store, and use in ping_node #dev : @lunar-mining pushed 228 commits to master: 065f254661: lilith: comment out broken load_hosts code and add FIXME note #dev : @lunar-mining pushed 228 commits to master: 3725de07ec: net: and anchorlist and minimal utilities. also clarify hosts specific TODOs. #dev : @lunar-mining pushed 228 commits to master: ebe8eb1626: net: check whether host is in the peerlist before adding to greylist. also make additional anchorlist utils.... #dev : @lunar-mining pushed 228 commits to master: 03ae65956a: net: add peer to the anchorlist with an updated last_seen when we call p2p.store() on a connected channel #dev : @lunar-mining pushed 228 commits to master: b5bf749fe9: net: replace outbound connection loop with monero grey/white/anchor connection_maker()... #dev : @lunar-mining pushed 228 commits to master: c850f629b8: net: cleanup connect loop code reuse by implement connect_slot() method. also prevent infinite loop by doing peer discovery when the hostlist is empty.... #dev : @lunar-mining pushed 228 commits to master: 6a39e926f1: net: prevent inbound session channels from being stored in the anchorlist #dev : @lunar-mining pushed 228 commits to master: 0096f778c6: net: improve outbound_session connection loop logic. #dev : @lunar-mining pushed 228 commits to master: 03e6e99e90: net: move host selection logic back into hosts/store to avoid insane nesting in outbound session loop #dev : @lunar-mining pushed 228 commits to master: 5be6a07c61: net: add save_hosts() and load_hosts() methods and invoke on greylist refinery start and stop #dev : @lunar-mining pushed 228 commits to master: b456d8f5ec: lilith: remove load and save host functionality (made redundant by greylist upgrade) #dev : @lunar-mining pushed 228 commits to master: d15cc3b2bd: net: read hostlist path from Settings. Define a default setting and allow overriding in config #dev : @lunar-mining pushed 228 commits to master: 995ff6f6c2: lilith: add hostlist path to NetInfo and default config #dev : @lunar-mining pushed 228 commits to master: 6e8671d5b0: net: create greylist_refinery_interval in net::Settings and update TODOs #dev : @lunar-mining pushed 228 commits to master: ca4d523dd3: net: remove unwrap()'s and cleanup #dev : @lunar-mining pushed 228 commits to master: a555f2e744: net: add anchor_connection_count and white_connect_percent to Settings and cleanup #dev : @lunar-mining pushed 228 commits to master: 51b4263a93: net: remove connection from anchorlist when it disconnects and cleanup.... #dev : @lunar-mining pushed 228 commits to master: 873cd35e0e: net: add hostlist documentation #dev : @lunar-mining pushed 228 commits to master: 4d4392f9e8: net: add test module to mod.rs #dev : @lunar-mining pushed 228 commits to master: 07c2d667e1: session: remove redundant anchorlist write... #dev : @lunar-mining pushed 228 commits to master: ca885a43ee: store: improve error naming... #dev : @lunar-mining pushed 228 commits to master: 2696290aad: store: fix logic on is_empty_hostlist()... #dev : @lunar-mining pushed 228 commits to master: 1578138e8f: outbound_session: move fetch_address logic into new function #dev : @lunar-mining pushed 228 commits to master: 18479be298: test: add seed node to net/test.rs #dev : @lunar-mining pushed 228 commits to master: 426efdf90b: chore: cargo fmt #dev : @lunar-mining pushed 228 commits to master: 27d1b3aa03: hosts: fix logic on anchorlist_fetch_with_schemes... #dev : @lunar-mining pushed 228 commits to master: 5f00598c12: outbound_session: remove peer from anchor or whitelist when try_connect fails #dev : @lunar-mining pushed 228 commits to master: ad3675eb3c: store: fix death loop... #dev : @lunar-mining pushed 228 commits to master: 79e9039b9b: store: create test_fetch_anchorlist() unit test #dev : @lunar-mining pushed 228 commits to master: 0ac12ff19d: store: add test_fetch_address() unit test #dev : @lunar-mining pushed 228 commits to master: e472003b6d: outbound_session: fetch_address() logic bug fix... #dev : @lunar-mining pushed 228 commits to master: 4cde069c53: store: document and cleanup #dev : @lunar-mining pushed 228 commits to master: fcf5a87a28: net: fix deadlock (partial fix)... #dev : @lunar-mining pushed 228 commits to master: 96cad54d81: net: 99.9999% of the time it works 100% of the time... #dev : @lunar-mining pushed 228 commits to master: 736459aa51: chore: cleanup... #dev : @lunar-mining pushed 228 commits to master: 2dbaf413a0: protocol_seed: fix bool syntax #dev : @lunar-mining pushed 228 commits to master: c7cf7d861d: lilith: change no hostlist warning to fatal panic #dev : @lunar-mining pushed 228 commits to master: 639f1f72bf: store: fix and simplify tests #dev : @lunar-mining pushed 228 commits to master: 40619581cd: store: reduce LOC in hostlist queries and update usage.... #dev : @lunar-mining pushed 228 commits to master: 765bd819b2: net: change unwrap() to expect() on hostlist queries #dev : @lunar-mining pushed 228 commits to master: 3f51d80438: chore: fix test fixes #dev : @lunar-mining pushed 228 commits to master: b38a1267fb: store: remove redundant else clauses #dev : @lunar-mining pushed 228 commits to master: e40405a257: store: bug fix... #dev : @lunar-mining pushed 228 commits to master: f08ce9a4c8: chore: fix comment positionning on manual_session #dev : @lunar-mining pushed 228 commits to master: 3abd2c62bb: net: don't hide connection upgrade inside perform_handshake_protocols()... #dev : @lunar-mining pushed 228 commits to master: fb4306e1e4: store: fix logic error in greylist_store_or_update... #dev : @lunar-mining pushed 228 commits to master: bd0c7684c8: outbound_session: replace downgrade_host() with `rejected` vector... #dev : @lunar-mining pushed 228 commits to master: 5f83327aec: chore: delete unused methods #dev : @lunar-mining pushed 228 commits to master: 4f4e4fb5b3: net: small integration test tweaks #dev : @lunar-mining pushed 228 commits to master: ec5abf9683: net: make clippy + fix test #dev : @lunar-mining pushed 228 commits to master: c0e23dca86: net: fix ports on test #dev : @lunar-mining pushed 228 commits to master: 4bf43ec521: net: downgrade whitelist to greylist on stop... #dev : @lunar-mining pushed 228 commits to master: 06ae4fd054: settings: change refinery interval default to 5 seconds... #dev : @lunar-mining pushed 228 commits to master: 99d0adc5bb: settings: change default hostlist to .local/darkfi/CARGO_PKG_NAME... #dev : @lunar-mining pushed 228 commits to master: b5119dff94: Revert "net: downgrade whitelist to greylist on stop"... #dev : @lunar-mining pushed 228 commits to master: 388a190d49: store: save whitelist entries on the greylist on stop (no locks)... #dev : @lunar-mining pushed 228 commits to master: 8d5963961b: refinery: stop refinery process before saving the hostlist #dev : @lunar-mining pushed 228 commits to master: 4ded978f06: chore: cargo fmt #dev : @lunar-mining pushed 228 commits to master: 3d5eabfe59: net: downgrade host if they disconnect or we can't connect to them.... #dev : @lunar-mining pushed 228 commits to master: eda5c69af4: lilith: add whitelist_refinery task... #dev : @lunar-mining pushed 228 commits to master: f3361db4c4: lilith: change hostlist paths on default config #dev : @lunar-mining pushed 228 commits to master: 2674cfd32e: store: do not shuffle hosts on fetch_address()... #dev : @lunar-mining pushed 228 commits to master: 576afd574d: store: create test_remove() unit test #dev : @lunar-mining pushed 228 commits to master: fed0e582c1: net: bug fixes and cleanup... #dev : @lunar-mining pushed 228 commits to master: deb3ea5936: net: cleanup warnings + run make clippy #dev : @lunar-mining pushed 228 commits to master: 818ceaec4d: store: don't remove from greylist or whitelist on anchorlist upgrade... #dev : @lunar-mining pushed 228 commits to master: 1a60b322a0: dchat: renamed dchat to dchatd and add placeholder dchat-cli #dev : @lunar-mining pushed 228 commits to master: dc26084279: doc: add dchat tutorial to SUMMARY #dev : @lunar-mining pushed 228 commits to master: e8f93527f9: Cargo.toml: change dchatd directory to example/dchat/dchatd #dev : @lunar-mining pushed 228 commits to master: dd11c47af5: doc: fix dchat tutorial chapter2 #dev : @lunar-mining pushed 228 commits to master: 2dff107fee: doc: create dchat tutorial chapter 4 and specify TODOs #dev : @lunar-mining pushed 228 commits to master: c4d5f90020: doc: finalize dchat tutorial and add TODOs #dev : @lunar-mining pushed 228 commits to master: 7285b80600: doc: update SUMMARY with new dchat tutorial flow #dev : @lunar-mining pushed 228 commits to master: fafa2c53a4: dchat: add anchors/ fix ports/ uncomment daemon #dev : @lunar-mining pushed 228 commits to master: fa71b711a1: spec2: concepts page #dev : @lunar-mining pushed 228 commits to master: 494da41475: contrib/dependency_setup.sh: wabt dep dependency added for xbps #dev : @lunar-mining pushed 228 commits to master: 4d411b0934: book: git mv spec2 spec #dev : @lunar-mining pushed 228 commits to master: fecd412ecf: book: botched move #dev : @lunar-mining pushed 228 commits to master: d24248d026: contract/money: Rename "integration" test to "token_mint" #dev : @lunar-mining pushed 228 commits to master: 2f9a9cc237: contract/money/integration: Gather block reward owncoins #dev : @lunar-mining pushed 228 commits to master: 31d0d2f617: validator: Configurable fee verification, incomplete... #dev : @lunar-mining pushed 228 commits to master: daa625d856: validator:pow: decoulbed mine_block() from PowModule so it can be used outside of it #dev : @lunar-mining pushed 228 commits to master: 4fffd4ac2c: script/research/minerd: miner daemon skeleton #dev : @lunar-mining pushed 228 commits to master: 2074625d1d: src/event_graph: request and reply multiple events #dev : @lunar-mining pushed 228 commits to master: 2fe38d699c: remove unused import #dev : @lunar-mining pushed 228 commits to master: cda4521dad: spec: change from blake3 to blake2b and add explainer why #dev : @lunar-mining pushed 228 commits to master: 111c803085: spec: DAO::mint() and DAO::propose() #dev : @lunar-mining pushed 228 commits to master: c83347857e: spec: reword section on blake2 #dev : @lunar-mining pushed 228 commits to master: 77fb9d4321: src/event_graph: aquire locks outside loops #dev : @lunar-mining pushed 228 commits to master: 493fbfe1eb: spec: DAO::propose() nullifier #dev : @lunar-mining pushed 228 commits to master: ce5a92ff21: spec: add money contract with money transfer #dev : @lunar-mining pushed 228 commits to master: d67c3d2029: spec: DerivePubKey() #dev : @lunar-mining pushed 228 commits to master: d42ba0d511: contract: Move POW_REWARD constant to money contract #dev : @lunar-mining pushed 228 commits to master: ab044b02fd: contract/test-harness: Update VKS and PKS checksums #dev : @lunar-mining pushed 228 commits to master: 5d8e4a5451: Revert "contract: Move POW_REWARD constant to money contract"... #dev : @lunar-mining pushed 228 commits to master: d7ef5c25e1: contract/money/integration: Assert expected PoW reward #dev : @lunar-mining pushed 228 commits to master: 8e5e997426: contract/test-harness: Include Money::FeeV1 zk circuit for cached vks #dev : @lunar-mining pushed 228 commits to master: 8087222a86: validator/verification: Allow fee call at any place in the transaction #dev : @lunar-mining pushed 228 commits to master: c7248f44f6: darkfid2: parse network config directly from the config file, not as flattened arg #dev : @lunar-mining pushed 228 commits to master: e46c6dbb6b: sdk/crypto: use the same generator for pedersen_commit_base() and pedersen_commit_u64() #dev : @lunar-mining pushed 228 commits to master: be4898e0c7: Revert "sdk/crypto: use the same generator for pedersen_commit_base() and pedersen_commit_u64()"... #dev : @lunar-mining pushed 228 commits to master: 6b9ea039d7: spec: add money coin, current day, pedersen commits #dev : @lunar-mining pushed 228 commits to master: 4cd92a8189: dao/spec: rename all mentions of slot to blockheight #dev : @lunar-mining pushed 228 commits to master: 639b4e89df: test-harness: s/slot_to_day/blockheight_to_day/ #dev : @lunar-mining pushed 228 commits to master: d3fae80d5a: chore: Update copyright year in license headers #dev : @lunar-mining pushed 228 commits to master: 3d36a1b382: contract/money/Cargo.toml: added missing darkfi validator feature #dev : @lunar-mining pushed 228 commits to master: 5b104ef6a5: runtime: Minor comment cleanups and log verbosity. #dev : @lunar-mining pushed 228 commits to master: e16e5ceed9: runtime/import: Enable pages assertion in put_object_bytes() #dev : @lunar-mining pushed 228 commits to master: 0d67df0adb: runtime/import: General function cleanup and use darkfi_sdk error codes... #dev : @lunar-mining pushed 228 commits to master: 703666623f: sdk: Apply relevant changes related to 3240221614727e7bb754de6b33397dc90a92ddee #dev : @lunar-mining pushed 228 commits to master: eb2dc41dd7: sdk/util: added block height retrieval functions and use them at appropriate places #dev : @lunar-mining pushed 228 commits to master: 1b19b54099: contract/money/error: added missing error code #dev : @lunar-mining pushed 228 commits to master: 764da6e7c8: spec: add missing merkle tree section #dev : @lunar-mining pushed 228 commits to master: 4f97ed6989: runtime: Begin implementation of host function gas costs #dev : @lunar-mining pushed 228 commits to master: ab3a55c6fe: runtime/import: Subtract gas fee in get_slot() #dev : @lunar-mining pushed 228 commits to master: 929166b412: spec: add dao::vote() #dev : @lunar-mining pushed 228 commits to master: 8a10b292c3: runtime/import/db: Implement host gas cost for zkas_db_set()... #dev : @lunar-mining pushed 228 commits to master: fe28c86fa3: runtime/import/db: Apply gas subtraction to remaining db.rs functions #dev : @lunar-mining pushed 228 commits to master: f5a9cf3e96: drk: drk rewritte skeleton added #dev : @lunar-mining pushed 228 commits to master: e4af7ec436: spec: DAO::exec() #dev : @lunar-mining pushed 228 commits to master: 279fdf6a5f: spec: rename coin params to coin attrs #dev : @lunar-mining pushed 228 commits to master: 5fed38cb8f: runtime/import/merkle: Account for gas costs in merkle_add() #dev : @lunar-mining pushed 228 commits to master: 7e1795b6e8: dao: apply same verifiable encryption for other outputs, to the DAO change output as well. #dev : @lunar-mining pushed 228 commits to master: 317e443b7d: validator/verification: Fix tx fee call index #dev : @lunar-mining pushed 228 commits to master: bb5b015a00: tx: Improve log messages #dev : @lunar-mining pushed 228 commits to master: bf43e8f77d: validator: Account for Schnorr signature verification for fees in txs #dev : @lunar-mining pushed 228 commits to master: f2ef873e32: validator: Add TODO note about RAM usage for circuit VKs #dev : @lunar-mining pushed 228 commits to master: 0800757693: drk2: initialize schemas #dev : @lunar-mining pushed 228 commits to master: 2fdcc78b17: validator/fees: Add gas use calculator for ZK circuits #dev : @lunar-mining pushed 228 commits to master: d23f93c1cf: validator/verification: Account for ZK proof verification cost when verifying tx fee #dev : @lunar-mining pushed 228 commits to master: 34d3206ce8: Merge branch 'net_hostlist' #dev : @lunar-mining pushed 228 commits to master: ef0d1c6f59: chore: update year on copyright text on new files #dev lain: for cleaner branch merge #dev git checkout {branch} -> git rebase master -> git push -f #dev and then when merging: git checkout master -> git merge {branch} #dev the first flow rebases the master into your branch and moves all your commits after head, so when you merge back the you don't get the repush/merge commit #dev yeah that was kinda a mess lol #dev ty #dev on git rebase master you don't resolve any conflicts #dev yeah jsut mentioning, keep the flow noted so you know it future merges #dev btw same flow should be followed when you open a pr in a repo #dev ++ #dev so your pr commits go always above upstream master #dev so you don't fuck up upstream commits #dev yeah mistake here was merging master into remote branch first, then when a few days later ran 'git merge [branch]' on master, it created conflicts #dev so i had to update remote with new commits then merge #dev oh you didn't force push then right? #dev but kinda fucked up the tree #dev no force push #dev anyway we are nitpicking #dev the real thing is to test this #dev :) #dev so organize with dasman to deploy some nodes #dev and we test with each other #dev i have the git thing noted tho thanks #dev since dasman also pushed some darkirc stuff #dev ++ #dev so we test also those and the p2p improvements #dev lain: which are the latest p2p commits? #dev I haven't checked the last fixes #dev 818ceaec4d6ae00a0f5aa0e848b59503d2475c29 #dev and like 5 or so commits below #dev lain: you shouldn't fetch random from whitelist #dev lain: just lmk when #dev that means that there is a chance that you always ping active node, keeping trash indefently #dev since the list is sorted, always check the last N ones #dev since they will be moved on top if they are active #dev effectively having a ring buffer #dev https://github.com/darkrenaissance/darkfi/commit/eda5c69af470bf9d70d2b6c0b7325ab1f4d9364f#diff-5740e6d6d6163f1acf1415ec0e5e1c8d46ed196e80ffa7c0f22c61e3a6cc9a4eR155 #dev in this impl we check 1 node per minute so the N might not needed #dev although I would use to make sure we check everyone on a decent interval #dev (talking about lilith whitelist_refinery(2)) #dev checking from the end/ simulating a ring buffer makes sense #dev : @lunar-mining pushed 1 commit to master: 8f05b489ca: doc: cross out TODO and add hostlist documentation to book #dev nice, glad to see this merged #dev gj #dev : @lunar-mining pushed 1 commit to master: 15d5f7e6d4: lilith: select last element from the whitelist, not random element... #dev ty senpai #dev Nice #dev : @aggstam pushed 1 commit to master: 6ba1fb5947: drk2: retrieval of multiple db records added #dev Hey everyone I am new here and I am hoping someone could help me out. I have fully synced a darkfi node and I am trying to initialize a wallet. When I run the command `./drk wallet --initialize` I get an error `Error: Connection failed`. #dev hey depth #dev we're working on a new testnet rn #dev the current one has been running a long time and isn't being maintained #dev upgrayedd knows more on the specifics #dev ah okay so I should just hang tight for the time being? #dev yes, we'll be deploying a new chat called darkirc soon, could use some help testing that if you're interested #dev otherwise yes working on a PoW testnet rn #dev okay cool yeah I would be interested in that. #dev :) #dev : @Dastan-glitch pushed 1 commit to master: d5faf7296a: dao: small simplification #dev afk today #dev : @Dastan-glitch pushed 1 commit to master: 8028ab4aca: completed DAO spec #dev : @Dastan-glitch pushed 1 commit to master: 76609f7393: spec: minor add to notation.md #dev see you #dev : @Dastan-glitch pushed 1 commit to master: 6b624a79c2: spec: add explainers to DAO functions #dev : @Dastan-glitch pushed 1 commit to master: 00cebdeccc: spec: dao include list of files used for each function #dev : @Dastan-glitch pushed 1 commit to master: 42acaf262f: dao: rename proof/dao-(vote|propose)-burn.zk to proof/dao-\1-input.zk #dev : @Dastan-glitch pushed 1 commit to master: f0ab36d228: dao spec: typos and minor adds #dev : @Dastan-glitch pushed 1 commit to master: 8c96e1646b: dao spec: add missing info on signatures #dev : @Dastan-glitch pushed 1 commit to master: e218881278: dao spec: correct typo #random haumea: contact_pubkey = "GNuVxM7358FSbDqZZw5dhkK2CHdhyxpP9cS2WhYao2uW" #random ok brb #random b #random test #random test back #philosophy https://agorism.dev/uploads/alex-the-genius-parrot.webm #philosophy https://ecency.com/politics/@livingfreedom/anarchozionism-by-samuel-edward-konkin #philosophy Title: 'Anarchozionism' by Samuel Edward Konkin III #dev !topic bs58 vs base64 standardization #dev Added topic: bs58 vs base64 standardization (by upgrayedd) #random test #random test back #dev !list #dev Topics: #dev 1. funcid in coin (by haumea) #dev 2. bs58 vs base64 standardization (by upgrayedd) #dev !topic p2p next steps #dev Added topic: p2p next steps (by beep) #dev : @aggstam pushed 5 commits to master: cebeacd858: drk2: addresses functions added and simplified some internal calls #dev : @aggstam pushed 5 commits to master: cf56a07c3d: drk2: finished up wallet subcommand functionality #dev : @aggstam pushed 5 commits to master: d440003fd1: drk2: Unspend, Inspect, Broadcast, Subscribe, Scan and Alias functionalities added #dev : @aggstam pushed 5 commits to master: 4cc4082bb2: darkfid2: notify subscribers for new blocks #dev : @aggstam pushed 5 commits to master: 613f3b3445: net/settings: use default value for hostlist if not present in args/config #random test #random test back #dev Greetings. I'm back! I made a PR a few days back. I'm been trying to get my setup working on a MilkV Pioneer. Following the Dockerfile as a guide, plus some other local edits as required. #dev https://codeberg.org/darkrenaissance/darkfi/pulls/248 #dev Title: #248 - Removed ZKAS build steps from darkirc Makefile. They are not necessary. This is manifesting as a build error on RISC-V. - darkrenaissance/darkfi - Codeberg.org #dev join #memes #dev gm #dev : @Dastan-glitch pushed 1 commit to master: 51440e732f: sdk/crypto/diffie_hellman: remove .clear_cofactor() call which is useless with Pallas/Vesta curves in sapling_ka_agree(). #dev : @Dastan-glitch pushed 1 commit to master: 36a36b1728: kdf_sapling(): add comment about non-constant function call edge case. #dev gm or good evening from australia #markets can anyone give me the TLDR of what went down with zcash and binance? #markets did zcash end up implementing a new kind of t-address or sumn? #dev : @aggstam pushed 2 commits to master: 0317510dd7: sdk/crypto/diffie_hellman: remove unused import #dev : @aggstam pushed 2 commits to master: 1fcbfdded9: drk2: Explorer functionality added #dev : @Dastan-glitch pushed 1 commit to master: 49c1b1c1ec: spec: add note DH in-band secret distribution #dev : @parazyd pushed 1 commit to master: c25cc17321: rpc/client: Trigger request-read-skip when receiving JSON notifications #dev : @aggstam pushed 1 commit to master: 31dd5d6208: drk2: Transfer functionality added #dev !list #dev Topics: #dev 1. funcid in coin (by haumea) #dev 2. bs58 vs base64 standardization (by upgrayedd) #dev 3. p2p next steps (by beep) #dev !topic sparse merkle tree set nonmembership trees #dev Added topic: sparse merkle tree set nonmembership trees (by haumea) #random when I try to initialize wallet I have this > error while loading shared libraries: libout123.so.0: cannot open shared object file #dev : @aggstam pushed 1 commit to master: 531ead2cb5: drk2: OTC swap functionality added #random pi: apt install libasound2-dev #random thank you #dev !topic drk full regression #dev Added topic: drk full regression (by upgrayedd) #markets I believe firo was implenting a new type of address for exchanges, not sure on zcash beep #random I already have the last version of libasound2-dev but I have also that error #random Well there's also libmpg123-dev #random now it works #random Nice #dev i just realized i was disconnected all day XD #dev 10:17 PublicKey::from(wnaf.scalar(&esk_s).base(pk_d.inner()).clear_cofactor()) #dev 10:18 from diffie_hellman.rs (sapling_ka_agree) #dev 10:18 the call here to .clear_cofactor() is useless since pallas/vesta doesn't have cofactor (jubjub did) #dev 10:18 it's harmless though #dev 10:35 https://github.com/zkcrypto/group/blob/main/src/cofactor.rs#L29 #dev 10:35 https://github.com/zcash/pasta_curves/blob/main/src/curves.rs#L231 #dev 10:53 ok i ran a repo root make test and it passes #dev 10:53 also verified it does nothing in pasta_curves so removing the call #dev sup #dev yo #dev Oy! #dev vey #dev Hai #dev !start #dev Meeting started #dev Topics: #dev 1. funcid in coin (by haumea) #dev 2. bs58 vs base64 standardization (by upgrayedd) #dev 3. p2p next steps (by beep) #dev 4. sparse merkle tree set nonmembership trees (by haumea) #dev 5. drk full regression (by upgrayedd) #dev Current topic: funcid in coin (by haumea) #dev the money::transfer() is not checking the funcid, just the contractid, so there's 3 options here: #dev 1. the contract must hash their data with the funcid and store it in the user data then check it #dev 2. money::transfer adds the function code to the coin attributes and checks it #dev 3. we add a funcid mapping #dev are we adding #3 still? #dev We can yeah #dev ok then that's easy ty #dev !next #dev Elapsed time: 3.2 min #dev Current topic: bs58 vs base64 standardization (by upgrayedd) #dev The enum we usually use for function IDs is u8 #dev context: I'm doing drk rewritte so its compatible with everything new stuff(more on that on topic 5) #dev So on deploy we can generate 255 hashes which would be (ContractID||0), ... (ContractId||255) #dev They should be guaranteed unique #dev drk ftw #dev brawndo: ok sounds good #dev so I saw that we are using both bs58 encoding(external crate) and base64(our own impl) to encode stuff, either to use the string dirrectly(for example print in std out) or to pass them through json rpc calls #dev we should standardize on what encoding to use, so its universal #dev where is base64 used? #dev imho since we have our own encoding without external deps(base64) we should use that #dev base58 is easy to port over #dev and ditch bs58 alltogether #dev We use base58 for addresses and similar stuff and IMO we should keep using it #dev It's better than b64 for that #dev b64 is used in the JSON-RPC transport to encode arbitrary raw bytes #dev base58 excludes chars from base64 fyi that are confusing like 0 or O, and it is double clickable unlike base64 #dev I don't think we need to change anything, both encodings are being used where they should #dev cos base64 has stuff like + in it #dev if we want to keep using both, should we then create our own base58 impl, to eliminate external deps, or its too much? #dev its easy #dev It's easy, however the crate we use is really fast #dev I don't mind using both encodings in different places, just wanted to brin up the topic so we are all clear on whys, since it might be confusing when checking the codebase #dev https://github.com/Nullus157/bs58-rs #dev Title: GitHub - Nullus157/bs58-rs: Another Rust Base58 codec implementation #dev https://github.com/libbitcoin/libbitcoin-system/blob/master/src/radix/base_85.cpp #dev It's under MIT, so we can even copy the code in our codebase if you want #dev ah nice #dev i don't think base58 needs or should be optimized for auditability #dev because it's an infrequent wallet facing op #dev https://github.com/Nullus157/bs58-rs/blob/main/src/alphabet.rs#L196-L201 #dev hehe #dev lol #dev ok if we can integrate that internally then its best case scenario #dev check the libbitcoin impl, it's much simpler than the rust one #dev That's base85 #dev https://github.com/libbitcoin/libbitcoin-system/blob/master/src/radix/base_58.cpp #dev this one #dev ah yeah true #dev oh yeah also #dev I don't know how fast it needs to be really #dev So maybe indeed better to just do a simple impl and kill a dep or two #dev ++ #dev the bitcoin encoding even has some weird stuff so you can potentially simplify it #dev not needed immediately, but good to have as future optimizations #dev thats all, anything else to add? #dev all gud #dev you can just do the most basic dumb impl of base58, no logic to skip leading 0s or anything weird #dev or we could do base 32 #dev so each byte is represented by exactly 2 chars #dev even simpler/easy #dev I'd rather use hex than b32 #dev Let's just keep it as-is #dev yeah sure #dev There's really no need to start changing things #random exit #dev i would simplify the base58 encode/decode logic though if we roll our own since there's a bunch of stuff about leading zeros that isnt really needed #dev thats all #dev ++ #dev whatever works best #dev anyway next? #dev yep #dev !next #dev Elapsed time: 14.1 min #dev Current topic: p2p next steps (by beep) #dev cool so p2p upgrade was merged and next is to migrate and test the apps #dev they should work out of the box minus small tweaks like adding the hostlist path to default config #dev beep: even that shouldn't be needed #dev a commit was added to use default one from net/settings.rs #dev yes the serde defaults should be sufficient #dev 613f3b3445090d630aa89be926f9244c5050dd15 #dev but it's just if ppl want to make it explicit in the default #dev ++ #dev ++ #dev so i guess just rebuilding and testing and hopefully no further debugging needed #dev lilith was updated to work with the new stack? #dev lets start with darkirc #dev thats the main app right now ready to be shipped #dev yes lilith should just work, but should be tested w apps etc #dev ++ #dev okay #dev i'd deploy my nodes #dev I'll deploy two lilith tmrw morning #dev for darkirc #dev nice #dev ill deploy darkirc too #dev 2 nodes #dev dnet should just work also, haven't tested it in a while, maybe i should add hostlist debugging stuff to dnet #dev lets organize internally in the next days to test it out #dev ++ #dev cool ty #dev Cool #dev !next #dev Elapsed time: 4.0 min #dev Current topic: sparse merkle tree set nonmembership trees (by haumea) #dev so there's an imperfection in the DAO voting currently #dev when writing the spec, I realized we don't check if the coin used to vote wasn't already spent #dev so currently we expose the nullifier, so after voting, you should immediately move your coins #dev although it's not perfect since if you vote on other proposals still around then you will be linked #dev the solution is a set nonmembership proof inside ZK. #dev hashing the nullifier? then you shouldn't need to move your coins #dev we have a sparse merkle tree impl, could we get that working? then nodes would need to maintain one in money::transfer() for all nullifiers #dev so when the state is forked in DAO::propose(), we can also detect whether coins are spent, not just whether they existed #dev is that clear? #dev haumea: You can go through this and find a way to implement it as a gadget for us: https://github.com/young-rocks/rocks-smt #dev Title: GitHub - young-rocks/rocks-smt: A Sparse Merkle Tree circuit constructed with Halo2 poseidon. #dev IIRC it has some bug/vuln but we can get that fixed with an audit #dev yeah i'm just worried on timing cos I want to finish the money contract #dev i could maybe leave it until the end #dev I need to finish fees #dev DAO spec is finished #dev nice #dev so is SDK crypto #dev That's great #dev just need to do money #dev is there anything else except those? #dev I believe PoW consensus stuff #dev (The coinbase tx and proposal) #dev i guess i'll finish money, then if there's time, quickly try to fix this DAO thing. it's not a blocker #dev Sounds good #dev src/contract/consensus/? #dev Do check out the repo I linked, it has it all #dev cool, we could also make tweaks later and reengage them too #dev they can just do a diff #dev ah no src/contract/consensus/ doesn't have PoW stuff, that's in Money #dev So you'll get to it #dev contract/consensus is PoS stuff #dev ok so everything in src/contract/money basically? #dev Maybe check out Deployooor contract too, it's simple #dev that shouldn't bee needed right now #dev is that all? #dev money contains the PoWReward #dev Just has a ZK proof about secret key derivation #dev aha ok deplooyer too #dev deployooor #dev :D #dev next? #dev yeah #dev !next #dev Elapsed time: 9.2 min #dev Current topic: drk full regression (by upgrayedd) #dev ok so I said earlier, drk is going under major rewrite, to work with latest internal changes, like rpc and darkfid2 #dev thats gr8 news #dev that means that src/walletdb will get yeeted, as drk do all its handling internally #dev Yeah shifting all complex stuff from node to wallet #dev very good #dev right now the plan is to make just compile with everything #dev so after thats ready(in next few days(TM)) #dev we need to do a full regression, as current sql tables(or structs) might not be up to date #dev or new functionalities(like contract deploy and fees) are missing #dev <0xhiro> anyone here knows how can i add lunardao channel? #dev 0xhiro: use /join #lunardao #dev we have a decent darkfid2 + minerd setup to have a local blockchain to test stuff against #dev <0xhiro> thanks :) #dev 0xhiro: also look in main buffer alt+1 and type /set, then search settings there like 'autojoin'... see the toolbar how to edit the settings #dev so when its ready, we need to do a full regression for everything #dev Nice #dev I will probably handle money, haumea can you do dao? #dev brawndo you should go for deplooor and fees #dev i need to focus on spec right now #dev will do next month #dev ACK #dev well I didn't say immediatelly lol #dev ok #dev the API is the same as before #dev I first have to finish the fees API stuff #dev yy chill, just keep in mind for your next steps #dev Then by end of week I should be able to do the wallet stuff #dev since drk is bassically a requirement for next testnet release #dev Deploying contracts already works(TM) just has to be plugged in #dev I will handle the repo cleanup(removing current dkr and walletdb) when rewrite is finished #dev so then drk will be ready for you to hack into #dev thats all #dev next? #dev !next #dev Elapsed time: 6.3 min #dev No further topics #dev thanks a lot for drk rewrite #dev fun meeting bros #dev Sweet #dev feels like we're moving forward in the release cycle #dev ++ #dev thanks a lot people #dev dasman: Can you deploy also a seed node and darkirc? #dev sure #dev well we have half our dev team back again since last year #dev We don't have to use the main lilith ones yet until we test #dev So maybe best actually if you deploy them today and get things in place so we can test tomorrow and the next days #dev ++ #dev ++ #dev building darkirc now #dev gg everyone, bbl #dev i am scared lol #dev plz werk #dev lmao #dev i will deploy some nodes as well #dev tnx every1 #dev beep: the real beauty in coding is when things don't work #dev There is no running seed node for it btw #dev oh rly haha #dev So let dasman deploy it first ;) #dev ++ #dev upgrayedd: i was thinking of a way to exactly that :D #dev hello #dev hi aiya #dev ** to say #dev how to deploy nodes? can we build from main branch or 0.4.1 ? #dev depends for what aiya #dev ircd is on branch 0.4.1 #dev but we are testing some stuff on latest master rn #dev darkirc and lilith namely #dev darkirc would be useful if you want to help test #dev the darkirc <> ircd mirror is missing #dev : test #dev test back #dev ah nvm #dev 15:44:28 [ERROR] [P2P] Network reseed failed: Failed to reach any seeds #dev lol #dev : :D #dev which seeds should i use? #dev sorry got disconnected, till figuring out ircd #dev As I said twice (and now thrice) #dev 16:40 There is no running seed node for it btw #dev 16:40 So let dasman deploy it first ;) #dev XD #dev ah ok #dev well holla when its up and ill deploy #dev building rn XD #dev b-b-building #dev !next #dev Elapsed time: 9.3 min #dev No further topics #dev !end #dev Elapsed time: 0.2 min #dev Meeting ended #dev nice chitchat #dev thanks all #dev cya next week for the latest gossip #dev Good meeting #dev Be sure to leave feedback to your nearest janny #markets My understanding is that Binance essentially said they would delist ZCash unless they added an "exchange" address, and that they are rolling over. Much like Firo yes. #markets This is fine #markets https://www.coinex.com/en/announcements/detail/22884451766804 #markets Title: Announcements #markets "CoinEx Has Required Mandatory ID Verification for Deposits and Withdrawals of Privacy Coins" #dev : @aggstam pushed 1 commit to master: f9683b867e: drk2: Token functionality added #dev hey guys, is there any point to running a testnet node? I know it is going to be relaunched again and if it is of no help to the development, I can switch it off? #markets Society has no spine #dev kopachke: current testnet no, turn it off #dev darkirc: seeds = ["tcp+tls://dasman.xyz:5262"] #dev altho i ran into a death loop than i couldn't recreate #dev beep: will try a bit more and get back to you #dev : @Dastan-glitch pushed 1 commit to master: 2f0d966491: update darkirc tmux test session #dev beep: checkout tmux_session in bin/darkirc/script, try to stop node 1 the one that advertise its own address, and the other nodes go into crazy mode #dev I also get IO error: broken pipe on node 1 #dev also with these specific configs only node 1 msgs get broadcasted #dev Anyway these are what I've observed so far, the seed node is running and I have a peer running as well for darkirc #random test #random test back #random test #random test back #dev ty dasman, digging into this now #dev fyi advertise is "true" by default so all these nodes are advertizing (not just node1) #dev gm #dev brb #dev b #dev gm #dev I'm up to chapter 5 of the Rust language book, should I go through the whole thing up to ch20 where you build a multithreaded web server? Would you guys recommend that? #dev yes #dev you will use all of those features everywhere #dev btw are you in ##rust on libera? recommend going there #dev thanks for your input, and no I'm not, not sure what libera is actually? #dev : @lunar-mining pushed 1 commit to master: 63619cf061: outbound_session: downgrade host if we fail to connect #dev ACTION facepalms #dev just a line of code that i forgot to uncomment #dev checking other tings #dev deki: search for libera chat irc, then join ##rust #dev you might need to register #dev ok thanks #dev kinda funny story btw: the other day I was talking with 2 senior engineers at work, and they remarked "forget about C++, start learning Rust asap" lol already way ahead of them #dev yeah it's already in the linux kernel #dev noice #dev wtf #dev codeberg deleted one of my commits! #dev :/ #dev wtf i was working on this all morning and the code is gone #dev that's weird, I'm guessing that isn't a normal thing to happen with codeberg? #dev https://codeberg.org/darkrenaissance/darkfi #dev Title: darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. - Codeberg.org #dev omg #dev https://agorism.dev/uploads/screenshot-1706004302.png #dev well those js maybe are unrelated, but wtf i just lost 2 big commits #dev :/// #dev wtf the code is actually gone? #dev isn't it mirrored to github? #dev and you don't have it locally? #dev no i did git pull to push and then it deleted the commits #dev omg #dev i had to resolve a conflict, but the commit is gone in history #dev wtf #dev that's very bizarre #dev : @narodnik pushed 2 commits to master: 56cc2b1627: switch DAO auth enc to use ElGamalEncryptedNote from SDK #dev : @narodnik pushed 2 commits to master: e0ecada541: dao: use ElGamalEncryptedNote for DAO::vote() instead of AEAD #dev ok i managed to find them using: git reflog --all and find the orphaned commit hashes #dev gm #dev still that was quite scary #dev gm ser #dev Didn't you set up codeberg to mirror github? #dev Then I suppose it would overwrite with github if you pushed something only to codeberg? #dev it seems the mirror stopped working, someone pushed, codeberg pulled and overwrote the commit #dev we should maybe all use codeberg instead #dev Maybe there's a way to make a two-way mirror? #dev it should be two-way #dev oh is it? #dev yep i've been using it for a month now #dev maybe i'll create a log of all commit hashes in case something happens again #dev upgrayedd: Can we change verify_transactions() to return Err if there are any invalid txs? #dev I don't like that the API returns Ok(Vec) for invalid txs set #dev And now with fees, verify_transactions() should be returning the accumulated gas usage #dev brawndo: iirc it returns Err(ErroneousTxs(Vec)) not Ok(Vec) for invalid txs set #dev pub async fn verify_transactions(...) { ... ; Ok(erroneous_txs) } #dev verification.rs:621 #dev With tx fees, for example, we should be using verify_transactions() to get accumulated gas from a block so you can make a proposal with the fees rewarded #dev yeah thats wrong, just change it to Err(Error::TxVerifyFailed::ErroneousTxs(erroneous_txs)) #dev if !erroneous_txs.is_empty() #dev otherwise Ok(fee) #dev okay #dev maybe I forgot to change it #dev just make sure that execute_erroneous_txs() in test_harness expects error and checks that the txs.len() is the expected one #dev Yeah I suppose clippy will tell me #dev hopefully :D #dev I believe that code was before we added the TxVerifyFailed::ErroneousTxs error code, so I probably forgot to update the fn #dev anyway you'll find your way around #dev ++ #dev upgrayedd: Here's my pull request :P https://termbin.com/zj7n #dev haumea: #dev what would happen if I pass a wrong secret in ElGamalEncryptedNote::decrypt() #dev ? #dev brawndo: noice, check contract tests pass tho #dev also tbh I prefer if let Err(e) = foo() { match E { ... } } than match foo() { Ok(_) => (), ... } #dev I did the match to keep existing behaviour #dev ah you mean if let Err and then match #dev mhm #dev ETOOMANYSLOC #dev if let Err is less XD #dev exactly 1 less the Ok() one #dev : @lunar-mining pushed 3 commits to master: d404fe946a: chore: fix spelling on debug statement #dev : @lunar-mining pushed 3 commits to master: 111226ef0e: chore: fix debug path #dev : @lunar-mining pushed 3 commits to master: 7fa973302d: net: fix death loop... #dev actually no its the same #dev lol #dev upgrayedd: plz see commit msg of 7fa973302de6cee915b82cc75258d26d690a1909 (changes downgrade_host to remove_host) #dev i don't see a different solution to this aside from preventing greylist connections, which we don't want to do #dev brb #dev beep: ain't that the not keeping trash policy we discussed previous week? :D #dev yeah but before we said downgrade #dev and keep on greylist #dev now we are saying full on remove, so it's different #dev iirc I specifically said to always remove them, but anyway #dev brawndo: is there a way to multiply a Base value by VALUE_COMMIT_RANDOM in zkas? #dev dasman: can you rebuild and test again? lmk what other problems you encounter #dev haumea: what would happen if I pass a wrong secret in ElGamalEncryptedNote::decrypt()? #dev : @parazyd pushed 1 commit to master: 2305faefb4: validator/verification: Return an Error if there are failing txs in verifying sets #dev beep: fmt #dev soz #dev there is no wrong secret unless it wasn't randomly generated #dev lol nw #dev haumea: so I can decrypt them with anything? #dev haumea: No, NULLIFIER_K does the Base field #dev : @lunar-mining pushed 1 commit to master: 4d4fab1c28: chore: fmt #dev there are 2 keys, the ephemeral one (sender owns the private key), and the recipient one #dev the question is what would happen if I pass a random secret(not randomly generated, just random) to the function #dev would it explode? would it return me trash? #dev thats the Q #dev it will work fine #dev just not guaranteed to protect your privacy, it should be randomly generated #dev what would the returned decrypted values look like? #dev just some random pallases? #dev yep #dev darkfi/src/sdk/src/crypto/note.rs:104 #dev you see it's hashing them with numbers #dev these blind the values #dev aha so it doesn't matter since you ensure a blind exists either way #dev so decrypt at will always have something to return #dev do you know diffie hellman trick? #dev yy #dev so with diffie hellman we get a shared secret #dev was just asking because Result<()> was removed so I was like wait can't it explode #dev then we are deriving blinds from this shared secret, and adding them #dev the Result wasn't doing anything before #dev oh lol XD #dev yeah ;) #dev it's safe but you can misuse the API by not passing in a random secret #dev yeah thats a valid execution wise case tho #dev well it could accept Rng like AEAD but then the function needs to return the secret too #dev maybe that's better #dev brawndo: can i add it to ZK VM? #dev Sure #dev ok cool #dev yeesh #dev ^_^ #dev so when we instantiate FixedPointBaseField, we pass it OrchardFixedBases as the trait params #dev this is an enum with a predefined NullifierK accessed by the chip #dev Yeah it's the constants in sdk/crypto/constants #dev so i think we somehow need to find a way of storing info in the enum, that allows dynamic switching of the NullifierK value #dev No just make your own constant to do what you want to do #dev What is even "dynamic switching of NullifierK? #dev ah ok nvm ic now #dev See line 112 of fixed_bases.rs #dev Well all of that is interesting #dev lol my cursor was literally on that exact line #dev https://github.com/parazyd/halo2/tree/main/halo2_gadgets/src/ecc #dev ah so it's our fault actually #dev it's hardcoded to nullifier k but the struct should hold which const it is #dev pub struct NullifierK; #dev https://github.com/parazyd/halo2/blob/v4/halo2_gadgets/src/ecc/chip.rs#L325-L336 #dev this one, right #dev https://github.com/parazyd/halo2/blob/v4/halo2_gadgets/src/ecc/chip.rs#L344-L364 #dev https://github.com/parazyd/halo2/blob/v4/halo2_gadgets/src/ecc/chip.rs#L366-L378 #dev The rustdoc here explains how they work #dev Variable-base multiplication works with scalars #dev You can get a lossless base->scalar with mod_r_p() although I'm not sure how that works _inside_ halo2 #dev darkfi/src/sdk/src/crypto/constants/fixed_bases/nullifier_k.rs #dev for this constant it does #dev Yeah #dev Perhaps you can impl another struct similar to OrchardFixedBases #dev s,struct,enum, #dev isn't the problem just the chip is specialized to NullifierK which in our impl is fixed to NullifierK const #dev darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:149 #dev NullifierK is a constant #dev so if we change that it should work, no? #dev It's just "k" hashed to the curve #dev yeah but we have: #dev type Base = NullifierK; #dev Yeah I suppose you can maybe impl that for ValueCommitR #dev yeah so something dynamic that can be "specialized" to constants #dev What does "dynamic" mean here? #dev the VM isn't fixed to NullifierK for Base #dev note we have a bunch of code like: darkfi/src/sdk/src/crypto/pedersen.rs:34 #dev It's fixed to the constant type #dev EcFixedPointBae #dev i mean to switch to other constants, not only fixed to NullifierK #dev ok cool trying this now #dev darkfi/src/sdk/src/crypto/pedersen.rs:34 is a specific function for commiting to a base-field value #dev That's why it uses the NullifierK generator #dev Inside ZK then it does decomposition to make sure its base-width #dev yes but it uses NullifierK, when it should use VALUE_COMMIT_V #dev No it should not #dev pedersen_commitment_u64 uses VALUE_COMMIT_V #dev Then in ZK that decomposes to make sure it's no more than 64bits #dev Those two functions are different #dev I already explained this last week #dev if VALUE_COMMIT_V fits inside Fp (which it most likely does), then it should be defined the same #dev False #dev VALUE_COMMIT_V inside the VM decomposes its factor to enforce a range check from 0..64bits #dev NULLIFIER_K does not do this #dev See the chip.rs links I pasted above #dev yes but i'd add VALUE_COMMIT_V_BASE for this #dev That makes no sense #dev so it would work #dev why not? #dev Why would you do that? #dev because when we define the pedersen commit (for example in the spec), we define the function one way #dev it's strange to switch between generators and could cause subtle bugs or confusion #dev That's why they are two separate functions #dev If you want to commit to a 64-bit value you use the 64-bit function #dev If you want more, you use tbe _base() function #dev they are the same function, except _u64 does pallas::Base::from() to the value before calling pedersen_commit_base() #dev there should be no issue in switching them to same generator, it will improve the code #dev I don't like that #dev They are not the same functions #dev ok well we don't have to change it, but this way is strange. the generator is even called NullifierK #dev They use different generators for different purposes #dev The generator name does not matter #dev What matters is what it does in ZK #dev it's not used in the code except the old consensus code so we could remove it actually #dev also pedersen commits are expected to have additive property, but this is not additive with the _u64 variant #dev It should be used to commit to coin value #dev So you perform a 64-bit range check over `value` #dev You don't need the additive property since you're using it to commit to a single coin #dev yeah but _base() is expected to be additive since it has no other use except additive commits #dev that _u64() does a range check is incidental impl detail and a side effect we use as convenience #dev anyway it's not important since it's unused code anyway #dev btw an interesting fact is the probability of a random pallas scalar not being able to fit inside pallas base is near zero #dev it's 2.99 * 10^-51 #dev If pedersen_commitment_u64 is not being used, it is a mistake #dev It is also additive, up to 64-bits #dev Which is also fine in our usecase since the maximum supply of any token is 2^64 #dev not up to 64 bits, it's additive over pallas Base #dev I mean that for value (Coin value) commitments pedersen_commitment_u64 should always be used #dev It is there for that exact reason so that it enforces correct supply #dev yep makes sense #dev If you want to commit to arbitrary base-field values, then pedersen_commitment_base is the function to use #dev For that reason they also have two different generators which give: #dev - distinguishability #dev we could actually have a gadget to convert pallas::Base and pallas::Scalar values #dev - different properties inside zk #dev So you won't be able to confuse one commitment with another #dev I'm not sure that gadget would work like programming does #dev There are probably a lot of implications and risks to doing that stuff #dev it's fine, you can start with Fp which fits completely inside Fq and convert that to Fq #dev I meant going from Fq to Fp #dev ah they are equivalent inside ZK #dev i mean if you have an x in Fp, and y in Fq, showing x ~ y #dev then that's the relation you need, so converting from Fp -> Fq is sufficient for all use cases #dev Yeah #dev then you use EC commits to do computations in Fq #dev We can get Ying Tong to work on this later on #dev She should be available after Feb #dev nice #dev oh wait i'm so dumb #dev we don't need to convert Fp -> Fq #dev we can just use EC mult to compare the values #dev ec_mul_base(x, G_BASE) == ec_mul(y, G_SCALAR) #dev Yeah you have constrain_equal_point which might work #dev biab got an errand #dev cya l8r #dev brawndo: can we rename mod_r_p() to something like mod_fv()? or fp_mod_fv() #dev https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#pallas-and-vesta #dev Title: The DarkFi Book #dev r and p are not defined in the spec #dev Fp = pallas base field, Fv = vesta base field #dev dasman: commits stopped being mirrored from codeberg to github #dev they are being dropped when someone pushes on github #random https://twitter.com/nocturne_xyz/status/1749510393267962020?s=19 #random another one bites the dust #random this one = the ETH privacy protocol vitalik invested in #random "This past year, however, we realized the transition to public L2s and AA must happen before privacy. Users worry about cost/UX first. Moreover, the timing for privacy depends on crypto’s utility. Until these primary barriers are overcome first, privacy concerns remain secondary." #dev beep: yeah, everything works fine now #dev I'll update my nodes right away #dev haumea: I don't see anything weird going on either side #dev :D #dev They're out of sync now, syncing manually not working I guess #dev haumea: I think the codeberg issue is that it finds conflict, therefore rejects the push to mirror #dev also use make clippy and cleanup warnings before pushing #dev : @aggstam pushed 2 commits to master: 8ebcfe3222: drk2/dao: updated to latest changes #dev : @aggstam pushed 2 commits to master: 342106e2ac: drk2: Completions functionality added #dev upgrayedd: yours commits will be dropped I guess #dev Since codeberg does force push #dev and yours failed to mirror to codeberg #dev right now two repos have different heads #dev codeberg is on 769493b0ce3aee5078366ff6736b362203237445 #dev while github on 342106e2ac29a40db436259c03002e6b6401eacf #dev this is the issue, codeberg failed to mirror 769493b0ce3aee5078366ff6736b362203237445 to gh #dev yeah, and codeberg shows no error whatsoever #dev we must solve this #dev b #dev haumea: Yeah sure @ rename, that was just taken from orchard #dev haumea: Canonically the fields are called Fp and Fq where Fq is the scalar field in pallas #dev ok ty #dev p, q in math usually mean 2 primes #dev They are #dev re: codeberg, what do you advise? i have new commits now, should i wait? #dev https://docs.rs/pasta_curves/latest/pasta_curves/struct.Fp.html #dev Title: Fp in pasta_curves - Rust #dev https://docs.rs/pasta_curves/latest/pasta_curves/struct.Fq.html #dev Title: Fq in pasta_curves - Rust #dev brawndo: yes we have them in the spec #dev https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#pallas-and-vesta #dev Title: The DarkFi Book #dev naumea: yeah wait #dev ++ #dev codeberg force pushes #dev we can't change that #dev ffs #dev yeah it's annoying, but somehow the github history overwrote the codeberg one before #dev i think the solution is we all use codeberg #dev github is just a mirror #dev or the other way arround #dev codeberg exists so people can commit with tor #dev https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html #dev Title: The DarkFi Book #dev I know why it exists, I suggested it lol :D #dev true, but then why would codeberg be a mirror #dev forking? #dev contributing assumes you already have write access to repo #dev for external contributors using tor, they still have to create their fork in codeberg #dev i'm using codeberg to commit since a month now #dev we should all use tor #dev to avoid being tornado cashed #dev it's easy to setup and just works once running #dev i don't even need to manage tor, it's running as a system service #dev biab #dev then we should also disable writes in gh mirror #dev so its just a mirror #dev yeah sure #dev only codeberg can write/push to it #dev i've joined codeberg matrix, going to ask whats up #dev goddamn matrix is such a slow piece of shit #dev lol #dev don't they have a libera channel? #dev maybe but they link to matrix #dev I disabled force pushing to master on both sides #dev We can check if there is a way to only enable a specific key to force-push #dev I think you need gh enterprise for that #dev ok hold on for a sec #dev I'll sync the two #dev : @parazyd pushed 1 commit to master: 79c18a16ec: zkvm: add VALUE_COMMIT_R_BASE #dev that was easy lol #dev Should be fine now but pls re-clone the codeberg repo #dev Or do a proper sync if you know what you're doing #dev haumea: ^ #dev ok i'll reclone, just going to save on github #dev Both have same history now #dev But codeberg was overwritten (I picked the patch that was on codeberg but not on gh) #dev how did they get out of sync? #dev weird commits-notifier shows your commit but not mine #dev b #dev haumea: force push was disabled on gh and cb couldn't push #dev the name of he who authorizes appears milord #dev ah never mind, there's a UnicodeEncodeError on commit bot's side you used latin-1 codec #dev Restarted it #dev haumea: Why rename the field to Fv ? #dev There's a discrepancy with the Rust code #dev It should be Fq #dev btw darkirc nodes are updated and running #dev darkirc: seeds = ["tcp+tls://dasman.xyz:5262"] #dev Cool! #dev Any issues you noticed? #dev reported them and beep fixed them, seems everything is working fine #dev Great #dev I'll start one in a bit #dev cool, sent couple test msgs for you to sync #dev No peers #dev I see you connected to the seed but not the peer #dev There's also a directory under ~/.local/darkfi/darkfi/ with a hostlist #dev That's the wrong path #dev I'll delete the hostlist and try again #dev found peer and synced #dev : @parazyd pushed 2 commits to master: 39f7a8828a: net/settings: Do not write a default hostlist to the filesystem. #dev : @parazyd pushed 2 commits to master: cf2a5fcc44: darkirc: Add "hostlist" to config #dev I'm not getting any peers #dev net::session::seedsync_session: [P2P] Greylist empty after seeding #dev Failed to start again #dev can you ping dasman.xyz? #dev 16:34:19 [INFO] [EVENTGRAPH] Syncing DAG from 1 peers... #dev 16:34:19 [INFO] [EVENTGRAPH] DAG synced successfully! #dev Yeah I can ping it #dev But I'm getting no peers from the seed #dev any chance you forgot to git pull and make #dev No #dev Will try on another server #dev 16:40:06 [ERROR] [P2P] Channel send error for []: IO error: connection reset #dev Weird huh #dev but it reconnected #dev [WARN] Greylist is empty! Cannot start refinery process #dev This comes up a lot now #dev Oh my local node panicked #dev thread '' panicked at darkfi/src/net/hosts/refinery.rs:106:26: #dev removal index (is 0) should be < len (is 0) #dev beep: ^ #dev I don't think the correct fix is there though #dev If that line panics, then other code is problematic #dev ugh there's so many locks #dev lol yeah #dev okay also I'm periodically disconnect from peer and connect again #dev : @parazyd pushed 1 commit to master: 2fc0ceeccf: net/hosts/refinery: Attempt to fetch exclusive greylist lock before pinging #dev _maybe_ this helps #dev But there is a lot of locks, this can be simplified #dev 44 #dev 44 locks? #dev ACTION is updating nodes #dev Yeah #dev : @parazyd pushed 1 commit to master: badd907efc: hosts: Wrap module rustdoc #dev Okay bodes running #dev My local one connected right away #dev nodes* #dev [WARN] Greylist is empty! Cannot start refinery process #dev this warning is normal and probably should just be a debug statement #dev or info msg #dev ++ was just pointing it out #dev Somethings it's every second #dev Sometimes every 5 seconds #dev it should happen every 5s #dev unless greylist refinery interval is modified in settings #dev can you connect? And see if you can descover my peer #dev in a bit, just cleaning up after dinner rn #dev Aah yy my bad, you're right #dev I just got confused with a time out warn #dev yy sure take your time #dev I don't have much charge left tho #dev will probably save it for later tonight #dev i can do now np #dev I'll leave nodes running I can access them from phone as well #dev ty #dev i am connecting to tcp+tls://dasman.xyz:26661 #dev via the seed #dev Nice #dev so brawndo couldn't for some reason #dev Still not finding peers even on another srv #dev No peers from seed #dev dasman: is the dasman seed a lilith btw? #dev weird that it would send its whitelist to some nodes but not to others #dev peed descovery works? #dev s,peed,peer #dev brawndo: about the locks, everytime we read or write to the hostlists there is locking involved. i'm not sure how that could be simplified #dev beep: ah no it's not lilith #dev Should it be? #dev it should send peers through peer descovery #dev yes protocoladdr #dev protocolseed also #dev lilith has additional mechanisms for insuring node liveness in the whitelist #dev you don't need lilith for testing #dev https://github.com/darkrenaissance/darkfi/blob/master/src/net/session/outbound_session.rs#L251 #dev yeah, would be good to also test lilith, but not necessary #dev peer discovery is triggered only if you get a hostlist #dev sus #dev no #dev that's not correct #dev if we can't fill the slot, we do peer discovery #dev are we sure it gets triggered? #dev did you test it? #dev yes #dev biab #dev okay it's lilith now #dev just to be clear, this is my lilith config: https://pastebin.mozilla.org/7Cymy14v #dev Title: Mozilla Community Pastebin/7Cymy14v (Plain Text) #dev beep: in previous version when we asked addresses from seed or peer, we effectively got 2 sets back, one with our prefered transports and one without, so we can share with peers that use those #dev is this still true with the refinery? #dev b #dev yes transport filtering logic is unchanged #dev it's just been mapped to the new hostlists #dev yeah I mean the refinery knows that that host is not on our transports so it shouldn't try/remove it #dev it should always exist on greylist #dev ah, no the refinery doesn't take transports into acct at all #dev so these peers get yeeted? XD #dev i'm not sure tbh #dev would the handshake fail if it's on the wrong transport? #dev it shouldn't try to connect to them at all #dev ok that's easy to fix #dev when you fetched from hosts you used schemes to filter #dev yes we filter on fetch #dev but not inside refinery #dev we just select a random peer from greylist #dev elsewhere we filter tho #dev thats wrong, refinery should always fetch peers in our transport schemes #dev yes ik #dev we just established this hah #dev lol yeah just restating XD #dev ++ #dev Hey everyone. Just a quick note to say that I've had a very stable ircd instance for the last few days which has been a delight. I'm wondering with those last few commits whether running darkirc on master should be possible? #dev To destabilize my setup again :-) #dev we're testing rn dark-john #dev definitely sub-stable haha #dev How many commits were in your monster merge? Close to 100? #dev I'll give it a whirl on my other computer. #dev And keep this one healthy. #dev too many commits lol #dev so the issue is if we never ping nodes that aren't accepted transports, they will never go onto our whitelist, and we will never broadcast them to other nodes #dev which means that nodes are just sharing info about their own transports #dev wait #dev isn't the list we share supposently containing peers based on % #dev wdym % #dev lets say 80% whitelist, 20% greylist #dev or we just share whitelist? #dev yes 2nd thing #dev just whitelist? #dev we share whitelist, and store recv'd nodes in greylist #dev no it should be like: fill from whitelist, then remaining slots from greylist #dev the 80% 20% thing is when we connect to addrs in outbound connect loop, we have e.g. 80% preference for qhitelist #dev following the transports rule #dev we do that in outbound loop, but we always share our whitelists only, since greylists are considered unsafe #dev so when I ask for example tor, I should get back max N tor peers, and then another max N other transports #dev do you recall how previous peers request worked? #dev ah so you're saying put other logic here that selects from greylist if whitelist doesn't have any e.g. tor #dev so previous logic was: #dev I ask for N peers, for some foo transport #dev then the other sides first tries to grab max N peers for that transport #dev regardless of how many it got, it will fill rest vector from peers not for that transports #dev yeah we still do that #dev but we read from whitelist #dev so I will always get back max 2N peers #dev yeah but right now our whitelist should only have peers in our own transport #dev not the peer requesting peers #dev so the logic should be: #dev grab max N peers from our whitelist for that transport #dev fill remaining vector from greylist #dev since other transports peers will live indefently in our greylist #dev or actually no #dev it should be: grab max N peers from our whitelist for request transports #dev fill remaining vector from whitelist #dev fill remaining vector from greylist #dev since we might support extra transports than the requisting peers #dev what about "if whitelist doesn't contain this transport, select from greylist" #dev yeah thats the 3rd step #dev let me give you a full example #dev I run a node that supports tcp, tls, tor #dev I ask seed and it gives me back: 10 tcp, 10 tls, 10 tor, 10nym #dev I add them all in greylist #dev after refinery I will have in whitelist: 5 tcp, 5 tls, 3 tor #dev and in greylist: 5tcp, 5tls, 7tor, 10 nym #dev after full refinery, my greylist will only have teh 10nym(assume all other nodes where offline) #dev so you come and ask me for 10 peers for tpc and nym #dev I should give you a combo of 10 randoms from my 5 whitelisted tcp and 10 greylist nym #dev and then give another 10 randoms from my 5 whitelisted tls and 3 tor #dev you get them all into your greylist #dev after refinery you will have in whitelist: some tcp, some nym #dev and in your greylist you will have the tls and tor you got from me #dev yy i get u #dev the previous impl didn't take into acct transports at all #dev it did #dev so pretty confident this is what was causing addrs to not propagate #dev i mean the refinery impl #dev oh XD #dev will add this in AM #dev crashing now #dev yy chill #dev when I finish with drk stuff I will also do a deep dive into it #dev since I pretty much need an as stable as possible p2p for nodes testing #dev nice ty #random hey #dev https://youtu.be/7HECD3eLoVo?si=8u03A6lZR3xa2ZeV&t=504 #dev Title: Pieter Hintjens - How Conway's Law is eating your job?, Opening Keynote at Coding Serbia 2015 - YouTube #dev :) #memes nick foo #memes (nick) foo #memes (nick foo) #memes dang haha #memes forogot #memes forgot how to do it #memes oh well #memes ven: use / #memes gracias #memes : ) #memes <.> when nick foo is used, is everyone able to see that notification of just the user? #memes <.> .: there is no notification #memes .: you do you #memes <.> wonderful #memes we are all foo #dev welcome sylvain #dev whitelist_fetch_with_schemes() fetches peers matching the requested transports from the greylist if there's not enough on the whitelist #dev so the logic is currently: #dev grab max N peers from the whitelist for the requested transports #dev if < N peers available, grab peers with the requested transports from greylist #dev fill remaining vector from whitelist #dev lmk thoughts, forgot we were already doing this yday #dev : @lunar-mining pushed 1 commit to master: 453a712b9e: refinery: only refine nodes that match our transports... #dev what's a greylist in this context? I've seen it mentioned before #dev https://darkrenaissance.github.io/darkfi/arch/p2p-network.html#hostlist-filtering #dev Title: P2P Network - The DarkFi Book #dev ty #random https://x.com/lightcoin/status/1749826353149481266 #random John Light: ""privacy concerns remain secondary" I noticed that this was your attitude when I couldn't even use your app in the Tor browser. Definitely the wrong way to go. Public/transparent chains are dangerous, they expose users to so many different snoopers and attackers." #dev : @lunar-mining pushed 1 commit to master: 7f3d43f538: protocol_address/seed: don't return if ping_node is false... #dev : @lunar-mining pushed 1 commit to master: fe95e34db5: chore: remove artifact from debug statement #dev : @lunar-mining pushed 1 commit to master: b1511b991a: chore: correct debug statements and code comments #dev gm #dev gm #dev so advertise is set to default true in settings but somehow this is getting overwritten to false in darkirc, i do not understand how #dev beep: user config or arg? #dev it seems our empty hostlist error is to do with the send_my_addrs stuff in protocol_addrs/ protocol_seed, but i'm still digging into rn #dev upgrayedd: i mean when it's not set by user config or arg, it should be true #dev cos it's true in defaults #dev but somehow it's false idk how #dev iirc structopt/arg bools default to false if not present #dev ahhh #dev so you have to set the flag manually to true in each daemon args #dev gotcha, tnx #dev imo it should be false by default #dev yeah maybe #dev haumea said true by default i think per monero settings #dev advertising should be opt in not opt out #dev but happy to discuss if you have different opinions #dev We used to enable it when external_addr was set #dev (by advertising we mean to publish your connection details so other nodes can find you) #dev I'd call that opt-in #dev brawndo: yeah thats opt-in #dev well that hasn't changed #dev beep: then why not use that instead of an extra bool? #dev I mean when thats set -> advertise = true #dev (remaining opt-in) #dev so rn we do: if advertise == true AND !external_addrs.is_empty(), broadcast our addrs #dev but i can't remember why we needed this additional check rather than just using the presence of an external_addr as a defacto bool #dev check if it has any other usage anywhere else #dev if not yeet it and just use if external_addrs.is_empty() { continue } #dev i'm find with just using external_addrs as the advertise check #dev *fine #dev codeberg and github are out of sync again #dev "I think this is exactly the problem. Since you have a two-way mirror, having an update in both ends too close to each other can end up with different history. In this case, both sides cannot simply push without overriding history. And "force push" is an explicit option you need to make." #dev that's what they said on matrix #dev aha so what we were saying yesterday its true, that it needs force push to work properly #dev : @lunar-mining pushed 2 commits to master: 831d17cd48: chore: more informational debug statement #dev : @lunar-mining pushed 2 commits to master: 949f9f0f6f: net: remove `advertise` bool from settings... #dev brawndo: we should rename Fq to Fv or change the spec: https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#pallas-and-vesta #dev Title: Cryptographic Schemes - The DarkFi Book #dev _p and _v are used consistently to denote pallas or vesta #dev Where? #dev The designers of the curves use Fp and Fq to denote the fields #dev So by using Fp and Fq we'd be consistent with their documentation if it ever needs referencing #dev (Which you do once you start going into halo2, etc.) #dev i changed it because it's confusing trying to remember whether p or q is the base field of pallas or vesta #dev Think about it differently #dev Don't bother with vesta #dev we've been using Fp for over a year so it's natural now, but it's not intuitive #dev Just consider p as base field, and q as scalar field #dev Then when you think about vesta, you just invert them #dev It's intuitive because of how these two curves work #dev fp_mod_fv() says more than fp_mod_fq() #dev Subjective #dev https://docs.rs/pasta_curves/latest/pasta_curves/ #dev Title: pasta_curves - Rust #dev I'd rather be cconsistent with this #dev i'll change it #dev Thanks #dev can we all switch to pushing on codeberg today? that way we preserve committing through tor #dev ok can set that up in the afternoon #dev we can still accept community pull requests through github, just the 2 way mirror can fail infrequently (i've been using codeberg for a month so far without issues, it only failed the first time yesterday) #dev It looks like the two repos are in sync though #dev it deleted my commit from this morning #dev 291dcbd50 (origin/master, origin/HEAD) spec: ElGamalEncryptedNote #dev b1511b991 chore: correct debug statements and code comments #dev :/ #dev Can you cherry-pick those and push to codeberg? #dev Yesterday it seemed to work #dev yep #dev https://codeberg.org/darkrenaissance/darkfi/commits/branch/master #dev Title: darkrenaissance/darkfi - Codeberg.org #dev why don't we all just use codeberg? it will be functionally the same, except we update our remotes #dev Well the issue is that it's not syncing, not that we all switch #dev I'm tweaking some settings #dev So yeah it doesn't work automagically upon push to codeberg #dev Only in 10m intervals #dev the issue with 2 way only appears rarely when 2 people push within the same interval #dev Yeah #dev so we could enable the force push, but then for safety, everyone pushes from codeberg #dev I wouldn't call it rarely though :D It definitely happens #dev rare cos i went a whole month without issue #dev force push was enabled back then #dev I guess now the problem was the single fast commits you did yesterday #dev so don't git commit && git push on every commit XD #dev I'm setting it up hold on #dev ok no it's rekt haha #dev Gonna set up a webhook #dev : @parazyd pushed 5 commits to master: d87be16dd3: spec: update DAO section with recent ElGamalEncryptedNote fixes. #dev : @lunar-mining pushed 1 commit to master: 3ac51c06bd: store: reverse the order of hostlists... #dev : @parazyd pushed 4 commits to test: 040285ad52: foo #dev : @parazyd pushed 4 commits to test: b2a78fb78d: foo #dev : @parazyd pushed 4 commits to test: 5f79ca2d9c: baz #dev : @parazyd pushed 1 commit to newbranch: cfcdca6645: testnew #dev : @parazyd pushed 1 commit to master: 354ef3270e: store: reverse the order of hostlists... #dev ok it works #dev codeberg will now always force-push to github #dev thanks #dev beep: Please clone the codeberg repo #dev And then just commit to codeberg in the future #dev upgrayedd, dasman: Same ^ #dev https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html #dev Title: Using Tor - The DarkFi Book #dev just install tor daemon, enable the service on your OS, and set this up #dev kk will change to full codeberg in a bit #dev def darkfi_repo_mirror(branch): #dev subprocess.run(["git", "-C", repo_path, "fetch", "--all"]) #dev subprocess.run(["git", "-C", repo_path, "checkout", branch]) #dev haumea: you mean ln -s /etc/sv/tor /var/service/ ?? #dev subprocess.run(["git", "-C", repo_path, "reset", "--hard", f"origin/{branch}"]) #dev subprocess.run(["git", "-C", repo_path, "push", "-f"]) #dev :D #dev brawndo: do we need the subprocesses? #dev chad_yes.jpg #dev It's just a python flask script that listens to webhooks #dev for pushing to gh? I mean whats the usage #dev (Also renders website and blog) #dev Yeah what I pasted above is mirroring codeberg to github #dev add it to repo .git config then #dev 1) What #dev It's set up #dev wait #dev I thought we have to set it up manually #dev url = https://codeberg.org/darkrenaissance/darkfi #dev XD #dev Title: darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. - Codeberg.org #dev pushurl = git@github.com:darkrenaissance/darkfi #dev upgrayedd: Just make sure you push to codeberg and not github #dev yy I will yeet my origin #dev cd .. #dev upgrayedd: indeed #dev btw this also applies to pull requests #dev So on Github when you have a PR #dev Like this one: https://github.com/darkrenaissance/darkfi/pull/248 #dev Title: fixing hardcoded value for decimal places to constant by deki-zedd · Pull Request #248 · darkrenaissance/darkfi · GitHub #dev You can access the patch by appending ".patch" to the URL #dev Then you would apply it like: curl https://github.com/darkrenaissance/darkfi/pull/248.patch | git am - #dev And push to codeberg #dev lmk if you experience breakage #dev haumea: One question #dev haumea: If someone publishes a valid (unique) nullifier, but it turns out that something in that tx fails, can this nullifier be abused for disabling someone's coin? #dev I assume not, since it's vulnerable to bruteforce anyway, but just want to confirm #dev : @parazyd pushed 1 commit to master: 228aea9926: contract/fee: Enforce that fee_paid > 0 #dev if the tx fails then no state is changed #dev nullifiers also commit to private keys, so you can only mess with yourself #random sylvain: lmk when around #random send me your key #dev okay #dev Was wondering if I need to add more restrictions/constraints around the fee API to not mess something up #dev But it's fine when this is the case #dev Making the fee call constant-sized is nice, then we have a more or less fixed-cost #dev Which also simplifies the call creation since we know how much gas it uses in advance #dev +- some tiny percent #dev (That percent being the sometimes dynamic size of the incremental merkle tree) #dev nice, it's certainly easy to reason about #dev sup everyone #dev haumea: fyi gnunetcan doesn't have --proxy flag #dev should I update my darkirc? haven't updated in like a month #dev anonkun: we are testing some new stuff, better to wait some time #dev ok cool #dev haumea: oh one more thing, when documenting the money contract, skip any faucet-related stuff #dev haumea: This in queue for removal #dev if you're all using codeberg, will github still remain for people who want to try their hand in contributing? #dev deki: yes read what brawndo said above #dev PRs will be applied as patches #dev ah right, thanks #dev : @parazyd pushed 2 commits to master: 98fd142aa4: spec: elgamal enc, cleanup use of subscripts #dev : @parazyd pushed 2 commits to master: d06cffd0f1: spec: add description of the group hash algo #dev brawndo: aha thanks #random twitter space tomorrow at 15:00 UTC with Harry halpin of NYM and @nullchinchilla of earendil #random drop any questions here you might want to ask #dev : @parazyd pushed 1 commit to master: b498847676: contract/money: Add missing error to the error enum #random could there be a way for nym and darkfi to operate together economically? #random for example they use all these centralized services like discord. Isn't that a contradiction for a privacy project? #random like they have this whole thing about coconut credential services... why don't they make anon nym versions and use those? for example they made a chat on nym but they don't actually use it - so why would their community? #random or if they don't have the capacity to create these things, why don't they just this chat here? it works over nym and they could just deploy nodes #random have they considered how devs can contribute anonymously instead of using github? for example darkfi uses codeberg with tor for that: https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html #random Title: Using Tor - The DarkFi Book #random how could nym satisfy this usecase? #random (the darkfi codeberg is mirrored to github for normies) #random also why did they do a fucked up coinslist which required KYC, and then crapped out and lagged so very few people could buy the token on launch? isn't that a contradiction for privacy projects #random also why is earendil using a launchpad which requires KYC instead of doing a community sale like an LBP? #random again, why does earendil use discord and not a freedom preserving service like matrix or this chat #random The chat doesn't work over nym because they don't want to implement simple features #random https://github.com/nymtech/nym/issues/3610 #random Title: [Feature Request] Support multiple websocket connections in nym-client · Issue #3610 · nymtech/nym · GitHub #random The answer to most of your questions is lack of innovation or dedication and taking the path of what is known and easy #dev : @parazyd pushed 1 commit to master: 6e7dc81704: chore: clippy #markets DarkFi wins privacy project of the year and most exciting innovation #markets https://mirror.xyz/0x0f1F3DAf416B74DB3DE55Eb4D7513a80F4841073/wyFhJ9_ayxA6BXTW0WE1h4ZackVTjrZTeC28Y6-J4mc #markets Title: #2023privacyproof finalists announced — Web3privacy now #dev Congratulations! Darkfi named Project of the Year and Innovation of the Year in the Web3PrivacyNow poll :-) #dev https://twitter.com/web3privacy/status/1750198455220183452 #dev Web3Privacy Now - one transaction at a time(@web3privacy): Here we go: #2023privacyproof finalists are here! Congratulation to all the finalists: @DarkFiSquad, @RAILGUN_Project, @nymproject, @GrapheneOS, Privacy Pools. Explore: https://t.co/CBNCSnucGd https://t.co/1hpdZQcvlO #memes quit #memes sylvain: use / #random surprised by this, harry always talks such a big sovereign/privacy game #markets +1000 #random nym is a giant corporation with VCs owning more alloc than community #random doesn't matter what harry thinks, they are beholden to their paymasters #random ofc the progenitors of the project choose to build it that way #random play stupid games, win stupid prizes #markets congrats on the win #markets based #dev I'm trying to compile a and run a node. Everything went fine until I attempted to initialize the wallet and create a keypair #dev foo: whats the error? #dev ./drk wallet --keygen #dev ./drk: error while loading shared libraries: libout123.so.0: cannot open shared object file: No such file or directory #dev ./drk: error while loading shared libraries: libout123.so.0: cannot open shared object file: No such file or directory #dev please don't paste logs #dev oh sorry #dev use pastebin/termbin/pastenym #dev will do #dev sudo apt install libasound2-dev #dev do i have to restart the terminal after install? #dev I don't think so #dev how long does it take for the bloc_sync? #dev just created a full node #random I mostly agree with you on nym, but raising funds without KYC is hard, even LBPs nowdays have to block US IPs if they don't do KYC #random regarding using darkirc instead of discord, i'm all for it but installing darkirc is way too complicated for the average user, than just installing discord. #random Thisd chat works over nym mixnet fyi https://nymtech.net/developers/events/hcpp23-serinko.html#ircd #random Title: HCPP23-serinko - Nym Developer Portal #random I guess the sad reality of sincere privacy projects using DC, TG, TW is the compromise in meeting people where they are at, which seems to be true for ALL these projects #dev gm #dev yp #dev s/yp/yo #random yeah but why is the dev team on discord? #random anonkun: well they could make a UI or gateway for darkirc, duh #dev hey #random plastic teabags release microplastics: https://pubs.acs.org/doi/abs/10.1021/acs.est.9b02540 #random Title: Just a moment... #random "Plastic Teabags Release Billions of Microparticles and Nanoparticles into Tea" #random fyi most teabags contain plastic #dev : @parazyd pushed 2 commits to master: 74f91dd3bc: dchat: fix mistakes on default config #dev : @parazyd pushed 2 commits to master: 3447394eda: net: make fetch address logic less nested + fix bug... #dev :D #dev draoi: as a general comment, when using vectors as return type, you don't need Option #dev you just return an empty vector and caller does if ret.is_empty() { continue } #dev way less cluttered than using match statements #dev ++ #dev which method are you talking about actually? #dev greylist_fetch_random_with_schemes #dev oh wait, its a single one #dev yeah thats not applied here lol #dev thought it was the fetch_n_random one #dev (comment still applies obviously in general) #dev : @parazyd pushed 1 commit to master: c04667a845: net/session/outbound_session::fetch_address(): simplyfied returns #dev ++ #dev o #dev general update: net code seems stable (TM) on dchat, but getting DAG sync error on darkirc #dev gna get dnet working to help debugging #dev afk for a bit tho as hitting gym #dev also i'm considering removing the 'ping_self' stuff in protocol_addr/ protocol_seed #dev recap: before sending our addr, we ping ourselves to ensure the addr is valid and up date last seen #dev this is what monero does #dev but we could just set last_seen to 0 and let other nodes deal w it #dev (this would be more in line w what we were doing before) #dev biab #dev upgrayedd: What does this mean? https://github.com/darkrenaissance/darkfi/blob/master/src/contract/test-harness/src/money_pow_reward.rs#L57-L59 #random twitter space with @nullchinchilla of earendil and harry halpin of nym is still on #random will drop twitter spaces link in a moment #dev brawndo: you mean whats the usage of last_nonce and fork_hash? #dev Yeah and what does it mean in this case? #dev If I create another block in the harness, wouldn't the new reward/block have to extend that? #dev (Provided I'm not trying to make forks) #random https://twitter.com/i/spaces/1vAGRvRzpAzGl #dev yeah each blocks extends its previous, so it includes its info #dev that info is used to produce a vrf #dev okay so it's correct that if I want to create a series of blocks, each block would reference block-1 as its last_nonce and fork_hash? #dev and we use that vrf to produce the blocks rank https://github.com/darkrenaissance/darkfi/blob/master/src/validator/utils.rs#L112-L162 #dev so to calculate each forks rank to find the best, we aggregate all its blocks ranks multiplied by its side(we want bigger forks to rank higher) #dev https://github.com/darkrenaissance/darkfi/blob/master/src/validator/consensus.rs#L613-L643 #dev brawndo: yeah that its correct #dev Thanks a lot :) #dev these parameters are for our PoW consensus #dev remember we don't do satoshis one #dev Yep #dev in our version, forks only exist in the tail, in which we finalize the best rranked fork(minus last block for race conditions) #dev after that finalized sequence can never change #dev btw the finalization logic after some N fork length, is based on shatoshis security parameter that after some N blocks, hash rate needed to mute them becomes close to infite, so their chance of getting forked is close to 0 #dev we just elliminate the possibility to mute them all together #dev and use an N high enough to ensure that our forks after that length can be securly finalized #dev and the those params in the vrf are used so we protect from being able to game a future block rank #random anonkun: LBPs don't have to block US IPs #random the frontends do #random but why are they hosting frontends on the web? just give people an app to download and run #random the app can even be on IPFS #random sadar: the convo is so spicy lol #random still curious about the discord / coinslist launchpad stuff #dev b #random nice, i love a spicy convo, bring some introspection into the mix! #random haumea, what were some interesting points, i wasnt able to catch all of the paces live #random idk it's not my area so i'm not able to follow the technical convo lol #random i liked when harry said "wrapping your protocol with the internet condom tor does not make it anon" #random 👀👀 #random what did you think of the quality of the convo? Was it entertaining/informative? #dev : @parazyd pushed 4 commits to master: 2f6bb5748f: drk2: Dao functionality added #dev : @parazyd pushed 4 commits to master: 3062597fca: drk is back in the menu boys #dev draoi: yo can you check the failling net test? #dev yy #dev : @parazyd pushed 1 commit to master: a42fd04bee: store: update test to use new flattened fetch_address logic #dev parazyd- 100x dev #dev lmao #dev lol #dev dasman: You can probably tweak the script to use the commit author :) #dev ++ #random entertaining, but i didn't learn much... i guess cos i was exercising/distracted #random ++ #dev : @parazyd pushed 2 commits to master: 0e400fb299: drk/Cargo.toml: missing darkfi feature added #dev : @parazyd pushed 2 commits to master: 9d9dd1590c: net/hosts/store: chore clippy #dev : @dasman pushed 1 commit to master: 0567c219bd: bin/darkirc: [commitbot] replace pusher name with committer's #dev : @skoupidi pushed 1 commit to master: cd762c95e0: doc/Makefile: use RUST_TARGET in docs folder path #dev gm from aus #dev wanted to ask: you guys are now in dcon3, when you get to release, does that mean there won't be much dev work to do? #dev Hi #dev Nice, I can see my message in the tg relay #dev Glad to be here and learn #dev hey #dev hey what's up #dev going through the rust lang book! What about you? #dev Good, I am going through the darkfi book and taking a look of each piece #dev nice, it's pretty detailed #dev Indeed #dev I'm noticing that Rust is the core language of the project #dev Even to write smart contracts #dev I'm more a Haskell & functional dev, excited to learn Rust #dev yep, it offers security features that other languages either don't have, or lack. Also making an impact in other projects too #dev For sure #dev Tell me how do I start contributing #dev I saw there is a meeting each monday #dev best place to start is here: https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html then checkout the github repo, that's how I started. But I need to become more familiar with Rust to contribute in a more meaningful way #dev Title: Contribute - The DarkFi Book #dev yeah Monday's there's a meeting in here #dev Damn, I ran $ git grep -E 'TODO|FIXME' and there is a lot to do #dev How you doing with Rust deki #dev ? #dev I'm going okay, a lot of the concepts aren't 'new' to me per se, since I come from a Python/C background, so far the only issues I've had are to do with the data types emphasis #dev Static typing right? #dev yep #dev Once you get accostume to it you never look back #dev it prevents a lot of problem #dev now when I code let's say python or js I feel kind of naked #dev yeah lol I mean I'm used to data types from C, but Python is a bit more lax #dev it's good though, I was about to go all in on C++ because I started using it at work last year, and I still am, but I'm just devoting extra time to Rust now #dev Yeah, same, learning Rust seems a reasonable next target to leanr. Did you see some part of the project that u want to start to contribute? #dev well for now it's just identifying low hanging fruit, stuff I can do given my limited understanding, plus from what I can tell they've done a lot of the heavy work and nearing release #dev I can imagine, let's catch that fruits, any idea until now? #dev at least to start to study #dev well what the other devs here have suggested: do the tutorial on writing a p2p app, p2p collab tools, groth16, elliptic curve group law #dev hey ash I gotta head out, will be back later #dev I'm going to sleep, see you tomorrow hopefully and nice to meet you #dev nice to meet you too :) #dev ;) #dev \exit #dev :) #dev gm #dev greets #dev herro #dev greets ash, nice to see some functional in here... was reading about haskell's powerful type system recently... interesting #dev rust has a somewhat approximation with traits, but not as natural to use as in haskell where it's a core lang construct #dev gm all #dev when the project gets to release, does that mean there won't be much dev work to do? #dev There will always be things to do :) #dev good point! Guess nothing is ever 'finished' #dev upgrayedd: https://github.com/darkrenaissance/darkfi/blob/master/src/blockchain/block_store.rs#L112 #dev upgrayedd: What goes in the Vec ? #dev brawndo: https://github.com/darkrenaissance/darkfi/blob/master/tests/blockchain.rs#L77-L91 #dev tldr: PoW blocks have a single slot, containing the PoW parameters information #dev while PoS have >=1 #dev we use slot as a convention, to not have to create extra stuff in the future #dev oh I see #dev Didn't know about this test file :D #dev I know having the PoW/PoS terms mixed up is a bit challenging at first #dev alas, futureproofing :D #dev *nod* #dev deki: lmao i wish #dev last night i was looking at p2p code and going "i have to rewrite a lot of this" #dev : @draoi pushed 3 commits to master: d60bb8bf33: manual_session: bugfix... #dev : @draoi pushed 3 commits to master: 715f6c7a86: channel: fix incorrect API usage #dev : @draoi pushed 3 commits to master: cecf284cef: net: create system::run_until_completion() to ensure ping_node() does not create zombie process... #random hi #random yo #random when I try airdrop I got "Connection failed" (darkfid & drk subscribe are running) #random pi: try now #random it works! :) #dev haumea: why do you say the p2p code needs to be rewritten? #random https://www.wired.com/story/a-dangerous-new-home-for-online-extremism/ #random Title: A Dangerous New Home for Online Extremism | WIRED #dev because there's a receive loop in Channel which uses Arc that can keep Channel running even if it's shutdown #dev it should probably just upgrade as needed and self destruct when channel is stopped #dev and i'd like to look into AsyncDrop so you don't need to stop() a channel explicitly #dev also i want to make all the ownership and process explicit in a spec doc #random I've airdropped 100 tokens, then 1 (tot 101) but I've read "There is a limit of 100 for testnet airdrops currently" #random pi: 100 per airdrop #random I'm loosing connection with ircd... I resend my previous msg #random > "How can we ensure the metaverse doesn’t give rise to digital white ethnostates or cyber caliphates?" #random what is a digital ethnostate? #random lmao #random anyway whatever it is, the article makes DAOs sound desirable #random haha ikr #random cool they mentioned Odysee #random > there is an ideological incentive too: their fundamental distrust in the establishment #random how DARE they question the narrative #random > Redacted Club DAO, which is rife with alt-right codes and conspiracy myth references, claims to be a secret network with the aim of “slaying” the “evil Meta Lizard King.” #random XD #random evil meta lizard king sounds amazing lmao #random draoi: https://www.wired.com/story/27-year-old-codebreaker-busted-myth-bitcoins-anonymity/#intcid=_wired-verso-hp-trending_019a7499-5a50-473d-8fa9-f4352b0198bc_popular4-1 #random Title: How a 27-Year-Old Codebreaker Busted the Myth of Bitcoin’s Anonymity | WIRED #random about sarah mieklejohn by andy greenberg... weird #dev thanks for the info, I know you suggested to me to make a p2p app to get a better grasp of Rust, seems like that would be helpful for rewriting #dev the API won't change, just the internals #random " In fact, eCash was based on a mathematical technique called zero-knowledge proofs, which could establish the validity of a payment without the bank or recipient learning anything else at all about the spender or their money In fact, eCash was based on a mathematical technique called zero-knowledge proofs, which could establish the validity of a payment without the bank or recipient learning #random anything else at all about the spender or their money" #random that's kinda cool that zk proofs have had applications since the 90s, I just assumed their real use only happened recently #random anyhow i'm off to bed, gn #random that article is wrong, ecash used blind signatures #dev : @skoupidi pushed 1 commit to master: 9a2fad2c0f: drk: replaced rest hardcoded balance base10 decimals with the const #random does it work? #dev gm #dev @deki well, for sure when this is ready... the challenge would be about creating the dapps that empower the users #dev To write a p2p app seems fun @deki, once I finish the docs it would be my next step #dev greets @humea, yeah indeed Haskell type system is robust af, and overall learning functional paradigm opens your mind a lot as programmer. I highly recommend it. #dev ash: you have any math background? #dev if you know matrix/linalg somewhat decently, you should check out groth16 algo. you can pick it up real quick #dev this is not a test #dev ACTION waves #dev hey, learning to use this irc chat :) #dev welcome #dev new here, and want to contribute #dev ideally, would like to dive into the rust crypto/math stuff #dev have some considerable python and devops skills as well #dev v cool, maybe you already saw: https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: Contribute - The DarkFi Book #dev including nix, the language of choice for reproducible builds #dev yes, thanks saw this and will be going through it #dev I have yet to get setup with tau/taud, the task manager you all use #dev hey, very happy to be here :) #dev so, ok, maybe as a start I will look into the following: python bindings, tests, and documentation ... just as a start :) #philosophy desci apps on darkfi can be cool perhaps? #philosophy in desci, anonymity is super important, because an idea should be judged for its value, not for who shares it #philosophy ++ #philosophy right now, there's this big problem where the messenger is given more importance than the message such that a message would be evaluated on the basis of the messenger #philosophy in the context of science, and other areas, but if we focus science here, the messenger is totally irrelevant #philosophy what matters is the message #philosophy whether the messenger has no education, 10 phds, etc, if the message is good, it is good #philosophy just like someone who is looking for gold, what matters is that the gold is real, who brought the gold is irrelevant for the honest seeker #dev humea: I'm working in the groth16 algorithm right now from the part of the verification, not the core of it because there is a mathematician in the team. But definitevely interesting taking a in depth grasp. #dev I'm reading the moonmath book to get some idea of it from the mathematical side #dev Is there a tutorial or something regarding the groth16 protocol? #philosophy isn't science peer review anonymous? #philosophy one of science's big problems is its funding - funding agencies are captured by dull, nihilistic bureaucrats #dev pebble: we are testing new p2p code, then we'd migrate to darkirc (ircd+history) and we'd deploy tau #dev dasman: Should the dasman.xyz:5262 seed node be in a healthy state? Not succeeding to find any peers for me, with the tip of master. #dev Or anybody else running a public node? #dev I'd like to step through some of this p2p code against the tip. #dev dark-john: you get send_version() error? #dev Cuz i got that just now #dev Not in the log. If there a higher verbosity setting you have? Or you just see this in the debugger. #dev fyi - I zapped my TOML config file, let it generate the default and then just switched to your node only as the seed. #dev No other non-default settings. #dev Fairly standard looking STDOUT. Goes arond the loop 3 times, never finds any peers, so never gets thew DAG synced, and then quits with DagSyncFailed #dev No, it's an [ERROR] #dev Try now, worked right away for me #dev grepped. So send_version() would be an error with text output. #dev right #dev So you ARE getting that Error every time? #dev What are you running as your own seeds[]? #dev You could get DagSyncFailed if you're not connected to any peers, you'll try for 10 times, if you see synced from 0 peers then you won't sync and get that sync failed #dev That is exactly the situation, yes. #dev Looks like there are a few different counters, so I am confusing the counts. #dev seeds = ["tcp+tls://dasman.xyz:5262"] #dev Attempts at seeding hosts, attempts at syncing event dag #dev Are you running two nodes? #dev One for testing as well as that one which is running? #dev you'll be connecting to seed everytime until you get your outbound slots filled #dev yes #dev Should be anyway! #dev I tried to run dnet on the side to help debug, but it is not working right now. #dev Think stepping through the debugger is likely my best approach. #dev dnet should work fine #dev sec #dev Oh - it's worked this time, it seems. #dev to sync the dag at least #dev sending messages is not happy #dev No connected channels found for broadcast #dev Could you send a message to dev on that network and see if I can see it? #dev sent #dev yeah I'm getting that "no connected channels found for broadcast" as well #dev balls. thanks for trying. #dev Let me get my debugger going. #dev Just for clarity - you have one node only running (publicly visible as dasman.xyz:5262)? #dev That's the seed node #dev There is another node running as a peer #dev Right - and you have another node locally testing #dev right #dev dasman.xyz:2654 #dev Is your seed node an instance of lilith? #dev Plus another one locally testing #dev It is yes #dev So you have the publicly visible seed instance (lilith executable), another publicly visible node instance (darkirc), and then the local darkirc instance? #dev Correct #dev 22:11:28 [ERROR] [P2P] Read error on channel tcp+tls://dasman.xyz:5262: IO error: connection reset #dev 22:11:28 [ERROR] send_version() failed: Channel stopped #dev What does lilith do different from darkirc? They are both using the same p2p components, but lilith is there ONLY as a seed node? Not running any "application" on top of the p2p? And presumably lilith is also actively pairing too? And then the two darkirc nodes have that network layer, but then also the application layer on top? #dev And seeds[] could point to any p2p application instance, but lilith is the simplest way to seed the network because it is doing exactly and only those p2p bits so should be very stable? (when the p2p itself is stable, of course!) #dev I think upgrayedd or beep would answer better, but afaik lilith has some extra protocols for peer discovery, plus it can have multiple seeds (networks) e.g darkirc and tau #dev Has your lilith node been running for a while? #dev dark-john: lilith: A tool to deploy multiple P2P network seed nodes for DarkFi applications with a single daemon. #dev Mother of all daemons #dev dasman: it doesn't have any extra stuff #dev I thought I read that somewhere in your conversation with beep #dev it just spawns an app-agnostic seed for each configured network #dev :) #dev upgrayedd: hey! #dev that was probably the whitelist cleanup #dev since lilith acts as a seed, it must also keep track of nodes liveness per network #dev ah then, my bad #dev to have up-to-date peers to share #dev right #dev so to answer fully to dark-john: #dev yes #dev ash: youtube has a fair few videos of people explaining groth16, also a number of articles. I've been going through this one: https://www.youtube.com/watch?v=VQyDSxB9Bls #dev Title: Zero-Knowledge Proof: Groth16 - YouTube #dev fyi the net code is not stable rn #dev Looking at the lilith toml file, would the tsv files referenced in each of the network sections just be manually created? There is a version number there per network, but I don't see a matching version number in the darkirc toml. Is that just implicit? (some number in darkirc code?) #dev i would not suggest deploying nodes/ large scale debugging efforts rn #dev ok. Any way we can help? #dev all good, i should have more info 2m #dev dark-john: those tsv are from previous version, where lilith kept the seeds manually, but thats integrated into the new greylists impl so they are obselete #dev and yeah it was created on runtime #dev what's in your lilith toml, dasman? #dev version number configured there will correspond the to application version which is exchanged during handshake #dev there's a bug inside message.rs/ message_subscriber.rs where version messages are being sent and recv'd but not picked up by the subscriber #dev so with that you can have a seed for both darkirc 0.4.1 and 0.5.0 #dev just gathering info atm #dev Right, so implicit versioning on both sides, and a runtime validation that they match? #dev gn #dev dark-john: https://pastebin.mozilla.org/FBTwP3MG #dev Title: Mozilla Community Pastebin/FBTwP3MG (Plain Text) #dev s,seeds,peers #dev So that version configurability is ONLY for lilith? So that lilith can be running multiple parallel networks with different versions? And 0.4.2 is the current/latest, right? #dev yeah its only for lilith #dev actual app nodes use their build version number in version exchange message #dev Right #dev Are there multiple code-paths in the network stack code then? So you can create a 0.4.1 p2p instance, a 0.4.2 p2p instance, etc? #dev one correction: yeah the hostlist is for the current impl, still generated and filled on runtime #dev well, lilith code is like 400 lines(including comments) #dev check it out :D #dev OK - will do #dev I've gotta say, I don't like the idiomatic use:: patterns in Rust, with everything resolved in that section rather than more explicit namespacing in the code. #dev you comming from cpp right? XD #dev Indeed I am. #dev Just stuff like bringing a very common name like Value or Error in. #dev And then using it in function. #dev It's extra mental load. #dev It's fine for one level, but when you're flattening multiple levels, it hurts my head! #dev Anyway ... reading. #dev the code is way cleaner tho, and doesn't allow for import errors #dev No, I am sure it will resolve any clashes. #dev Terser, I would agree with. Clearer ... not so much. #dev I dissagree, but I guess its just different way of thinking #dev I am not Rust idiomatic in my brain yet. #dev Sure I will get there. #dev I wouldn't say this is something rust brought #dev even cpp allows defining file-global namespace #dev its just dev explicitness thats really common in cpp, compared to other languages #dev It's just a pattern, yes. #dev so imo its more of a habit rather than something fundamentally different #dev You could have done exactly this with C++ "using", but it would not have been idiomatic to have them spelt out so deep. #dev more common to just bring in the top-level namespaces. #dev you can do that in rust to, like in python with import * from foo #dev std::vector, etc. used in the code. #dev but thats even worst imo #dev why not explicilty define what you are using? #dev I don't understand the argument against that #dev Fair enough. I'll stop boomering. #dev Gotta run for a bit. #dev lol actually its not boomering XD #dev dasman: still here? #dev upgrayedd: yeah #dev speaking of lilith I opened the code and see this todo: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/lilith/src/main.rs#L339-L342 #dev Title: darkfi/bin/lilith/src/main.rs at master - darkrenaissance/darkfi - Codeberg.org #dev I pretty sure it was resolved #dev any chance the commit gone to the shadowreal? #dev when? #dev if in past month then maybe #dev I don't think so #dev but maybe my mind is tricking me #dev let me fix it real quick #dev maybe you solved it in your head but forgot to actually write the code XD #dev yeah probably XD #dev : @skoupidi pushed 1 commit to master: a7120c6fca: lilith: remove missleading todo... #dev dasman: I guess I just forgot to remove the TODO comment, since the version attribute was already there #dev XD #dev lmao #dev best kind of fixes: just remove the todo XD #dev XD #dev Part 2 of the Amir interview is up: #dev https://twitter.com/BobSummerwill/status/1751128306207150415 #dev Bob Summerwill(@BobSummerwill): Part 2 of @Narodism interview, this time on @DarkFiSquad with @RiceTVx: https://t.co/4KpzdI9Gd0 #dev The part actually about darkfi :-) #dev ash: did you see the script/research/zk/ dir in the repo? also check crypto section of the darkfi book #dev pebble: lmk when you're around so we can exchange keys and get setup #random test #random test back #dev gm #dev haumea: I added zk proofs and sigs to the fees and it significantly makes them bigger #dev haumea: So I think we could just divide the gas by 10 or 100 #dev haumea: And have that as the actual cost #dev ++ is that running time or just the size of the tx? #dev i'm guessing latter #dev Signature verification is based on tx size #dev ZK has some lazy algo: https://github.com/darkrenaissance/darkfi/blob/master/src/validator/fees.rs#L28 #dev The latter can be tweaked, but I still think we should just div #dev At this point even the fee call is 0.4 DRK #dev oh yes ofc it should be reduced #dev was just thinking about the relative costs / the estimate methodology #dev anyway i'm not too worried about this, we will get it right over time #dev Yeah so on a high level: #dev 1. https://github.com/darkrenaissance/darkfi/blob/master/src/runtime/vm_runtime.rs#L162 #dev Every operator/opcode in WASM is 1 gas. I don't think we should bother with changing this. (For example Cosmos uses the same logic) #dev aha great #dev It's difficult and time-consuming to go through every possible WASM opcode and have some sensible accounting #dev that makes sense #dev 2. https://github.com/darkrenaissance/darkfi/blob/master/src/validator/fees.rs#L28 #dev the wasm ops are all quite cheap anyway #dev The ZK proofs are accounted for with this algorithm. It should probably be tweaked by doing certain benchmarks. #dev 3. https://github.com/darkrenaissance/darkfi/blob/master/src/validator/verification.rs#L511-L513 #dev yeah so i think some of those gadgets like Ec, when added increase the circuit size, but then further ec ops won't affect the zk circuit #dev until you get pushed to the next power of 2 for rows #dev Signatures are fixed_fee_per_sig*n_sigs + tx_size #dev haumea: Yeah that's likely true. Later we'll have a dynamic table configured when there is time to build such an algorithm #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zk/vm.rs#L310 #dev Using this #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zk/vm.rs#L377 #dev It can be fed into a configuration function #dev So a proper algorithm would know the optimal rows and columns, depending on what is requested for the circuit #dev You could even have a preference between proof-size vs. verification-time #dev Or whatever metric #dev ideally this optimization could be done offline before zkbin is deployed on chain, then knowing the cost is a straightforward calc from the rows and cols used #dev but that's not what we have here, so using the ops in zkbin is a good second method #dev It's not related to zkas but the actual vm #dev Nothing would change in zkas #dev like right now we load sinsemilla chip for every circuit, but not every circuit uses it. possibly without that chip, you reduce the table by 2 cols... although i think EcMul chip also requires loading it? #dev No I think only Merkle stuff uses Sinsemilla #dev There's the hash and the lookup table #dev unless i misunderstood you, i was saying it's because the zkbin consists of ops that operate halo2 api to build a table, whereas the cost comes directly from the table layout itself #dev s,hash,& function, #dev Yeah my idea of the ZK cost is the halo2 cost #dev Since the VM eventually will end up self-optimizing, we'll likely have to change the cost algorithm #dev ok, yeah so as an example, just loading sinsemilla will increase the table cost by 2 cols since it introduces 2 new commitments #dev I just did this as an initial solution #dev Yep correct #dev yeah nw, don't want to be pedantic, but we can create an accurate cost estimator later #dev It's cheap to configure the circuit, so we'd just do a bit more computing to have the actual optimized cost #dev ok #dev You never end up verifying the proof since you know if there is enough fee in advance #dev (Same for signatures) #dev Only wasm needs to be executed to pick up the cost there #dev cool #dev the old zcash channel layout was better #dev this new one is way too fragmented #dev gm #dev : @draoi pushed 2 commits to master: cbfef54aab: chore: remove artifact from protocol_version #dev : @draoi pushed 2 commits to master: 5aa187913f: refinery: bugfix... #dev : @draoi pushed 3 commits to master: 1deb70efc5: doc: fix typo in services.md #dev : @draoi pushed 3 commits to master: ffee76843a: dchatd: bugfix... #random test #random test back #random https://www.youtube.com/watch?v=hrorddnVtRE #random Title: Let There Be DarkFi w Amir Taaki (Part 2) - YouTube #random great talk with Amir #random errorist, this one was quite btc centric, but the vvvexchange twitter spaces, people went crazy #random i think it's a signal of the bull market incoming, brand recognition from darkfi, and people getting excited over the project #random ppl are asking to invest in darkfi... it's like where were you a year ago??? #random well I wish I discovered it a year ago lol only because it would have given me a reason to start learning Rust #random I only came across it I think November after someone shared the dark wallet youtube video on twitter, and that drew me in #random yeah end of November just checked, do you guys know Riva on twitter? She shared the video, and seems pretty involved in crypto, plus she shared an article I wrote last year which got me a lot of exposure for my site which was nice #random first time hearing about her, that's nice #random woah i want this: https://twitter.com/rivatez/status/1488547000475799554 #random Riva(@rivatez): the perfect hat doesn't exi- https://t.co/QDaS4NHxa2 #random haha I actually have one of those caps, this guy sells them: https://www.d3vur.com/ #random Title: D3VUR LA's custom embroidery hats caps shirts and apparel. #random I wear it in public and have had a few people approach me saying they know about templeOS #random based #random we should dedicate mainnet release to terry, genius and dedication #random 100% he deserves it #dev hey I was going through the code and noticed there are 2 instances of decode_base10 where there's a hardcoded value of 8. I know the other hardcoded values were changed recently, is this meant to be hardcoded: https://github.com/darkrenaissance/darkfi/blob/deb784d68dd15d34e2eb6dc4c4d7b6c50ccb1610/bin/faucetd/src/main.rs#L476 #dev also on line 733 in the same file #dev the faucet will be deleted soon #dev so don't worry too much about that particular instance #dev ah ok, how come? Was it only used for test purposes? #dev it was used to airdrop coins for new users to do PoS mining, but PoW doesn't require any airdrop to get started #dev okay, thanks for the explanation #random haumea: yup, the FOMO is strong rn #random I see lots of projects raising up to 5m in a few days, most of them are scams with anon teams #random dunno if we are really in true bull market territory yet though, but things should start heating up after the halving #dev thinking of building a cpu mining rig for xmr and later darkfi #dev https://xmrig.com/benchmark?vendor=amd #dev Title: RandomX Benchmark - XMRig #dev AMD Eng Sample: 100-000000053-04_32/20_N can generate more than 44.09 USD monthly income with a 44317.76 H/s hashrate on the XMR - RandomX (XMRig) algorithm. #dev need to find that CPU lol #dev errorist: threadripper 7995wx has the tray id 100-000000884 #dev so I reckon that one is a heavilly binned version/engineering sample of that line #dev that score is with 20 cpus, with each costing 10k, so we are talking already 20k just for the cpus #dev a dual socket server mobo will probably cost you upwards to 2k(since last gen) #dev all that excluding ram, psu, ups(for 24/7 operation/protection) #dev lol not 20cpus, 2 cpus XD #dev yup, apparently these eng cpu's only run with specific supermicro mobo with an older bios #dev yeah these samples are usually vendor specific orders #dev tho at 45$ per day(I don't know if you took power costs into account) you will need ~445 days for full roi #dev not bad for a product of that caliber #dev just my luck there's a bug in radeon 7700 xt linux cards #dev i had to bind a keypress in my WM to do rmmod amdgpu; modprobe amdgpu #random ok be good if it stays that way for a while until we're ready XD #random https://www.cnbc.com/2024/01/26/tech-layoffs-jump-in-january-as-alphabet-meta-microsoft-reach-high.html #random Title: Tech layoffs jump in January as Alphabet, Meta, Microsoft reach high #random "The Nasdaq is at its highest since early 2022, and Alphabet, Meta and Microsoft have all reached fresh all-time highs. " #random tech stocks booming again #random debian core dev / mozilla director proj to reimpl coreutils in rust: https://sylvestre.ledru.info/blog/ #random Title: Sylvestre's blog #random > join our discord #dev test #dev test back #dev humea: I'm looking the Groth16 folder, let's do that after the dev meeting this monday ;) #dev haumea: * #dev gm hackers #dev greets #dev ash: just look at groth16.sage, the groth16/ folder is not really needed #dev unless you're doing that tutorial #dev : @zero pushed 1 commit to master: 43621729fe: spec: money xfer params #dev !topic remove dead code from money #dev Added topic: remove dead code from money (by haumea) #dev I'm working on it if you mean faucet stuff #dev i also meant the functions in MoneyFunction #dev Stake/Unstake and anything else there #dev but why? #dev Stake/Unstake is used by consensus #dev consensus contract #dev are we keeping consensus? #dev we are going to deliver the spec to auditors for review, and i need to spec everything #dev anything unused should be deleted #dev *deliver the code i mean #dev you don't have to delete unused stuff #dev why are we not keeping consensus? #dev because then it needs to be specced and auditors will review it #dev the money contract should contain just the minimal code we use, or at least the functions should be deleted from entrypoint.rs and MoneyFunction in lib.rs so they're not callable #dev or should i spec these contract functions too? or are they unused/deprecated so we ignore them? #random test #random test back #dev ACTION back online #dev they have an already good documentation so speccing them should be easy #dev they are not deprecated, they are the basis for the PoS transition #dev if we remove them, we must also ditch all other PoS futureproofing we have in place #dev as then that becomes obselete #dev which then will make the PoS transition 1. needing to restore these stuff, 2. Block struct rewrite and having different storage for blocks version #dev (simmilar to what happened in ethereum) #dev i'm just unsure about shipping code that is audited for a future hard fork, which is likely to change anyway #dev they will be re-audited in the future if thats what you mean #dev otherwise I'm saying the delema is: keep the futureproofing bloat now, or nuke everything for a more clean current impl? #dev with the implecation of having to handle different block structures in the future #dev Why would they have to be audited if they're not callable? #dev they are callable #dev So disable it #dev that's what i'm asking #dev You asked to delete it, which I don't think we should #dev Unless we will not do PoS ever #dev they are also part of block handling, since we store consensus related stuff in Slot #dev i asked whether we should delete the code or disable the function #dev someone can say that since PoS is not callable, then why doesn Slot exist in the first place #dev brawndo: can you also clarify if this is correct: #dev GenesisMint - create a new token #dev TokenMint - mint some tokens #dev TokenFreeze - prevent minting new tokens with TokenMint #dev GenesisMint is a special function applicable only on genesis block #dev GenesisMint is minting some initial supply for the genesis block #dev TokenMint is minting arbitrary tokens - NOT native tokens #dev TokenFreeze locks _further_ minting of some minted arbitrary token #dev ok, how is that new arbitrary token created? with TokenMint? #dev So e.g. if you want to create a fixed-supply token, you'd execute those two calls atomically in a single tx #dev Yes TokenMint #dev ok thanks #dev native tokens are minted through mining blocks #dev i'm going to comment out Stake/Unstake from lib.rs #dev ok #dev so they should be uncallable #dev Don't bother with the tests/test-harness since I'm deeply into that bcos fees and stuff #dev i'm not concerned with any test stuff so all good #dev haha #dev wait #dev I again ask: if we disable those, the natural next question is: why do we keep rest future proofing? #dev ok i'll just spec them, they're tiny functions anyway #dev if i try to disable them, it breaks the consensus contract #dev // Spend hook should be zero so there's no protocol holding the tokens back. #dev if input.spend_hook != pallas::Base::ZERO { #dev this means DAOs cannot stake #dev haumea yeah its just solo staking for now #dev you don't need this contract, we could use spend hook and user data for this #dev so to stake, you create a new coin where spend_hook = consensus::unstake(), and you prove this in consensus::stake() #dev Nah since there needs to be a grace period between staking - proposing - unstaking #dev ^^ #dev And also you need to completely separate the staked coins vs native coins #dev you can do that #dev They're two different sets of coins #dev the grace period works #dev Extra contract is the safer and simpler solution #dev yes it's two different sets of coins, because the native tokens are locked #dev they are not locked #dev this call is duplicate functionality, it even introduces errors #dev they are burned #dev and you mint consensus coins #dev They're burned #dev i'm saying with spend hook and user data, we can do this in a better way using existing functionality in money::transfer() #dev having the extra call introduces bugs and more room for error #dev you can do grace periods, and minting new coins #dev you can even anonymize when the token was staked #dev (when unstaking) #dev !deltopic 0 #dev Removed topic 0 #dev upgrayedd: i'm just talking about the functions in money contract, and maybe consensus contract (optional, i can also write it without those money functions) #dev what other consensus code is there? #dev proposal proof and unstake request #dev also genesis stake, where we directly mint consensus coins in genesis block #dev !list #dev No topics #dev Yeah that was so we could have initial staking since no other way of distribution for voting on first block #dev oh gawd fees are working #dev WHEW #dev thats great news #dev how do you plan on implementing a wallet? Because at the moment isn't it all done via the CLI? Or will it stay that way? #random https://everything.curl.dev/libcurl/libcurl #random Title: --libcurl - Everything curl #random wtf #random Pretty cool #dev : @draoi pushed 12 commits to master: cf431cbd69: dchatd: downgrade version to match master #dev : @draoi pushed 12 commits to master: 78964589ca: inbound_session: activate subscriber before accepting inbound connections... #dev : @draoi pushed 12 commits to master: 7959d9741c: channel: safely shutdown the channel when an error is triggered #dev : @draoi pushed 12 commits to master: e631e8ce68: doc: minor tweak to channel.rs doc #dev : @draoi pushed 12 commits to master: ae154de787: chore: fix typo #dev : @draoi pushed 12 commits to master: ccf660b924: chore: fix comments and cleanup #dev : @draoi pushed 12 commits to master: e9e3bd41ca: Revert "channel: safely shutdown the channel when an error is triggered"... #dev : @draoi pushed 12 commits to master: 4cb76df1f0: update Cargo.lock #dev : @draoi pushed 12 commits to master: 195dfb6935: chore: cargo fmt #dev should work now #dev test #dev test back #dev still need to test darkirc, but works on dchat #dev Hi! Good morning! #dev !list #dev No topics #dev !topic net update #dev Added topic: net update (by draoi) #dev deki: it's 80% done https://github.com/narodnik/fagman #dev Title: GitHub - narodnik/fagman: Facebook-Apple-Google-Microsoft-Amazon-Netflix super app #dev ding ding #dev dong #dev !start #dev Meeting started #dev Topics: #dev 1. net update (by draoi) #dev Current topic: net update (by draoi) #dev hey #dev Hey #dev ohayou #dev we fixed some bugs in the net code #dev 78964589ca02d48782d3d598ba4d70b4b58ed3e2 #dev 589a847205c8157dda9f9ff788dfc8c83c764011 #dev the 2nd one is not rly a bug but rather a change to the inbound session defaults #dev i need to rewrite a whole bunch of net code to be less fragile #dev will do it after the spec, should be easy enough #dev the 1st one was a bug tho #dev we should also spec it too #dev now the refinery and seedsync is working as expected, however after just quickly running it on darkirc i notice some strange behavior #dev Nice @ fixes #dev awesome! #dev I'll update darkirc nodes #dev no plz wait #dev i want to test a bit more with dnet etc #dev Oh okay #dev haumea: What would you like to clean up in net? #dev There's still some flaky code regarding buffer allocations and stuff, which should be checked and improved #dev well firstly the main_receive_loop() takes an Arc, so ideally it instead takes WeakPtr, just upgrading as needed #dev so channel ownership becomes much easier #dev yes that as well needs to be fixed #dev Yeah you were saying there were still channel references that were not dropped fully? #dev right now it's ok, but you must call .stop() on a channel #dev otherwise it keeps running the receive loop, ideally when all owners are dropped, the receive loop will auto stop too #dev ok #dev that's it from me #dev If you can find a way for main_receive_loop to just be main_receive_loop(&self) then the problems would be solved #dev you cannot in async code sadly #dev ic #dev Then I suppose would be worth it to skim where channels are being cloned #dev And make sure there's no debris #dev it's just the receive_loop, so instead of taking Arc, it would take Weak and then upgrade specifically where it's needed #dev let packet = match message::read_packet(reader).await { #dev this line is majority of time in the loop and it doesn't need the channel so we're good #dev another interesting thing is AsyncDrop #dev i can make a util like this: https://github.com/t3hmrman/async-dropper #dev Title: GitHub - t3hmrman/async-dropper: 🗑 async-dropper is probably the least-worst ad-hoc AysncDrop implementation you've seen so far. #dev aha #dev that way we don't need stop #dev Hi #dev How does it help/work? #dev Hi ash #dev so right now it's non ideal because the receive loop is created by channel, ... but it also owns the channel #dev > How does it help/work? #dev we don't need to explicitly call .stop().await to close the receive loop #dev it happens automatically when scope ends #dev But so does an Arc #dev ofc it's not needed since with upgrade/downgrade for recv, it will just fail once channel expires #dev We use stop() to trigger a notification for it to be removed from the set of channels #dev we use stop() to close the receive loop #dev self.receive_task.stop().await; #dev hm yeah #dev I still don't see how AsyncDrop closes it #dev AsyncDrop means you can create a destructor to call stop() automatically when scope ends #dev But your master references are in p2p.channels hashmap #dev So that needs to be garbage collected #dev ahh I see now #dev Yeah ok #dev Understood #dev sry took me a bit :D #dev anyway it's nbd, it's not even needed #dev just makes things tighter / less error prone #dev i just need to go through it all with a careful eye like for the contracts #dev there's some refinery stuff that still needs to be cleaned up #dev will finish v soon #dev 78964589ca02d48782d3d598ba4d70b4b58ed3e2 actually fixes a race condition that only happens on localhost because of 0-latency #dev *nod* #dev Next? #dev ++ #dev !next #dev Elapsed time: 18.6 min #dev No further topics #dev :) #dev Ok just quickly, I'm deep tweaking the contract test harness #dev tx fees seem to be working #dev So I'm adding that to all the calls #dev so we're basically fully functional after contract deployment? #dev And while at it, also making the benchmark/stats more fine-grained so we can see how much time specific things are taking to exec/verify #dev ++ cool #dev haumea: Contract deployment is already implemented #dev It's working already in git master #dev ah that's great #dev Just need to plug in the fees into everything and we should be g2g #dev :D #dev we will need some kind of benchmarking app maybe #dev where we can do 100 iterations of a tx and take the average time #dev we will likely want to try different configurations, zk contracts and so on #dev I'm making event graph sync even faster with splitting missing parents on peers (using async_iter for that) but somehow it makes a tiny bit slower, so I'm working on that #dev nice thanks a lot #dev haumea: Yeah we'll get there eventually once all the pieces are in place #dev but that's really good, we're basically done, right? #dev haumea: Then we'll have all the high level functions to run anything #dev ++ #dev Yeah upgrayedd is working on the wallet #dev ah yeah that too #dev We still have to do merge mining #dev ah ok got it #dev The p2pool dev got in touch #dev and that bridge, no news on that #dev https://github.com/darkrenaissance/darkfi/issues/244 #dev Title: Merge mining with Monero · Issue #244 · darkrenaissance/darkfi · GitHub #dev atomic swaps #dev not bridge #dev yeah #dev Yeah atomic swaps is lingering https://github.com/darkrenaissance/darkfi/pull/246 #dev Title: feat(swapd): begin atomic swap implementation by noot · Pull Request #246 · darkrenaissance/darkfi · GitHub #dev Should ping noot #dev cool i like the idea of moving into the end phase and just doing hardening / code cleaning #dev boring honest work #dev :D #dev end? #dev wfm #dev !end #dev Elapsed time: 9.7 min #dev Meeting ended #dev !end #dev Elapsed time: 28442368.5 min #dev Meeting ended #dev ty al #dev gg #dev Hi I'm ash and new here. I already have experience with blockchain, work fulltime developing smart contracts in Cardano and developing a groth16 validator. Interested on learning Darkfi. How is the work dynamic and any suggestions how to start. #dev no we must vote #dev hey ash #dev https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: Contribute - The DarkFi Book #random Nice series btw: https://thetvdb.com/series/slow-horses #random Title: Slow Horses - TheTVDB.com #dev haumea saw the groth26.sage file #dev if you can show competency and make commits, you can get hired #dev Initiative is important #dev ash: check that contrib guide above, if you want to learn groth16, can also assist with that. do you have any linear algebra knowledge of matrices? #dev yeah we value initiative above all #dev Cool! I'm want keep my path in the zk development. #dev file:///home/narodnik/src/darkfi/doc/book/crypto/zk_explainer.html #dev ah ffs #dev rip #dev lmao #dev doxxed #dev ash: https://darkrenaissance.github.io/darkfi/crypto/zk_explainer.html #dev Title: ZK explainer - The DarkFi Book #dev x D #dev I'll be heading off for a bit, cya later #dev o/ #dev Mmmm I'm working towards a having more math background, nowadays I work on the contract engineer side and my paals are doing the math effort. #dev u.u #dev But I'm really newbie in math overall #dev don't know linear algebra #dev ash: https://darkrenaissance.github.io/darkfi/philosophy/books.html#abstract-algebra #dev Title: Books - The DarkFi Book #dev start with the pinter book #dev also https://darkrenaissance.github.io/darkfi/crypto/reading-maths-books.html #dev Title: Reading maths books - The DarkFi Book #dev Thank you, saved the links. #dev Btw, I'm curious what is the ledger model of darkfi? Some form of extended-UTxO? #dev ash: It's a utxo model, close to zcash if you look into that #dev oh I see, as far as I know zcash doesn't have smart contracts, so how is the state managed across transactions in order to allow smart contracts? #dev Imagine that there is a way to attach data to a utxo so a smart contract could read it to perform validations, right? #dev ash: take a look at the spec and architecture sections of the book #dev for example https://darkrenaissance.github.io/darkfi/arch/anonymous_assets.html #dev Title: Anonymous assets - The DarkFi Book #dev https://darkrenaissance.github.io/darkfi/arch/smart_contracts.html #dev Title: Smart Contracts - The DarkFi Book #dev .etc #dev : @zero pushed 1 commit to master: 92387af2ab: book: remove section on parallelized tx verif #dev : @skoupidi pushed 1 commit to master: 16103b84a7: Night of the living dead #dev : @skoupidi pushed 1 commit to master: 025912d245: doc/Makefile: use correct darkfid rpc files #dev : @skoupidi pushed 1 commit to master: c0f1038277: doc/arch: removed consensus contract related stuff #dev : @skoupidi pushed 1 commit to master: 4648b8fb26: darkfid/tests: disable pos test #dev Good (Y) #dev hey all #dev brawndo: for token mint, similar to how freezing works, i want to add something to control which contract functions can mint specific tokens #dev will think it over a bit more, but it's a small patch and seems the best way #dev test #dev test back #dev hello, don't think my previous message went through it's raining here and the internet always stuffs up when it rains #dev you guys have mentioned knowing linear algebra, is it mainly knowing matrix operations? Or does other stuff come into it like eigenvalues/vectors etc? #dev just basic matrix operations #dev https://agorism.dev/book/math/linear-algebra/groups-matrices-vector-spaces_james-carrell.pdf #dev ch3 of this book, although ch4 for enrichment is good #dev ch2 is a good primer on abstract algebra fundamentals if you've never studied them before #dev the main thing is to be comfortable working with matrices that it feels natural, and you understand the different forms of multiplication #dev https://ghenshaw-work.medium.com/3-ways-to-understand-matrix-multiplication-fe8a007d7b26 #dev Title: 3 Ways to Understand Matrix Multiplication | by Glenn Henshaw | Medium #dev oh nice, yeah I actually know a lot of that already about matrices, I did a lot of math when I was doing my degree and matrices were pretty easy #dev probably need to refresh some of the ch4 stuff, but it's nothing new #dev thanks for the links, it's a good way to gauge what I know. Currently just focusing on getting comfortable with Rust and learning groth16, but matrix operations are straight forward (theory wise at least) #dev https://blog.lambdaclass.com/groth16/ #dev Title: An overview of the Groth 16 proof system #dev ty, was following a youtube video series that goes over tornado cash too #dev I will bbl #dev gm #dev : @zero pushed 1 commit to master: 32bf65a1d8: DEP 0003: Token Mint Authorization #dev brawndo: https://darkrenaissance.github.io/darkfi/dep/0003.html #dev Title: DEP 0003: Token Mint Authorization (draft) - The DarkFi Book #dev click [ approve ] #dev i can code this up very quickly #dev it's basically just adding an intermediate layer where token IDs can choose which logic they use for issuing coins/freezing minting #dev then we move the existing logic to another function (auth_mint) #dev haumea: Have you kept this in mind? https://github.com/darkrenaissance/darkfi/blob/master/src/sdk/src/crypto/token_id.rs#L29-L32 #dev (It mentions contract IDs, but the same applies) #dev yes, it doesn't change that since the token ID is still a point #dev btw i'm renaming coin attribute serial to coin_blind, since it's no longer used in the nullifier and its sole purpose is to blind the coin #dev ok, ACK on all #dev I prefer to have a pubkey as the authorisation, also with contracts #dev Since that allows for threshold signatures #dev pubkey still exists, nothing changes #dev thanks #dev All good #dev : @zero pushed 1 commit to master: 0738b42b1c: money: change the coin_attribute serial to coin_blind. We no longer use the serial, and its sole purpose is to blind the coin. Also move it to the end, consistent with all bullas and commits used in darkfi core. #dev ^ might want to git pull since commit touches many files #dev : @zero pushed 1 commit to master: 85cbf1f152: drk: update for changes to serial renamed to coin_blind #dev ^ upgrayedd: see the TODO in this commit. I wasn't sure whether to change it because it might break drk #dev btw shouldn't wallet.sql be moved from src/contract/money/ to bin/drk/ ? #dev : @zero pushed 1 commit to master: 5876e97d20: spec: update for changes to money coin attributes #random anon why aren't you writing a client-server usin http on top of http on top of quic? #random https://github.com/kixelated/webtransport-rs #random Title: GitHub - kixelated/webtransport-rs: Simple WebTransport library in Rust. #random the user avatar is apt #random fitting #random https://www.spiegel.de/netzwelt/web/movie2k-to-beschuldigter-uebergibt-bitcoins-im-wert-von-zwei-milliarden-euro-ans-bundeskriminalamt-a-66a34b4a-a01b-4edf-b622-cdbff14596dd #random Title: movie2k.to: Beschuldigter übergibt Bitcoins im Wert von zwei Milliarden Euro ans Bundeskriminalamt - DER SPIEGEL #random > Men hand over Bitcoins worth two billion euros to the BKA #random noooooo #dev haumea: well I haven't started checking what trully works in dkr yet, it just compiles lol #dev ah cool so i can change this and if it compiles, then all good? #dev yy #dev ty #dev most of them need a rewrite anyway #dev especially dao stuff, but thats yours todo XD #dev ah yes #dev : @zero pushed 1 commit to master: 42a6b92ec6: drk: move coin_blind to the correct position #dev re .sql yeah they can probably be moved away from each contract #dev along with theyr column definitions #dev I will move them away no worries #dev ok ty #random test #random test back #dev : @skoupidi pushed 1 commit to master: 6b74cebdd0: drk: moved contracts sql stuff from their client to drk directly... #dev haumea: ^^ #dev was wondering if you guys would have something like ENS (ethereum name service), then came across this https://darkrenaissance.github.io/darkfi/zero2darkfi/darkmap.html #dev Title: darkmap - The DarkFi Book #dev is that what this is? Like ENS but with actual a proper privacy overlay? #dev deki: thats an example experiment, not in place, but pretty much yeah it matches namespaces #dev ah nice, I like that it's a proper application of ZK #random test #random test back #random test #random test back #dev : @skoupidi pushed 1 commit to master: 07b47fd521: contract/money/pow_reward: simplyfied call to use last block information directly from database overlay #dev : @skoupidi pushed 1 commit to master: f64c4e5750: contract/*: renamed all slot references to block height #dev : @skoupidi pushed 1 commit to master: e53ea14531: contract/money/tests/integration: fixed failing test due to erroneous block height #random test #random test back #dev haumea: here? #dev hey yeah was just working in bed #dev upgrayedd: ^ #dev haume: yo douve day? :D #dev anyway want to talk about time #dev do you have some? #dev ACTION laughs on his own puns #dev yes #dev i started working in bed everyday #dev soience research shows it's optimal to enter flow state #dev and indeed i'm getting an extra 1-2 hours in everyday #dev noice soience #dev so the question is, I saw that you are using days in DAO #dev shouldn #dev 't the more correct approach to use block height? #dev and check that in the contract calls using get_verifying_block_height() #dev so for example the proposal creator inputs N days to the client, and the client translates that to the corresponding block height after that timespan occurs, based on our block target #dev it doesn't have to be perfect, as it will never actually be #dev it's actually modulo BLOCKS_PER_DAY #dev that window can be anything, like BLOCKS_PER_HOUR #dev but your tx must confirm in that time or be considered invalid #dev because the zk proof can only be calculated for that specific value #dev that's why i use days, but i agree days can maybe be hours instead #dev yeah but how you define time in that context? #dev based on blockheight #dev darkfi/src/contract/dao/src/lib.rs:98 #dev ok so you added it to the zk proof directly #dev as part of the proposal bulla #dev yes to avoid leaking any info outside like when the proposal was created #dev this is a kind of hack / trick #dev but i could reduce it from 1 day to 1 hour windows #dev or 8 hours #dev the question here is #dev how you protect from someone back-voting #dev aka vote on a past proposal #dev that has expired #dev darkfi/src/contract/dao/src/entrypoint/vote.rs:84 #dev the zk proof will not verify in DAO::vote() #dev here is the actual check: #dev darkfi/src/contract/dao/proof/dao-vote-main.zk:96 #dev yy ok that what I was looking for #dev so you are doing what I'm saying, aka using verifying block heigh inside the vm #dev you jsut denominate it into days #dev the problem here is, you know that we don't have same block time in each network right? #dev you mean testnet vs mainnet? #dev yy #dev i assume not, so yes it's inaccurate #dev it doesn't matter that much #dev since proposal will just get offseted to the future #dev in networks with smaller block time #dev yep although days is maybe too big, but i think usually people use days anyway for DAOs #dev imho days/etc should be a front/end thing #dev the contract should use block height everywhere for its calculations #dev so you create a proposal on height N with expiration on height M #dev every vote on verifying height you don't need to convert to days internally #dev that way you also don't care about block time #dev as you asume that each client uses the one corresponding to the network it wants to use #dev you cannot do exact height, it must be a window #dev the window has to be big enough that tx is guaranteed to confirm in that time #dev so i guess 1 hour is enough? #dev height is a window #dev how do you mean that window? #dev if i create a proof, it has to be for a specific value #dev yeah exactly #dev so if i target my tx for block height N, i cannot guarantee it gets in block N exactly #dev hence the window size, [N - w, N + w] #dev thats for the proposal creation #dev you can use a window there yes #dev but the expiration time should be (N+w)+expiration_height #dev it's for voting and any time related calc in a zk proof #dev if i create a proof for N, you cannot pass N + 1 instead #dev wait wait #dev why do you need expiration to be a window? #dev the expiration has a fixed time, but that time is only in windowed time, not block height #dev say w = 4, then we have [0, 1, 2, 3], [4, 5, 6, 7], ... #dev yeah, but why? #dev it can just be 7 #dev because lets say i want to vote and the block height is currently 4 #dev i cannot guarantee i get in block 5, 6, or 7 #dev but i can say i will most likely get in block 5, 6, or 7 #dev yeah end? #dev so it's easier to use windowed time, and say [4, 5, 6, 7] #dev runtime will pass verifying slot to the proof #dev where it will be <=7 #dev so the vote will be valid #dev yes but the zk proof will be invalid if i compute it for block height h = 5, but instead i get into 6 #dev aha so its a zk computation thing #dev yep #dev ok gotcha gotcha gotcha #dev it's a trick / hack / workaround #dev I was probably not paying attention when you explained it lol #dev but as i said maybe the window is too big, it could be 1 hour #dev a day is fine I guess #dev well np, we invent and use a lot of these tricks everywhere #dev they are all undocumented #dev (TM) #dev i think we can do 90% of everything fully anon with these collection of tricks #dev ok got 2 other things, unrelated to dao/votes #dev wanna continue? #dev certainly #dev dao thing is clear now to me #dev so the first thing is relatively easy #dev lets say contracts for some fucking reason want to use a timestamp instead of height #dev so how do we define blockchain timestamp? #dev I say it should be last blocks timestamp #dev is that assumption correct? #dev yes #dev I figured its ok, since we allow for some time drift in PoW context #dev so as long as the contract uses a timestamp greated than that of the last block, it will be valid #dev next? #dev well it should respect a few rules #dev like not too far in the future #dev thats a different thing #dev but yeah next #dev yeah we are using the same timestamps checks for blocks #dev but those are defined by the block miner #dev I'm talking inside the vm, where for example you set a timestamp as a limit(similar to dao proposal expiration) #dev that you want to use an exact timestamp instead of block height #dev yeah originally i wanted to do that #dev so there you would use blockchain_timestamp(), which will be the last blocks timestamp #dev its not safe, block height is much safer #dev but we can provide it in the runtime api #dev ok yeah true #dev ok so the next thing is #dev you remember how an epoch is defined in PoW and PoS contexts? #dev some fixed number of blocks? #dev in PoW is fixed number of blocks, in PoS is fixed number of slots #dev I'm asking how that fixed number is defined in each case #dev (I can explain if you don't remember) #dev ah no sorry i don't know #dev will start with PoS #dev so in PoS we devide time in fixed intervals, called slots #dev these are used by the consensus, to define when certain actions can occur #dev so an epoch in that context, is a predefined/fixed number of slots, defining a certain period of actions #dev its usually used to define when validators can enter/exit(aka stake unstake) into the network #dev ok makes sense #dev so you prevent flooding and have network stability #dev so in that context, epoch is purely based on your slots #dev now in PoW, we don't have the time divition, as you don't really care about time in an asynchronous enironment #dev synchronous means everyone does actions on certain timeframes #dev asyncrhonous means nobodoy cares about time, you react after something happens #dev ahh cool #dev so in PoW, since we are in asynchronous environment, we define epoch using different metrics #dev in BTC, is halving periods #dev yep #dev so each blocks epoch, is based on its reward, which is derived on fixed height intervals where we halven the reward #dev why not just say it's based on fixed height intervals? #dev which reward is also based on #dev so you have: genesis block epoch 0, blocks 1 - 10000(where reward is 50BTC) epoch 1, blocks 10001 - 20000(where reward is 25BTC) epoch 2- ..... #dev yeah its the same thing #dev ok yeah got it #dev now the juice/question is #dev since in PoW we don't use slot, we should also change our epoch definion, correct? #dev aren't the definitions equivalent since PoS has fixed time slots, and each slot has a fixed time? #dev > in PoW is fixed number of blocks, in PoS is fixed number of slots #dev no its not #dev since a block can include >=1 slots #dev for example leader for that slot was offline, or in our case nobody won the lottery #dev so no block was produced for that slot, hence the descrepancy #dev so for example if that slot is on an PoS epoch change, the blocks epoch will be different, than if it was on PoW, since more slots have passed than blocks #dev ok well the epoch is defined in terms of some fixed constantly increasing event #dev in PoS you have slots which offer that granularity, but blocks are unreliable #dev but in PoW, blocks are constantly occurring and they are a reliable unit of time #dev yy thats all correct, I'm just saying that the definition/usage of our current epoch should be changed #dev to match that #dev right now we use the PoS definition, aka elapsed time since genesis % slot time #dev which is wrong #dev we have to change it to block_height % blocks in an epoch #dev or to be even more precice, based it again on the rewards halvening intervals #dev yep makes sense #dev since that halvening can be fixed along all networks, so you don't care about target block time #dev less block time will simply mean rewards get halvened faster #dev do we even have halvening? #dev thats a different discussion lol #dev why do we need an epoch? #dev ah to readjust difficulty ofc #dev in reality, with randomx we don't need epoch #dev since difficulty is based on block production #dev aka timestamps #dev how often is the target difficulty changed? #dev epoch is used in btc for difficulty yeah #dev in randomx it always adjust on each block #dev based on the median of previous 720 ones #dev so you always target the block time target #dev (90 seconds in mainnet config) #dev you don't need epoch in that context #dev since you can always derive rewards from just block height #dev ah interesting #dev the reason bitcoin has the difficulty adjustment periodically is because of fears over the difficulty spiking or weird other effects #dev check src/validator/pow.rs #dev we have all the logic/defintions there #dev but i guess it's an unfounded fear? #dev well yeah you need that, since iyrc in btc you know the network hashrate #dev in randomx you don't need that #dev it's not to do with knowing the hashrate, it's that a big mining pool could mine loads then shut down halting all block production #dev it's a kind of DoS attack #dev yeah that what I mean by knowing network hashrate #dev spikes/descrepancies based on how many nodes are mining #dev the same thing can happen in randomx #dev but for a single block #dev the difficulty readjustment period in btc is to smooth out the curve making it very difficult #dev https://en.wikipedia.org/wiki/Moving_average#/media/File:Lissage_sinus_bruite_moyenne_glissante.svg #dev Title: Moving average - Wikipedia #dev this is just a moving average graph #dev so the join, and since the difficulty is low compared to their power, the produce a lot of blocks quickly, rising the difficulty for everyone else #dev although btc uses the median instead of mean #dev then they leave, so next block will get more time to get produced #dev yeah then it readjusts, they repeat the attack again #dev but algo will adjust quickly back to original difficulty #dev nobody can mine #dev it's just a DoS attack #dev its not true, they mine #dev so as far as network is concerned, blocks are getting produced #dev its more like not letting other nodes grab rewards #dev but thats an issue in PoW entirely, hardware monopoly #dev actually it's not about rewards, it's more like they don't mine until difficulty readjusts #dev then they grab the block and push it back up again #dev they just mine empty blocks #dev nobody can use the network #dev aha yeah thats different tho #dev we can actually protect that using MEV tactics #dev well not if nobody else can mine #dev what I'm saying is: we can for example dissallow empty blocks #dev or another thing is to have reward propotional to block work/fees #dev so the epoch/block height reward is a max cap, not a given #dev but i'm not too bothered about this "attack" since it's never happened in practice yet, would be unprofitable for the attacker and not really do much except deny txs until attacker finishes #dev you cannot disallow empty blocks #dev why? #dev i would not make reward dependent on fees in a block, it's a bad idea #dev the miner can make fake txs to himself #dev oh true you are right #dev unless the tx uses fee burning, in which case they lose money #dev reward r must be strictly less than the fees f1, .., fn, so r < sum(f) #dev (if you make reward dependent on fees in a block) #dev we can do that #dev so the block reward is a max cap, based on epoch/block_height halvening rules, and strictly less than the fees #dev that way we can also deny empty blocks, if fee burning is not in place yet #dev i can't comment on the economics of miners not collecting the full fee from txs #dev that seems like a kind of fee burning #dev no its not #dev block reward is different from collected fees #dev you just don't get the full reward if fees are not over that thresshold #dev ok the fee is "discarded" then #dev wdym discarded? #dev in what sense #dev anyway thats a different conversation, lets not distract ourselves #dev so for epoch, are we you ok to change the definition based on blocks intervals, not slots? #dev gm hackers #dev upgrayedd: yes that makes sense #dev (was eating lunch) #dev ACTION : afk #dev cya #dev : @skoupidi pushed 2 commits to master: 2f5de8e999: runtime: removed slot related fns and added gas cost to util fns #dev : @skoupidi pushed 2 commits to master: 3355575721: runtime: replaced timekeeper with verifying block height directly #dev haumea: glhf #markets Solana ecosystem profited the most from this run past few months #markets today people got an airdrop for 10k usd #memes https://twitter.com/SallyMayweather/status/1752692598907470113 #memes Sal the Agorist(@SallyMayweather): https://t.co/aY3VYbRbQw #memes lmao #markets also a huge test for the network, hearing people can't claim, fees are not spiking as high as on ethereum during the defi summer but the network seems to be lagging #dev : @skoupidi pushed 2 commits to master: ccc3a8e3a7: blockchain/header: derive block version using sdk block_version fn #dev : @skoupidi pushed 2 commits to master: 4c45c8d592: validator: cleaned up verification and validations methods and merged the two files #random test #random test back #dev : @skoupidi pushed 1 commit to master: 3e15d146a3: validator/consensus: cleaned up slots logic #random https://neimanslab.org/2024-01-31/why-i-moved-my-blog-ipfs-to-server.html #random Title: Not Acceptable! #random "Why I Moved My Blog from IPFS to a Server" #random this is an instructive article: #random - IPFS users don't run their own nodes so data is not propagated when it's read. #random (unlike bittorrent) #random - had to try and get centralized ipfs gateways to pin his content #random thanks for sharing that, reminded me I've been meaning to look into alternate hosting solutions for my own site/blog because I currently use ghost.io (Jack Dorsey's creation) #dev : @skoupidi pushed 1 commit to master: 2805f1435c: validator: fixed minor encoding/decoding bugs #dev brb #dev : @draoi pushed 2 commits to master: 79512e6dce: chore: fix debugs and cleanup #dev : @draoi pushed 2 commits to master: ccc6b25754: inbound_session: implement PingSelfProcess... #dev hey brawndo, i don't think we need FuncIds map actually #dev since the main use case is to use a func_id inside ZK, we can define func_id = hash(contract_id || code), which can be computed inside wasm #dev so to check the parent caller matches the func_id inside ZK, you just calc the parent caller's func_id and pass that in #dev i think this is the most simplest way for our use case... will think a bit more on this #random test #random test back #dev Sounds good #dev !topic DRK vesting and mining contract mechanics #dev Added topic: DRK vesting and mining contract mechanics (by haumea) #dev lol i found a critical bug #dev tx/mod.rs in pub fn verify_sigs(&self, pub_table: Vec>) -> Result<()> { #dev assert!(pub_table.len() == self.signatures.len()); #dev but pub_table is of type Vec>, and it doesn't check the inner vec sizes #dev so you can just attach no signatures and it will pass #dev if you have a money::transfer() with 3 outputs, i can replace the outputs with my own ones #dev and just skip the signatures and it will pass #dev 0_0 #dev X_X #dev O.o #dev I'll assume you're on it :) #dev sure thing #random hey, looking for guests for a lunarDAO twitter space discussing "privacy applied", using privacy tools in the real world #random if there are any guests or suggestions of people that embody this, drop them here #random it would also be great if they arent already in the lunarDAO network (this'll help introduce us to more people that havent heard about LunarDAO #random hmm interesting... will try to come up with some ideas for that #random that's hard because the biggest users of privacy tools are schizo hackers #dev interestingly the effects of this attack are highly mitigated by the anonymity of transfers #dev because you don't know the value commits to fake them .etc #dev so maybe in some ways, anon cryptosystems are less hackable #dev : @zero pushed 1 commit to master: 7edb0cd217: apply DEP 0003: Token Mint Authorization #dev : @zero pushed 1 commit to master: c99186cc73: critical bug: verify_sigs() should also check inner length of vecs #dev haumea: how is DRK vesting and mining rewards related? #dev : @skoupidi pushed 1 commit to master: f79bd2de18: sdk, blockchain, validator: removed slot stuff #dev about the contract mechanics #random yea, that would want to remain off the radar #random but any bigger profiles that use actual privacy tools throughout their daily lives #random luptak and juraj are good examples #random jameson lopp is public about using privacy tools #random anyone outside of lunardao orbit with an audience would be helpful to also bring more eyes to lunarDAO a well #random silent.link may be a good option, they speak about this topic and are a good vendor #dev haumea: elaborate more? #random where can I find info on lunarDAO? #random pi: ask their channel: /join #lunardao #random thanks #dev upgrayedd: my last commit enables token minting contracts so i want to understand how coinbase token minting and vesting could work on chain #dev anyway going to eat dinner/sleep routine now, gn #dev haumea: aha so its informative discussion, ok gotcha gotcha gotcha gn hf #dev yep exactly #dev ok gn cya tmrw #random <4chin> https://boards.4chan.org/g/thread/98746906 #random Title: /g/ - /fglt/ - Friendly GNU/Linux Thread - Technology - 4chan #random thank you for sharing this friendly thread #random <13> test #random test back #dev upgrayedd: remember we made that change to the refinery logic so that it only refines nodes that match our transports #dev i just noticed that the default transports are an empty vec, so if a user doesn't configure the transports it effectively disables the refinery #dev should we a) force ppl to configure transports or b) add some logic like if there's no transports configured, try to refine all the nodes? #dev s/nodes/hosts #dev option a) is probably better for the network #dev option b) assumes nodes that do not configure transports can support "all" the transports, and then through trial and error will basically delete transports that the node does not support, resulting in those transports not being propagated from that node to the network #dev If they're unconfigured, you could default just to tcp+tls #dev nym is not working well anyway #dev ++ #dev hey yesterday i ran make test for money fixes, but overnight ran make test in repo root... some stuff broke in drk so fixing that #dev : @zero pushed 1 commit to master: 3fc7ba6e2c: fix broken drk compile due to money token call changes #dev turns out we were never creating sigs for clear inputs #dev with yday fix, now it fails... fixing #dev lol #dev such a good find #dev : @zero pushed 1 commit to master: eb635dc3df: fix failing DAO test #dev recently i recloned for codeberg and just realized my cargo fmt commit hook was missing: https://darkrenaissance.github.io/darkfi/dev/dev.html#cargo-fmt-pre-commit-hook #dev Title: Development - The DarkFi Book #dev fyi for others in case they also did the same #dev darkfi/src/runtime/vm_runtime.rs:388 #dev _ => unreachable!("Got unexpected result return value: {:?}", ret), #dev can this be triggered in wasm by crafting a bad contract? #dev oh i guess it's not possible, nvm #dev : @zero pushed 1 commit to master: 9d33a10a0b: use proper FuncIds to ref contract funcs such as spend_hook in money #dev : @draoi pushed 6 commits to master: e2a47f99db: dnet: fix bug that caused lilith info not to be displayed #dev : @draoi pushed 6 commits to master: 716af31848: dnet+lilith: enable hostlist debugging... #dev : @draoi pushed 6 commits to master: ba8edefb59: net: restructure hostlist removal logic... #dev : @draoi pushed 6 commits to master: b1d16e1153: inbound_session: don't stop tasks that haven't been started... #dev : @draoi pushed 1 commit to master: 821ba475d7: contrib: add TODO #dev : @zero pushed 1 commit to master: 71ec264e1d: fix drk broken by last commit #dev : @zero pushed 1 commit to master: 62234a8f88: replace info level for test-harness #random I will be interviewing someone from CultDAO tomorrow, does anyone have any questions they would like to see answered? #memes https://twitter.com/relscd/status/1753497772593222121 #memes charels from hell(@relscd): the border patrol agents at the airport when u leave your laptop unattended for 1 minute #dev : @draoi pushed 3 commits to master: 183717f04e: script/lilith_spawns: update to new hostlist usage #dev : @draoi pushed 3 commits to master: 1251ad3b38: refinery: don't refine hosts that we are connected to/ trying to connect to... #dev : @draoi pushed 3 commits to master: 488b9c8d98: protocol_address: tweak response to receive getaddr... #memes now do that with a LUKS linux volume #memes <3 #memes ah wait nvm #memes it's because the laptop is in sleep mode, not powered down properly #dev net code seems to be working now #dev dasman: want to try deploying some liliths? :) #memes oh yikes #dev !list #dev Topics: #dev 1. DRK vesting and mining contract mechanics (by haumea) #random about anonymous DAOs and their implications #random https://en.wikipedia.org/wiki/Silky_anteater wtf is that #random Title: Silky anteater - Wikipedia #dev draoi: done #dev seed is "tcp+tls://dasman.xyz:5262" peer is "tcp+tls://dasman.xyz:2654" #dev awesome ty #dev No problem at all :) #dev sweet, spun up a quick local node and synced event graph/ found ur peer instantly #dev it's outbound only tho for now #dev will spin up some bidirectional nodes on the servers #dev Sweet #dev I see your msgs #dev same! :DD #dev biab #random I can't do an Atomic Swap: I got #dev how does merge-mining work? #random hi pi the code is being updated rn in preparation for a new release #dev : test #dev : echo 1 2 3 #dev : test #dev : hey dasman you on here? #dev : i see some msgs but idk when from #dev : heyheyhey #dev : :D #dev : i sent only two msgs when i spun up these nodes #dev : draoi: ^ #dev : yep i see them #dev : haha niiice #dev : maybe time to redeploy the bridge #dev : ah mirror already works on old darkirc net #dev : still works idk how #dev test back #dev okay that was not intended #dev XD #dev : test #dev test back #dev : werks #dev : yo #dev : :) #dev : :D #dev : oh wait, commit bot should mirror but hasn't #dev : draoi: logs look so clean, I'm very happy XD #dev : @dasman pushed 1 commit to master: d2844e43f0: src/net: cargo fmt and clippy needless_borrow fix #dev : gm #dev : that's awesome #random https://edition.cnn.com/2024/02/04/asia/deepfake-cfo-scam-hong-kong-intl-hnk/index.html #random Title: Finance worker pays out $25 million after video call with deepfake ‘chief financial officer’ | CNN #dev https://dep-tree-explorer.vercel.app/api?repo=https%3A%2F%2Fgithub.com%2Fdarkrenaissance%2Fdarkfi&entrypoint=src%2Flib.rs #dev Title: Dep Tree #dev !topic darkirc migration #dev Added topic: darkirc migration (by haumea) #random https://twitter.com/lex_node/status/1753908971625160985 #random _gabrielShapir0(@lex_node): wait till they hear that 91% of Solana validators are personally doxxed to and have legal agreements with the Solana Foundation or that most Cosmos ecosystem validators are doxxed to the public to get delegations (and many just run on keys held by a service by other companies) this is pretty much an industry-wide problem; crypto is not ready for massive governmental crackdown or other legal attacks #random https://cartlann.org/authors/roger-casement/chivalry/ #random Title: Chivalry - Cartlann #dev is there a reason why Halo2 was chosen for the ZK proofs? As opposed to say circom? #dev this MIT course I've been doing about ZK uses circom https://zkiap.com/ #dev Title: [MIT IAP 2023] Modern Zero Knowledge Cryptography #random https://hackaday.com/2024/02/04/pop-goes-the-hydrogen-howitzer/ #random Title: POP! Goes The Hydrogen Howitzer | Hackaday #dev I will bbl #philosophy https://www.resilience.org/stories/2024-02-01/beyond-and-against-homogenisation-advancing-diversity-through-democratic-confederalism/ #philosophy Title: 403 Forbidden #dev : gm #dev : nice my darkirc instance has been running without failure for days #dev hey #dev deki: circom is javascript and plonk trusted setup whereas halo2 is no trusted setup #philosophy oh very nice article #philosophy expected to see some lefty pro-refugee fluff piece #philosophy https://kolektiva.media/w/sq5RiB53yMnwpd2Zdgv4Vz #philosophy Title: Conference Sociology of Freedom in Rojava: Interview with Heval Fuad from the Youth Revolutionary Movement - kolektiva.media #random https://torrentfreak.com/netflix-piracy-is-difficult-to-compete-against-and-growing-rapidly-240204/ #random Title: Netflix: Piracy is Difficult to Compete Against and Growing Rapidly * TorrentFreak #random we're winning #random nice #random I recently created a nice setup for downloading movies and tvshows with Prowlarr, Radarr, Sonarr and Plex. I can add a title on Plex to my watchlist and the torrent will be automatically downloaded, unpacked and put for Plex to play :D #random i use qbittorrent with the inbuilt search engine #random it's the best #random lovely, I love torrenting #dev draoi, dasman: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/final-printversion-10-5-14.pdf #dev Title: Microsoft Corporation #dev see section 2.2 on Event Graphs #dev it's worth keeping this book around and studying it if possible #dev it has a lot of info for architecting our p2p subsysten #dev subsystem #dev hey btw ppl are travelling today #dev can we move dev meet to 2m? #dev sure #dev haumea: ty #philosophy https://www.theatlantic.com/magazine/archive/2024/03/facebook-meta-silicon-valley-politics/677168/ #philosophy Title: The Rise of Techno-authoritarianism - The Atlantic #philosophy funny how it links futurism with fascism but not communism #philosophy https://www.societyforasianart.org/sites/default/files/manifesto_futurista.pdf #philosophy ^ 1909 #philosophy by a fascist poet #philosophy but for sure communism has its own form of futurism as well #philosophy yeah not saying it didnt have links, but it had so equally with communism #philosophy the era was futurist and revolutionary #philosophy https://en.wikipedia.org/wiki/Futurism #philosophy Title: Futurism - Wikipedia #philosophy Futurism (capital F) as a movement was fascist tho #philosophy https://en.wikipedia.org/wiki/Russian_Futurism #philosophy Title: Russian Futurism - Wikipedia #philosophy oh i didn't know #philosophy interesting from the section on declice of soviet futurism: "Communist Party made it clear they did not want any futurist influence in Soviet literature" #philosophy this was influential on communists tho ("communism in space"): https://en.wikipedia.org/wiki/Russian_cosmism #philosophy Title: Russian cosmism - Wikipedia #philosophy haumea: present https://www.marxist.com/leon-trotsky-on-futurism.htm #philosophy Title: Leon Trotsky on Futurism | Art | History & Theory #random Test #random Test back #random errorist: one sec my internet went down #random On the phone rn #random np #random test #random test back #random was disconnected briefly #dev : test #dev test back #dev woah based #dev self-healing connection #random test #random test back #random test #random test back #random test #random test back #random test #random test back #dev haumea: I'm guessing I should just skip circom then? Focus on halo2, because by the looks of it, it's using Rust anyway #dev *implemented in Rust #dev in case anyone missed this: fyi the meeting has been moved to 2m #dev so 24hrs and 15m from now #random test #random test back #random test #random test back #dev gm #dev !topic configurable generators #dev Added topic: configurable generators (by haumea) #dev gm #dev !list #dev Topics: #dev 1. DRK vesting and mining contract mechanics (by haumea) #dev 2. darkirc migration (by haumea) #dev 3. configurable generators (by haumea) #dev : gm #random test #random test back #dev my darkirc stopped working #dev errorist: are you on latest master? #dev any other info? #dev like in the debug output etc #dev I did git pull and make darkirc but can't connect to the seeds listed in the config #dev https://pastebin.com/WYq0BRDf #dev Title: 10:04:13 [WARN] error: tor: remote stream error: Protocol error while launching - Pastebin.com #dev we are not using the default seeds rn #dev just this one: #dev seeds=["tcp+tls://dasman.xyz:5262"] #dev ok, let me try with it #dev not sure this seed supports tor #dev you might find tor addresses to connect to from the seed #dev but not sure how it will behave if your transport is set to tor only #dev try it anyway :) #dev : gm #dev : hey #dev the seed does not support tor #dev hmm, tried tcp only and it says invalid data: https://pastebin.com/eQCWzYD2 #dev Title: 10:23:09 [ERROR] [net::tls] Failed verifying server certificate signature: inval - Pastebin.com #dev the seed can support tor, but i guess dasman means it's not yet setup with tor #dev correct, haven't set up for tor #dev errorist: set this: allowed_transports = ["tcp+tls"] #dev trying to recompile from repo now but getting this: error[E0635]: unknown feature `stdsimd` #dev dasman: tried, but didn't work so I removed the darkfi dir and cloned from repo, will recompile now #random test #random test back #random hello aiya #dev bbl #random hi draoi #random hello #random yo #random hi foo #random hey there #dev !topic not no entrypoint feature #dev Added topic: not no entrypoint feature (by haumea) #dev fyi latest nightly is broken af #dev ok thought I fucked up something :D #dev nope, thats the drawback of living in the cutting edge #dev errorist: I can help you if you want to build using older version #dev it's ok, i'll wait for them to fix the nightly #dev : @skoupidi pushed 1 commit to master: c8b726e0ca: chore: clippy #dev : @skoupidi pushed 1 commit to master: 204cfcc25d: chore: fmt #dev : @skoupidi pushed 1 commit to master: b78d96a508: contract/money/client: removed obselete sql references #random test #random test back #dev : @skoupidi pushed 1 commit to master: 7ac561fe67: util/time: TimeKeeper yeeted #dev greetz #dev : yo #dev : o/ #dev !list #dev Topics: #dev 1. DRK vesting and mining contract mechanics (by haumea) #dev 2. darkirc migration (by haumea) #dev 3. configurable generators (by haumea) #dev 4. not no entrypoint feature (by haumea) #dev not sure if brawndo is arround #dev upgrayedd: around? #dev yy here #dev we can start then #dev !start #dev Meeting started #dev Topics: #dev 1. DRK vesting and mining contract mechanics (by haumea) #dev 2. darkirc migration (by haumea) #dev 3. configurable generators (by haumea) #dev 4. not no entrypoint feature (by haumea) #dev Current topic: DRK vesting and mining contract mechanics (by haumea) #dev i'm here but the first point i might need feedback from brawndo on #dev well i'm curious how minting new DRK works in the contracts #dev i saw there's a call "genesis mint" #dev we can postpone this topic till nxt week? #dev haumea: new DRK is based on PoWReward #dev yeah sure i'll re-add #dev which is the tx call the miner attach to their block in order to get the reward+fees #dev why is it called "genesis" mint? #dev genesis mint is a different thing, where it enables us to create tokens on genesis block #dev aka premint #dev genesis means block 0 #dev its 2 different calls #dev aha ok so we can delete it then? #dev why delete it? #dev why do we need a separate call? isn't it PoS related? #dev no its not PoS related #dev genesis block doesn't have a block producer #dev surely we need a vesting contract? #dev so that call is used to generate preminted stuff #dev well yeah a vesting contract is needed, it will still need that call to mint everything and chug it into it #dev it's no longer needed, we can delete it, then use Money::token_mint() #dev but i'll wait until brawndo is around to talk with him about it #dev token mint is a generic one for arbitary tokens minting #dev yes #dev genesis_mint is hyper specific to native DRK tokens #dev which has no mint autority #dev i don't see why it needs a special call #dev token_mint() no longer has a mint authority #dev oh #dev you should have started with that lol #dev it instead has a reference to another contract function with the rules for minting #dev ah yeah sry #dev so we would make a vesting contract where you can claim tokens according to the schedule #dev ok yeah then we can discuss with brawndo on the correct approach to this #dev keep it in for now #dev ++ #dev and we yeet it once the proper config is created #dev yep sounds good #dev where will tokens vest, on darkfi or eth mainnet or both? #dev errorist: TBD #dev ok, thx #dev well some part must be on darkfi #dev like dev fund and community ecosystem pools #dev makes sense #dev (not my area) #dev !next #dev Elapsed time: 8.3 min #dev Current topic: darkirc migration (by haumea) #dev should we do this or what's the timeline? #dev when should we announce #dev we should test first #dev ok i will deploy my nodes #dev ty #dev agreed, we need more people using darkirc #dev it's been working well so far, but rn it's just me and dasman afaik #dev my connection is stable so not the best test #dev i could also try mobile too #dev see if it remains connected #dev i'll try that and switching between networks #dev https://darkrenaissance.github.io/darkfi/misc/ircd/ircd.html#installation-android #dev Title: ircd - The DarkFi Book #dev ^ also be good if others try android builds #dev !next #dev Elapsed time: 2.1 min #dev Current topic: configurable generators (by haumea) #dev !next #dev Elapsed time: 0.1 min #dev Current topic: not no entrypoint feature (by haumea) #dev !next #dev Elapsed time: 0.0 min #dev No further topics #dev :D #dev !end #dev Elapsed time: 0.2 min #dev Meeting ended #dev XD #dev ok thanks a lot everyone #dev !topic DRK vesting and mining contract mechanics #dev Added topic: DRK vesting and mining contract mechanics (by haumea) #dev !topic configurable generators #dev Added topic: configurable generators (by haumea) #dev !topic not no entrypoint feature #dev Added topic: not no entrypoint feature (by haumea) #dev haha #dev thanks a lot #dev everyone #dev ty all #dev <3 #dev <3 #dev +1 #dev errorist: want to run a seed node btw? #dev haumea: sure, for darkirc? #dev yeah it's generic, see the docs for lilith #dev I was running one tor node before the old darkirc went down #dev can do both tor and normal node #dev ideal if it supports all transports i.e. tor, tcp, tls #dev that way it serves as a bridge #dev will checkout the docs and let you know if I have some questions #dev also running darkirc with tor *and* tcp / tls is bridging the networks / making them more resilient #dev since clients using only tor can reach the clearnet nodes through them as well #dev neat #random https://m.hbvl.be/cnt/dmf20240205_95921146 #random Title: Vrouw (18) uit Leuven aangehouden in een van de grootste vondsten van 3D geprinte wapens ooit (Leuven) | Het Belang van Limburg Mobile #random 18y/o girl arrested for running a 3D gun printing factory #dev : @zero pushed 3 commits to master: 8b3dee989d: DAO::exec(): add missing signature #dev : @zero pushed 3 commits to master: 35d9f11941: update VKS hashes for test harness #random brotherhood of NOD logo on one of guns #random LMAO! #dev : @zero pushed 1 commit to master: 603e917763: DAO: switch to 4 hour windows instead of days #dev upgrayedd: i switched to 4 hours instead of 24 hours ^ #dev if the tx doesn't confirm within 4 hours, then you must retry it again #dev : @zero pushed 1 commit to master: 4e92dafafe: remove dao- prefix from dao proof filenames #dev haumea: noice #dev : @zero pushed 2 commits to master: 0b9c3eff5f: contracts: cosmetic cleaning up of proofs by prefixing attributes in bulla (kinda like is popular for postgres attributes in a table) #dev : @zero pushed 2 commits to master: 25cae60aae: remove Dao prefix from proof names #random aiya: #random [contact."narodnik"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random test #random test back #random test #random test back #markets https://twitter.com/velodata/status/1754915031773294865 #markets Velo(@VeloData): SEC introduces rule that potentially means all DEX liquidity positions above $50M must register with SEC https://t.co/NUGVOtoYoj #markets O_O #markets https://www.sec.gov/news/press-release/2024-14 #markets Title: SEC.gov | Request Rate Threshold Exceeded #markets https://twitter.com/i/web/status/1754895992019644563 #markets road to regfi #markets XMR down -30% because it got delisted from Binance #markets time to buy some :D #dev greets #markets maaan i'm down baad #dev good evening from down under #dev howdy #dev !list #dev Topics: #dev 1. DRK vesting and mining contract mechanics (by haumea) #dev 2. configurable generators (by haumea) #dev 3. not no entrypoint feature (by haumea) #dev gm #dev lmk when i can start spamming you re: topics #dev Lemme finish breakfast #dev yeah be relaxed #dev : @zero pushed 1 commit to master: d79e3542eb: book: add a START HERE guide since people no longer can to read properly (internet coom breins) #dev and i can not to write properly #math came across this book "an intensive intro to cryptography" and this chapter on ZK proofs is recommended: https://intensecrypto.org/public/lec_14_zero_knowledge.html\ #math Title: Page Not Found #math https://intensecrypto.org/public/lec_14_zero_knowledge.html #math Title: An intensive introduction to cryptography: Zero Knowledge proofs #random test #random test back #random [contact."aiyadt"] #random contact_pubkey = "7HPTLvLNEPs8ohKxQTaXTAnHJGmcxU52jk2fm46efiRR" #random ty #random [contact."narodnik"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random test #random test back #random test #random test back #dev haumea: Here #random test #random test back #dev brawndo: so in halo2 lib inside halo2_gadgets/src/ecc/chip/constants.rs #dev there is a function called: #dev pub fn find_zs_and_us( #dev base: C, #dev num_windows: usize, #dev ) -> Option> { #dev this enables calculating the Z and U values used to add the generator constants, so we can actually make zkas have configurable generators #dev Yeah correct #dev should we add a call inside wasm to enable adding a new generator constant for use in zkas? #dev What does wasm have to do with it? #dev zkas and wasm are independent of each other #dev yes but the contract wants to use a particular constant #dev so how are they configured? since calling this func has some overhead, so you want to precompute it and save the result #dev we could also cache it in a lookup table #dev actually maybe that's best, done directly by the zkvm #dev (x, y) -> (z, u) values #dev lazy init #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zk/vm.rs#L625-L646 #dev The thing is they have to be compiled in #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zk/vm.rs#L627 #dev they don't have to #dev let vcr = ConstBaseFieldElement::value_commit_r(); #dev Yeah that's a function #dev yeah check it out #dev darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:121 #dev sec #dev Yeah so how would you be adding an arbitrary one that the zkvm has no knowledge of? #dev We can't make the lib depend on non-native contracts #dev a point is specified solely by pallas::Affine, and then you use find_zs_and_us() to calculate the pre-computed u and z values from G #dev So you want to extend the constants syntax of the zkas lang? #dev when loading a point for use with halo2 lib, it just needs an object with methods to access those values #dev pretty much, or enable creating custom ones from init() inside the wasm contract #dev I think I prefer keeping them disconnected #dev well an alternative way is in zkas, you can specify the (x, y) coord for a const, and it maintains a cache #dev Probably no need to cache #dev In the constant section then we can have assignments allowed #dev well calling find_zs_and_us() has a cost, that's why they're precomputed ahead of time #dev e.g. EcFixedPoint MY_GENERATOR = 0xabc, 0xdef #dev ++ #dev but just saying if a const is used a lot then you would want to cache it other it's redundantly computed every time #dev for example you might use a generator in multiple proofs in a single contract #dev It's a tradeoff, I don't know how much complexity it involves #dev And I don't know how slow that function is #dev i mean it's doing sqrts() in a finite field which is a slow arithmetic func, but maybe not too big a deal in the grand scheme of things #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zkas/parser.rs#L313 #dev This is where you'd have to modify the parser and go from there #dev we could add it for now without the cache #dev and then later we can add a cache if needed #dev Sounds good yeah #dev ok great #dev I need to focus on finishing the tx fee stuff so it's ready for audit #dev yeah understandable, this is not urgent #dev just was pretty happy to figure out the consts are configurable since we overuse generators too much #dev secondly, about the genesis_mint(), money function... i understand this pre-mints a certain alloc of drk on the genesis block #dev Correct #dev but now the token_mint() allows specifying rules for how a new token is minted, so we can actually create a proper vesting contract for on chain DRK #dev Yes but token_mint cannot mint native DRK #dev Have you read how token_id are generated? #dev It's in src/sdk/crypto/token_id.rs on top #dev it's changed, and TokenId will be moved into money/src/model.rs #dev https://darkrenaissance.github.io/darkfi/dep/0003.html #dev Title: DEP 0003: Token Mint Authorization (accepted) - The DarkFi Book #dev The point is that there is no secret key possible for native DRK #dev you don't need a secret key #dev And DRK should only be minted by block rewards #dev Nothing else #dev the token_id for DRK contains a reference to the vesting contract #dev then the vesting contract allows claiming DRK according to the vesting schedule #dev when you try to call money::token_mint(), then token_mint() will make sure it's invoked by the vesting contract which has its rules for who can claim what and when #dev Vesting is not supposed to work this way #dev Legally for vesting all tokens have to be minted already #dev So you need to have a pool of tokens existing #dev how does that work with a non-fixed supply? #dev Irrelevant #dev The tokens have to exist #dev ok but lets say these tokens are minted, then how can they be claimed if they're owned by a secret key? #dev is there really such an arbitrary legal restriction? it's much easier to make a special contract to put all the rules there #dev There is #dev I'm sure there's a way to just do a musig2 scheme or frost between the contract and the vestee #dev ok well if you still want to pre-mint the coins ahead of time, then it's still possible using the spend_hook #dev basically the genesis_mint() is removed and we create another contract, then call token_mint() to pre-mint the entire supply with the reference to the other function which specifies all the coins must have the spend_hook set for a function in that contract #dev the secret key inside the coin is unused, but when trying to spend the coin, you must satisfy the rules of that special function #markets xmr already recovering a bit #markets https://twitter.com/cryptonator1337/status/1755155895753851056 #dev we don't need a special genesis_mint() function, and can use the generic token_mint() one. Any DRK specific logic can be put in a dedicated function, ideally a separate contract. #random rust nightly still not fixed :< #dev okay #dev So token_mint is getting changed to just be able to mint _any_ token (including native)? #dev Then the authorisation is on a separate layer? Where arbitrary tokens have to produce a signature whose pubkey also derives the token ID #dev And native token can have some other ruleset? #dev yes correct #dev we have auth_token_mint() which is the old ruleset #dev LGTM #dev nice, just trying to figure it out #dev ok last question then won't bother you more #dev what is not(no-entrypoint) feature for? #dev why not just "entrypoint"? #dev is this documented somewhere? #dev The entrypoint is wasm-specific and is a "default" feature because it's for a contract #dev You enable "no-entrypoint" when you want to use that contract in a client API, or more important - as a dependency of another contract #dev It's essentially the "main()" function #dev oh ic ok thanks #dev about DRK token: i will create a skeleton sometime this month we can play with #dev Sounds cool #dev any workarounds we can add after depending on what we need #dev After the fee stuff I can help out on the zkas constants stuff #dev even the ecosystem DAO and which pools it vests into can be controlled by DAO voting since we have generic function calls by the DAO now #dev Yeah #dev no rush, it's not urgent, but just very good to have before mainnet #dev ++ #dev ok ty #dev yw #random test #random test back #markets XMR nice bounce back today #markets based #markets Interesting fact is that Binance is delisting all spot based products but it is not delisting the usdt settled perps so people will still be able to trade XMR #random errorist: yeah, stdsimd was dropped so crates must change their nightly configuration #random its a pain in the ass, but you can work around it using an older nightly and manually changing package versions in Cargo.lock #random upgrayedd: I tried with rustup toolchain install nightly-2024-01-31 --force and then rustup default nightly-2024-01-31 but it still failed, will try and manually change versions in Cargo.lock #random you need to also change the toolchain the repo uses #random what is exactly the command/flow you want to execute? #random I can help you with the steps needed #random like this?: rustup override set nightly-2024-01-31 #random I want to compile lilith and try to spawn some nodes #random that won't work #random so you installed nightly-2024-01-31 #random yup #random you should also add the wasm target to it #random rustup target add wasm32-unknown-unknown --toolchain nightly-2024-01-31 #random ++ #random after that open rust-toolchain.toml and change channel from "nightly" to "nightly-2024-01-31" #random after than open Makefile and change line 7 from CARGO = cargo +nightly to CARGO = cargo #random after that, execute make lilith #random it will either build directly or nag about some dependency using stdsimd unstable feature #random when we have that we can manually change the version in the Cargo.lock #random UNDER NO CIRCUMSTANCE COMMIT SAID CHANGES :D #random promise, I won't :D #random yeah just stating for anyone else lurking here that might also encounter said issue :D #random it's compiling now, nice #random yeah and for darkirc running make darkirc should work #random cool, tysm upgrayedd #random do I still need to do something in Cargo.lock after it's compiled? #random if no package nags no you should be good #random right now ahash is broken, since they haven't update their nightly config yet #random which is a low level dep to a lot of cryptography stuff #random dalek for example is fixed, but it's not backwards compatible, so the .lock hack is simply specifying using a combo of compatible versions with our older nightly usage #dev Zcash Sustainability Fund ZIP plans to replace the coin issuance mechanism per block by mining the remaining issuance in a ZSF_BALANCE field and then paying the miners, stakers, dev orgs from it https://github.com/zcash/zips/pull/703/files?short_path=1f254a6#diff-1f254a6f698253908c3b69847e4e5df039d8b74200b065d71399da672ee23cce #dev Title: Zcash Sustainability Fund by tomekpiotrowski · Pull Request #703 · zcash/zips · GitHub #random ok cool #random test #random test back #dev : @skoupidi pushed 1 commit to master: 2dc6832656: validator: removed genesis tx total calculation | darkfid: use next block height for contracts deployment #dev afk, bbl cya #dev cya #dev https://darkrenaissance.github.io/darkfi/learn/dchat/deployment/deploy.html?highlight=lilith#deploying-a-local-network #dev Title: Deploy - The DarkFi Book #dev is this guide uptodate or I should use [network."darkirc_v4"]? #dev draoi: ^^ #dev : @skoupidi pushed 1 commit to master: 3547539c3f: darkfid/tests: properly test sync logic by generating next blocks using fixed mining difficulty #random test #random test back #dev errorist: that is a guide for a toy/ demo app we have called dchat #dev so it's only intended to explain some concepts about the net code #dev [network."darkirc_v4"] would be the right naming for darkirc configuration #dev tho tbh the network name doesn't matter too much, more important is the accept_addr and other config fields #dev https://hackmd.io/0QEWu7qYR8-LGWvUXoxxOQ #dev Title: How to handle circuit upgrades - HackMD #dev b #dev draoi: ok, thx. what about the whitelist file? #dev would be cool if someone can share a sample config, then I can try spinning up some nodes tomorrow #random test #random test back #dev errorist: the hostlist path is just wherever you want to store the hostlist, e.g. /.local/darkfi/lilith/darkirc_hostlist.tsv #dev . #dev Hello, I was interested in learning, I read the learning part of the documentation and I got to work with Python and I read Abdullah's book (I loved it, but I'll leave that to the philosophy section). I had tried programming in the past (also with python) and failed, could you give me any tips that you found useful? #random : test #random test back #random : test #random test back #random test #random test back #random test #random test back #dev coda: if you're new to programming, probably best to learn some theory behind it all, such as data structures, data types, algorithms etc no need to go too deep. Look up CS50 on YouTube, it's an introductory coding course at Harvard, goes over everything #dev depends where your skills set are at, if you do know another programming language, then best bet is to get into Rust, which is what DarkFi is built on #random test #random test back #random test #random test back #random test #random test back #dev gm gamers #dev gm #random test #random test back #random test #random test back #dev gm #dev coda: https://darkrenaissance.github.io/darkfi/dev/learn.html #dev Title: Learn - The DarkFi Book #dev see the python book there #dev also hang out on libera IRC #python channel #dev gm #dev brawndo: maybe we should only allow clear_inputs for the first tx in a block? #dev (and not for unconfirmed txs) #dev and a single clear input #dev Reasoning? #dev what do we need them for apart from coin generation events? #dev i guess minting new coins #dev (of other tokens, so it could be restricted to DRK) #dev draoi: i'm stuck :< 09:45:03 [ERROR] [P2P] Error starting listener #0: IO error: address not available #dev asked dasman, maybe he can help #dev Token minting has hidden supply #dev I'm not sure what the coinbase tx uses #dev errorist: sounds like your accept_addrs is misconfigured #dev The coinbase tx is the last one in a block btw #dev ok, doesn't the coinbase use transparent inputs? #dev It's the optimal place since then the miner doesn't have to rebuild the tx merkle tree in the block, they can just append it #dev coinbase has no inputs #dev draoi: dasman told me to use public/resolvable address, and I tried with my public IP/domain but getting this error. I can ping the hostname from my machine and it's getting resolved #dev Just an output of known value #dev ah no #dev but for auditable supply, surely we want a transparent input #dev It does use a clear input, sorry #dev ok cool #dev I just misread something #dev (Have 5 vims open lol) #dev idk if we want to restrict usage for DRK token to a single clear input in coinbase tx #dev anyway just an idea #dev Don't see the need #dev The contract model already only allows 1 input and 1 output in coinbase #dev Otherwise it doesn't even deserialise correctly #dev MoneyPoWRewardParamsV1 #dev ahhh ok it's a different call #dev Yeah forget about transfer lmao #dev darkfi/src/contract/money/src/entrypoint/transfer_v1.rs:170 #dev can i disable this check then, and make it fail if token_id = DRK? #dev Transfer doesn't need clear inputs at all #dev They were just used for faucet stuff #dev yeah true delete them #dev I'd just remove it honestly #dev sounds good #dev we have token_mint which supports optional clear mint #dev Does it? #dev (so the issuer of the token can decide) #dev yeah #dev The issuer can just reveal the value blind #dev well it must be mandatory for all mints #dev No we're minting hidden supply now #dev if i make a token with transparent supply, then anyone who mints token through a smart contract must follow the rules #dev it's decided by the token author #dev Yeah well doesn't have to be part of the protocol #dev yeah it's not, you supply the rules through a smart contract function #dev the default is just the same as before #dev ++ #dev ok i'll remove clear inputs then #dev yay deleting code #dev we should have incentive/reward system for commits which reduce overall LoC #dev :D #dev PR to rewrite darkfi in python #random test #random test back #dev wen haskell #dev darkfi in 10 SLOC #dev brawndo: coinbase tx(aka block producer) is in first position of the blocks txs vector, not last #dev Didn't we come to terms that it'd be last? #dev yeah, but we changed it later #dev All other txs have to be verified before #dev And then you can verify coinbase and the fee reward #dev The block building logic is also a lot simpler since you can have a single loop #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/verification.rs#L192-L207 #dev Title: darkfi/src/validator/verification.rs at master - darkrenaissance/darkfi - Codeberg.org #dev just swap the order there and it should be g2g #dev Wjere #dev Where's the block building? #dev producer transaction uses different verification than normal txs #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/consensus.rs#L74-L126 #dev here I guess #dev Title: darkfi/src/validator/consensus.rs at master - darkrenaissance/darkfi - Codeberg.org #dev this should be push_front tho XD #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/consensus.rs#L86 #dev Title: darkfi/src/validator/consensus.rs at master - darkrenaissance/darkfi - Codeberg.org #dev btw I don't see how/where we use the tree in the header #dev perhaps impl missing? #dev sec #dev header_store.rs #dev Line 51 #dev As you're adding txs to the block you need to append them into that tree #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/blockchain/block_store.rs#L120-L130 #dev Title: darkfi/src/blockchain/block_store.rs at master - darkrenaissance/darkfi - Codeberg.org #dev yeah its there #dev should we also verify that the tree matches the appended txs? #dev Of course #dev ok, can we decide on coinbase/producer tx position in the vec? #dev last or first? #dev (so I can do both right away) #dev Last because it'll be easier for block building #dev Since you need to append all txs, gather their fees, and then build the coinbase tx #dev So you can simply append coinbase to the Merkle tree #dev Otherwise you have to rebuild the tree #dev And there's no point in hacking the verification order when this is just fine #dev kk changing it now #dev Noice #dev wait the verification order should be first coinbase, then rest txs? #dev No the opposite #dev Because you need to gather fees #dev kk first txs then coinbase #dev and for tree verification of the header, we just create a new tree appending txs hashes and checking header.tree == tree correct? #dev Yeah you can do it as you're verifying them #dev And when you're done with the txs, you'll have the tree so you can compare it with the block header #dev true true, so verify txs returns the tree #dev and then you also append the coinbase tx #dev Yep #dev gg izi #dev It's straightforward luckily #dev Add a placeholder comment for the fees stuff #dev Also there should probably be a block gas limit #dev well right now we have a txs len limight #dev so that should be replaced by the gas one #dev ah well I guess that one is fine too #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/consensus.rs#L76 #dev Title: darkfi/src/validator/consensus.rs at master - darkrenaissance/darkfi - Codeberg.org #dev I just didn't see it enforced here #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/consensus.rs#L381-L384 #dev Title: darkfi/src/validator/consensus.rs at master - darkrenaissance/darkfi - Codeberg.org #dev its enforced when we grab the uproposed_txs #dev ehh, fix that :D #dev fix? #dev That can allocate the entire mempool twice #dev Should be picking one by one from sled until you fill an array #dev Or you can take() TXS_CAP #dev From the iter #dev or we can jast grab all already proposed txs hashes, and create a sled fn: grab_txs_not_in(txs, limit) #dev You have an iter already https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/consensus.rs#L368 #dev Title: darkfi/src/validator/consensus.rs at master - darkrenaissance/darkfi - Codeberg.org #dev kk will figure it out #dev dasman: how is your seed node looking rn? #dev i can see the port is open but getting this: #dev [WARN] net::session::seedsync_session: [P2P] Failure during sync seed session #0 [tcp+tls://dasman.xyz:5262]: Channel stopped #dev : @zero pushed 1 commit to master: f74817ba8e: move TokenId from SDK to money contract #dev Why #dev Pls revert this #dev : @zero pushed 1 commit to master: 3e6e54121d: move nullifier from SDK to money contract #dev lol #dev its unstopable #dev omg why ffs #dev stop #dev haumea: Revert these please ^ #dev why? #dev SDK is the correct place for it #dev As a bonus you broke the python lib #dev no it's not, TokenId and Nullifier are specific to money, they aren't global data structures #dev i can fix the python lib #dev anything that's broken i can fix #dev Do not assume that #dev They can be used anywhere #dev yes they can be used by importing darkfi_money_contract #dev but they are specific to money #dev everything else is stuff like: public key, schnorr sig, contract ID #dev python bindings build fine #dev draoi: the seed is healthy, I can connect to it no problem #dev oh weird #dev tho I get a warning about white-list being empty #dev seed says that ^ #dev that's not ideal as it means that your node is not sharing other nodes (it shares what's on the whitelist) #dev i stopped some of my nodes so maybe that's why #dev but if your peer is still up it shouldn't happen #dev aha I see #dev peer still running #dev i think the peer may have gone into the anchorlist #dev could you stop the lilith for a sec and inspect the hostlist? #dev should I restart lilith? #dev yy cool #dev lmk if the peer is in anchorlist #dev how? #dev ah cat the hostlist? #dev yeah #dev although it shouldn't matter if it's on the anchorlist i'm realizing. cos protocoladdr sends anchorlist peers as well #dev shows only this: #dev greylist tcp+tls://anon-fore.st:26661 1707389374 #dev so it's lost track of ur peer somehow #dev i saw a couple of my nodes rejecting your peer with connection refused error #dev but why? i'm not malicious :( #dev maybe you reached max inbound connection count #dev hah maybe i'll set a higher number i think it was 8 or something #dev i would try running it with dnet #dev yeah put 20 or something #dev ++ #dev i think default is 20 #dev lmk when seed is up again #dev i will try to reconnect #dev ah wait Peter's hostlist has xeno.tools in anchorlist #dev Peter's, peer's #dev who is peter haha #dev ok that's fine #dev XD #dev what's the time stamp? #dev 1707389456 #dev seems fine #dev they are 2 nodes i deployed this AM #dev s/deployed/redeployed #dev alright everything is set #dev ok reconnecting #dev : test #dev test back #dev do you guys need more node operators to verify their stability? I don't mind leaving my PC on, I've currently had it running for 5 days and haven't had connection issues with ircd #dev : hiiii #dev deki: yes that would be great #dev we are testing darkirc on latest master #dev deki: ircd is pretty stable we're testing darkirc #dev seeds=["tcp+tls://dasman.xyz:5262"] #dev ^ for darkirc test #dev okay noice, I'll try to set it up within the next hour before I go to bed (past 10pm here) #dev thanks #dev ty, if you can set an external addr that would be best (to accept inbound connections) but not necessary if you don't have ipv6 or a hostname you can use #dev deki: you should realy stop advertising your timezone... #dev haumea: Is there a reason why spend_hook is gone from the Input struct? #dev haha why? I'm probably the only person from australia here >.> #dev or your country.... #dev draoi: yeah I don't have ipv6 btw #dev its like security opsec 101 #dev upgrayedd: okay fair, you're right #dev haumea: It seems insecure what you're doing #dev brawndo: we don't need it in the input struct #dev haumea: Assuming that a transaction is built honestly #dev there's no assumption #dev You're checking for FuncId by looking if there are parent calls in the tx #dev the zk proof will fail, it's actually stricter this way than before #dev How come? #dev ah it's still in the metadata #dev yep #dev it's more direct this way rather than checking spend_hook is set, and so on #dev Yeah ok #dev and the code is cleaner, less room for errors #dev If you don't mind, you could add more stuff in the commit message to make it clearer #dev (this is the breakthrough btw why we don't need the func_id hashmap) #dev ok apologies #dev 9d33a10a0bdee958c3d86acc7e0f74034e2b9a52 #dev relevant commit #dev yep yep #dev btw i've become a big fan of using types for everything. it's very easy to mix up 2 values in a bulla/commit when using pallas::Base everywhere #dev but impossible when the fields are strongly typed, which also makes changing them much easier #dev ++ #dev ACTION adding a Blind type now #dev haha rebasing will take me days lol #dev but nw #dev ah yeah maybe i should have given a warning, i didn't realize how big it would be #dev Go for it, nw #dev sec lemme just give you a patch #dev haumea: https://termbin.com/b6y5 #dev Add this while you're at it #dev This is also less error-prone #dev deki: you can try setting up a tor darkirc node #dev https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #dev Title: tor-darkirc - The DarkFi Book #dev brawndo: ok will do thanks #dev ty #dev darkfi/src/contract/money/src/client/mod.rs:79 #dev what do you think of this TODO? should we delete this or is it used anywhere? #dev draoi: thanks, on it now #dev haumea: Yeah I dunno, you added it, but I think swaps are likely to use it #dev Since the parties need to verify the values #dev Review the client side of the atomic swaps #dev ok thanks #dev https://github.com/darkrenaissance/darkfi/blob/master/bin/drk/src/swap.rs #dev There's init_swap() and join_swap() #dev The former is when you're doing the first part, and the latter is for the second half #dev understood #dev where do I find the config file after running ircd? Trying to add the inbound and external_addr #dev is it bin/darkirc/darkic_config.toml? #dev https://darkrenaissance.github.io/darkfi/misc/ircd/ircd.html#usage-darkfi-network #dev Title: ircd - The DarkFi Book #dev ah right, thanks #dev deki: that's ircd tho #dev darkirc is a different app #dev you need to run 'make darkirc' on master #dev I was doing the first step for setting up the tor enabled darkirc node, had to install Tor and launch the hidden service #dev ++ #dev just ran "make BINS="darkirc" and it's building now, is that ok? #dev yes #dev ok sweet, btw I dont need to run another ./ircd? That's what ./darkirc will be instead? #dev yes #dev just keep this node you are talking w now running #dev and run darkirc #dev additionally #dev okay understood #dev are you using weechat? #dev as the client #dev yes #dev you will need to run a second weechat #dev weechat --dir [path_to_second_weechat] #dev ah okay, I'm up to configure network settings now btw #dev the path is wherever your weechat data is stored #dev biab #dev : @skoupidi pushed 1 commit to master: 2ce7f38880: validator: producer tx on last instead of first position in block txs vector and proper header Merkle tree validation #dev draoi: any idea what this error could mean after running ./darkirc: Error: Io(AddrInUse) #dev pgrep darkirc #dev that didn't return anything, should it show processes? #dev well your error means address in use, so there's a port being occupied by something else #dev it should show the port in the output though #dev the part in configure network settings was asking for youraddress.onion:your-port, I used the port number 25551 from the tor setup, should I just use some other random one? #dev i'll let someone else answer that q #dev idk #dev I will play around with it meanwhile #dev : @zero pushed 1 commit to master: 2094274851: add a Blind type to the SDK, which is used in all bullas as the explicit blinding factor. #dev this should be the last of the big commits #dev deki: i'm not entirely sure what you mean #dev but AddrInUse could refer to e.g. irc listen addr #dev maybe you are using the same addrs on both ircd and darkirc #dev the rpc and irc listen ports must be unique to that node #dev ah I see #dev you're right, it's due to using the same addrs, I exited out of ./ircd but now I get [EVENTGRAPH] Syncing DAG from 0 peers, the nSync: Could not find any DAG tips, failed syncing DAG #dev then exits after a few attemps #dev : @skoupidi pushed 1 commit to master: 72526ed18c: validator: improved uproposed txs retriaval logic #dev deki: what seed node are you using #dev you need to set it to the seed node i pasted above #dev seeds=["tcp+tls://dasman.xyz:5262"] #dev it's not a tor node, so you will need to enable additional transports #dev allowed_transports = ["tor", "tor+tls", "tcp+tls"] #random https://twitter.com/lunarpunksquad/status/1755643925077917887 #random Twitter thread on the influence that Julian Assange has had over the entire ecosystem #random share out and retweet wherever possible #dev . #dev deki: thanks for responding! I'll take a look at the CS50. Less than a month ago I completed the fundamental computer science course at Roppers Academy (a free platform whose phrase is that "they teach you how to learn" and "0 videos, pure text" where they forced you to fend for yourself and search the docs and man-pages) and the last thing I focused on was Python. I already knew the basics, so I went #dev straight to the "automate the boring stuff" chapters to manipulate the system. and I am currently practicing making a video game with "python crash" to learn how to design classes and structure code. #dev haumea: thanks for responding! When I can I will enter the libera irc channel, I think it will be very helpful to me. #dev code: sounds like a good approach, I recommend getting into Rust once you feel confident with Python #dev *coda #dev draoi: yes you're right, I forgot to use the correct seed node. Will try it again now #dev draoi: still getting the same error: Sync could nto find any DAG tips #dev I followed these steps, including installing Tor: https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #dev Title: tor-darkirc - The DarkFi Book #dev only difference I noticed is it doesn't create the config file here: ~/.config/darkirc/darkirc_config.toml rather it's at /.config/darkfi/darkirc_config.toml so there's no darkirc folder, is that okay? #dev network settings are exactly the same as Step 3, except for the seed and the allow_transports you sent me #dev bbl #dev gm #dev gm #dev gm #dev : gm #dev deku: did you enable all transports? #dev there might not be enough tor nodes on the network #dev also, the seed node does not support tor #dev try connecting to the seed with a normal (non tor) config #dev i.e. use default config but change the seed to the one specified #dev see if that works #dev i'm also testing rn and now getting this: #dev 08:19:25 [INFO] [P2P] Channel inbound connection tcp+tls://dasman.xyz:5262 disconnected #dev 08:19:25 [ERROR] send_version() failed: Channel stopped #dev dasman: is your node running fine? #dev that's the seed node #dev it's expected behavior to connect and then disconnect to the seed node #dev is this on your seed or what node? #dev no, just on darkirc now, lilith not running #dev actually, i think that's probably dasman's node doing its refinery #dev https://darkrenaissance.github.io/darkfi/arch/p2p-network.html#hostlist-filtering #dev Title: P2P Network - The DarkFi Book #dev nodes periodically connect and then disconnect to test their connections #dev I see, hmm for some reason now it doesn't want to sync dag #dev but your connection is fine, right? #dev i have 3 nodes that are running fine, but the dag should always sync #dev what do you have in your hostlist? #random hi #random it;s me #random mario #dev anchorlist tcp+tls://dasman.xyz:5262 1707378122 #dev oh no, wait that's for lilith #dev .local/darkfi/darkirc/hostlist.tsv is actually empty #dev that means the seed sync process failed somehow #dev it's configured with dasman node right, not your own seed? #dev can you paste the full debug output into pastenym or something (from running the node to dag sync failed) #dev draoi: yup, with dasman's seed, one sec #dev : @draoi pushed 3 commits to master: a20ab3b5a8: doc: add dnet code comments #dev : @draoi pushed 3 commits to master: f189b71fd7: lilith: add checks to whitelist refinery... #dev https://pastenym.ch/#/8PQqAlgV&key=5e598ded05180e7b2b1002512baeb720 #dev Title: Pastenym #dev ty #dev tried removing db but didn't help #dev dasman: you might want to debuild lilith given the recent change #dev errorist: this is the error #dev Failure during sync seed session #0 [tcp+tls://dasman.xyz:5262]: Channel stopped #dev maybe the commit i just made will help #dev ok cool, I remember it working fine yesterday, maybe I crashed dasman's node from all the testing I did yesterday :D maybe a restart will fix it #dev if dasman could provide some debug output for his lilith that would also be helpful #dev errorist: the node should never crash #dev ah #dev maybe he has some inbound connection limit set #dev but i think he corrected that yday #dev i am getting this also: #dev 08:45:47 [WARN] net::session::seedsync_session: [P2P] Failure during sync seed session #0 [tcp+tls://dasman.xyz:5262]: Channel stopped #dev ok #dev on a seperate node: #dev [WARN] net::session:seedsync_session: [P2P] Failure contacting seed #dev ://dasman.xyz:5262]: Connection failed #dev (debug output looks messed up the the addr is correct) #dev dasman: when you are online maybe you can share your lilith logs and also rebuild latest master #dev hihi #dev o/ #dev coda: i'll help you, just feel free to ask anytime #dev upgrayedd: Money::GenesisMint should also have an exception in validator to not check fees #dev upgrayedd: And should be allowed only in genesis block #dev git log main..pp #dev ^ this should show the commits diff between both branches, right? #dev You use git diff for a diff #dev brawndo: we verify genesis block using false in verify_fees bool https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/verification.rs#L94 #dev Title: darkfi/src/validator/verification.rs at master - darkrenaissance/darkfi - Codeberg.org #dev and producer tx must be the Transaction::default() (aka empty) one so no further fee checks #dev i just want the commit list #dev we check that verifying slot must only be genesis(0) in the exec section https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/contract/money/src/entrypoint/genesis_mint_v1.rs#L83-L91 #dev Title: darkfi/src/contract/money/src/entrypoint/genesis_mint_v1.rs at master - darkrenaissance/darkfi - Codeberg.org #dev upgrayedd: ahh ok #dev upgrayedd: I grepped for GenesisMint in validator and didn't see anything so #dev ok cool it's just one way #dev haumea: git log a..b would just show you commits in one of the branches and not in the other #dev yep ty #dev halo2_proofs = {git="https://github.com/parazyd/halo2", branch="v4"} #dev so we're just locking to a specific tag on halo2, is this preferable to just referencing halo2 directly? #dev Yeah there's quite a few patches in that repo #dev Not upstream #dev oh i was looking at main, not v4, thanks #dev brawndo: validator only checks if transactions are not PoWReward #dev and GenesisMint will always fail if not on genesis so we are covered there #dev upgrayedd: Well ok, as long as it's protected in the exec section #dev Yeah #dev iirc I showcase that in the tests #dev ok i see there's one patch: 397c77cf97e30587d4cdc9676679c6def268daca #dev lmc #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/contract/money/tests/genesis_mint.rs#L81-L91 #dev Title: darkfi/src/contract/money/tests/genesis_mint.rs at master - darkrenaissance/darkfi - Codeberg.org #dev haumea: Yeah just a few things squashed into one #dev haumea: It's VK PK serialisation, and dynamic circuit configuration using given params #dev nice, good to know. I'll add a comment to Cargo.toml #dev did ying tong review this? #dev There's more commits upstream but none are related to code: https://github.com/parazyd/halo2/compare/v4...zcash%3Ahalo2%3Amain #dev Title: Comparing parazyd:v4...zcash:main · parazyd/halo2 · GitHub #dev It's just doc stuff and misc #dev haumea: It's reviewed by PSE #dev aha great #dev i'll make note of this. where is it reviewed by PSE? it's a pull req they submitted? #dev https://github.com/privacy-scaling-explorations/halo2 #dev Title: GitHub - privacy-scaling-explorations/halo2 #dev It's patches from here #dev cool #dev We could maybe use that repo directly, I haven't tried #dev They' #dev They're mostly focused on KZG though #dev yeah it's fine, just want to have a record of this #dev kk #dev https://github.com/ssjeon-p/ecip #dev Title: GitHub - ssjeon-p/ecip #dev btw this is liam's algo in halo2 #dev it's faster EC mult and doesn't need all that weird stuff with the ECC chip #dev Ah cool maybe we can extract that into a gadget #dev Just needs a proper license :P #dev yeah we could add it later, i have a sage impl so we could rewrite it #dev also another impl https://github.com/levs57/halo2-liam-eagen-msm #dev Title: GitHub - levs57/halo2-liam-eagen-msm #dev Nice #dev brb #dev b #philosophy https://twitter.com/TuckerCarlson/status/1755734526678925682 #dev hi, i'm trying to compile on mac :/ and running in to an issue with unknown feature "stdsimd" due to dependency on ahash 0.7.7, which is fixed in ahash 0.8.7 per https://github.com/tkaitchuck/aHash/issues/200#issuecomment-1928956777 #dev Title: error[E0635]: unknown feature `stdsimd` · Issue #200 · tkaitchuck/aHash · GitHub #dev is it possible to switch to ahash 0.8.7 #dev errorist: you had this issue recently, right? #dev aiya: the issue is due to nightly breaking crates that haven't updated their build.rs script #dev haumea: yes, upgrayedd helped me fix it #dev you can try to force the ahash version directly, but I'm not sure it won't try to bring the older version, since its minor version is different #dev but let me check just to be sure #dev the project relies on both 0.7.7 and 0.8.7 for some reason #dev lib.rs:33:42 is where the make is erroring out #dev ahash is an indirect dependency #dev so sub/dependency crates pull both versions #dev you can check on the deps tree who pulls the old one #dev correct, used by hashbrown 0.12.3 and 0.14.3 #dev https://github.com/rust-lang/hashbrown/pull/496 #dev Title: Bump ahash to fix missing `stdsimd` with nightly by chriscerie · Pull Request #496 · rust-lang/hashbrown · GitHub #dev fun fact, thats an official rust-lang crate #dev exactly, 0.8.7 has the fix. I'm trying to work on a mac with IntelliJ RustRover IDE and the mac build and running tests would really help #dev we have a workaround you can apply #dev please don't advertise IDEs, we don't care here :D #dev execute these, in order: #dev rustup toolchain install nightly-2024-02-01 #dev rustup target add wasm32-unknown-unknown --toolchain nightly-2024-02-01 #dev downloading #dev after that you have to edit the repo config #dev sed -i rust-toolchain.toml -e "s|nightly|nightly-2024-02-01|g" #dev sed -i Makefile -e "s|+nightly||g" #dev then you should be good to go, run make clippy or make test to verify #dev haumea: should I add these instructions in the doc? we don't know when crates will be fixed again #dev also thats the reason test fail btw #dev in pipelines #dev draoi: everything look very normal #dev all clean, I can connect to seed and get peers no problem #dev I'll rebuild now #dev running make test now, had to brew install gsed as the sed command was failing on mac #dev brew install gnu-sed #dev well you could edit the file manually directly :D #dev :3 #dev clippy finished building, make test fails with library 'sqlcipher' not found, I have installed sqlcipher 4.5.6 #dev dasman: can you share the logs? #dev i want to see what happens on the lilith side when peers are giving seedsync errors #dev I haven't saved any :( will do now, debug level #dev ty #dev aiya: you need the dev version #dev errorist, deki: you can retry connecting your darkirc nodes to dasman seed #dev upgrayedd: thanks, and yes the doc instructions need an update #dev upgrayedd: always good to document things so we can link to people, idk if it counts as "official advice", more like a workaround section if ppl have this error #dev but you're the boss here #dev yeah will add a note section later #dev I'm fighting clang now XD #dev you need the sacred artifact, the amulet of debugging #dev you mean printf()? #dev haha recently i met my friend eric who's a very experienced dev, and he was shocked devs today don't use debuggers and profilers, just print #dev I don't think that statement is true, especially in the corpo/soy space #dev most of them use the integrated IDE breaking points to debug #dev I would argue the opposite is true, people don't(when they should) use just print #dev only debugger I would ever use: https://github.com/aggstam/debugger #dev Title: GitHub - aggstam/debugger: Simplifying the proper way to debug a program. #dev without breakpoints, how do you read the current state of the objects and data in memory? #dev aiya: print it #dev *current* #dev gdb gud #dev : test #dev test back #dev draoi: just came back, will try it again #dev dasman: can connect now to your node again #dev : sup #dev : ACTION waves #dev : :) #dev hah! #dev eric says he regularly runs his programs through a profiler which gives you a good overview you don't have overwise #dev *otherwise #dev so he knows where program spends most of the time and key places to focus for optimization #dev haumea: https://github.com/darkrenaissance/darkfi/blob/master/src/contract/test-harness/src/dao_vote.rs#L79 #dev haumea: Should this be the snapshotted tree instead? #dev yes correct #dev ACK fixing #dev nice #dev i tried to remove clear_inputs, but it means i have to delete faucet stuff from code #dev I'm soon done with all of it #dev No worries I'll remove #random : test #random test back #dev Already did, just uncommitted #dev oh ok, we're halfway through the same thing #dev ok i'll stop this then #dev Just finishing adding fees to dao::vote and dao::exec in the test-harness #dev And then I need to make sure all the tests pass and I'll push #dev https://agorism.dev/uploads/foo.diff.txt #dev Been at this for many days lol #dev But it's quite an improvement #dev shall i stop this one? #dev aha nice #dev Yeah you can I have more or less the same thing in my repo #dev i noticed for FeeParams, it uses the input/output from xfer #dev Correct #dev but we don't need all those values so it could be optimized to be smaller if that's what you want #dev like value and token commit for example #dev Maybe, I just took the simpler approach #dev yeah thats what i thought #dev To be done asap #dev you like code reuse which is good too #dev ok makes sense #dev upgrayedd: https://github.com/darkrenaissance/darkfi/blob/master/src/contract/test-harness/src/dao_exec.rs#L211-L218 #dev Is this the correct conversion? https://termbin.com/s7j0 #dev brawndo: yes #dev Nice, I got it then :D #dev aiya: all smooth? #dev : @skoupidi pushed 1 commit to master: 0957973ff6: README: development nightly notes added #dev haumea: https://codeberg.org/darkrenaissance/darkfi#living-on-the-cutting-edge #dev Title: darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. - Codeberg.org #dev dasman: could you take a look at your lilith logs? #dev [WARN] net::session::seedsync_session: [P2P] Failure during sync seed session #0 [tcp+tls://dasman.xyz:5262]: Channel stopped #dev if you could just send the entire log in paste nym or something that would be grat #dev s/grat/great #dev just want to see if everything's ok or not #dev not sure why ppl couldn't connect earlier #dev still getting the 'Failed syncing DAG' error :/ my allowed transports is: ["tor", "tor+tls", "tcp+tls"] and seeds = ["tcp+tls://dasman.xyz:5262"] #dev also my hostlist.tsv is empty, not sure if that matters #dev deki: can you try with the default config? #dev just change the seed node #dev okay, so seeds will just be what's displayed here? https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #dev Title: tor-darkirc - The DarkFi Book #dev i am saying don't do the tor setup #dev ah right #dev backup your current config (save as tor-darkirc-config.toml) #dev then rerun darkirc #dev it will say 'created new config at [...]' #dev then open the new config #dev and change the seed to the dasman seed #dev then try to conenct #dev s/conenct/connect #dev okay #memes : nevermind got it working #memes : yay #memes : I remembered the default settings, but left dasman's seed #memes : wrong chat #dev : got it working #dev : @parazyd pushed 5 commits to master: 00aefdded5: contract/money: Faucet cleanup... #dev : @parazyd pushed 5 commits to master: c7f287d4bd: contract/money: Add FEE_CALL_GAS constant, and export some structs #dev : @parazyd pushed 5 commits to master: 2f7c4b4e17: contract/money: Implement std::hash::Hash for OwnCoin #dev : @parazyd pushed 5 commits to master: 8828438d8f: contract/test-harness: Cleanup and addition of tx fees. #dev : @parazyd pushed 5 commits to master: a516ec90e0: Fixup rebase artifacts #dev Tests need some rewriting #dev : nice, welcome deki #dev There is now automatic logic of collecting owncoins upon execution of txs in the harness #dev So logic needs to be rewritten #dev do we need fee logic for all of the tests? #memes : :) #dev It's there #dev It's optional #dev ok #dev : so what's cool about darkirc as opposed to ircd is that it has msg retention up to 24hrs #dev : so you can be offline and still receive msgs (within that window) #dev haumea: The point is you can enforce the fees wherever you want now #dev All the functions support it #dev what needs to be rewritten? #dev The tests for each contract #dev Mostly removing stuff #dev we have a few days until review, i finished my cleanup tasks #dev And modifying some asserts related to owncoins #dev i was planning to look over spec and work a bit more there, but can also help with code #dev If you can, maybe do the DAO contract and I can do deployooor and money #dev brawndo: maybe also nuke bin/faucetd? #dev upgrayedd: It's gone #dev there's also the swap stuff which doesn't let DAOs do swaps rn #dev haumea: You can just run `make clippy` inside the dao dir #dev ok #dev brawndo: (x) doubt #dev oh I misread your sentence #dev Yeah the daemon is still there #dev :D nw #dev Poof #dev : @parazyd pushed 1 commit to master: 2d06c44cc0: bin/faucetd: Remove code.... #dev draoi: darkirc i deleted config, and changed seeds = ["tcp+tls://dasman.xyz:5262"] #memes : my internet went completely off, glad you made it #dev anything else i must do? #dev Error: DagSyncFailed #dev stops with that #dev that shouldn't happen #dev : draoi: it's not a window btw, tree resets 00:00utc #dev can you share the logs #dev does it say seedsync failed #dev dasman can you check the lilith logs? #dev codeberg down? #dev git push just hangin' #dev try again #dev sometimes it hangs #dev : ++ #dev draoi: one sec #dev : dasman: a lot of ppl reporting they cannot connect to your seed #dev https://www.youtube.com/watch?v=ffET_NmfZjc&pp=ygUTanVzdCBoYW5naW5nIGFyb3VuZA%3D%3D #dev Title: Beetlejuice Just Hanging Around - Original Video - YouTube #dev : can you share the logs? #dev git push be like #dev <3 #dev oh haha just msgd u on the otherside dasman #dev : yy sure just one sec #dev XD #dev ty #memes : dasman, deki: wanna try connecting to my node? #dev haumea: So the work is mostly just manual work like this https://codeberg.org/darkrenaissance/darkfi/commit/7e271717192c783493d6a98d6b75795ee9c8a115 #dev draoi: https://agorism.dev/uploads/darkirc.log.txt #dev ok ty brawndo #memes : ^ seed node #dev Title: contract/deployooor: Port tests to updated test-harness · 7e27171719 - darkrenaissance/darkfi - Codeberg.org #memes : tcp+tls://51.154.25.95:31337 #memes : and tor: tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551 #memes ok just a sec #dev haumea: did you rebuild darkirc? #dev less -r /tmp/darkirc.log.txt #dev yes will try again #dev draoi: ^ try that command #dev the logs are showing something i would not expect #dev ok i just did make distclean #dev trying with 7e271717192c783493d6a98d6b75795ee9c8a115 (master) #dev haumea, I changed my config file back to the default values, this is what I have now (only showing what I changed, left everything as is) https://pastebin.com/h8RLceKV #dev Title: ## Outbound connection slotsoutbound_connections = 8#outbound_connect_timeou - Pastebin.com #dev deki: did you change anything apart from the seeds = value? #dev draoi: https://agorism.dev/uploads/darkirc.log2.txt #dev haumea: I changed allow_transports = ["tor", "tor+tls", "tcp+tls"], seeds= dasman, inbound = ["tcp://127.0.0.1:25551"] and inbound_connections = 8 #dev oh #dev i'm using #dev XD #dev seeds = ["tcp+tls://dasman.xyz:5262"] #dev you shouldn't need to change anything in the default config for it to work #dev yes that's right sorry I was lazy and didn't finish it #dev aside from the seed #dev ok yeah that's all i did #dev deki btw 127.0.0.1 will only allow connections from the same pc, for enabling inbound from the internet, you need 0.0.0.0 #dev yeah so the things I just mentioned are probably redundant, except the seed #dev ah thanks, didn't realise #dev haumea: the logs are showing that you are connecting to the seed, but the seed is not sharing peers with you #dev i would need to see the lilith debug output and hostlist to know what's happening #dev upgrayedd: ld: library 'sqlcipher' not found even after brew install sqlcipher, there is no different sqlcipher-dev installer for mac #dev dasman: you can inspect the lilith hostlist using dnet #dev (without needing to stop the node) #dev i think i should probs deploy a lilith for more efficient debugging #dev aiya: check how you can compile sqlcipher on your own by using the static build guide https://darkrenaissance.github.io/darkfi/dev/dev.html?highlight=static#static-binary-builds or the corresponding docker file https://codeberg.org/darkrenaissance/darkfi/src/branch/master/contrib/docker/static.Dockerfile#L25-L33 #memes : errorist: I connected using your seed value #dev Title: Development - The DarkFi Book #dev Title: darkfi/contrib/docker/static.Dockerfile at master - darkrenaissance/darkfi - Codeberg.org #dev as references #dev we don't support macos #memes : didn't input the tor address because I thought that was causing me issues earlier #memes deki: ok #dev haumea: Actually don't worry about the tests, I'll manage on my own #dev can't sync dag now too #dev now it worked #dev so is the idea to run the darkirc node for some period of time to see how stable it is? #dev tcp+tls://ohsnap.oops.wtf:31337 #dev my seed node should be working now #dev if anyone wants to give it a try #dev errorist: connecting to your seed node, that means those of us connected will only be able to converse with each other? Want to make sure i understand this #dev no, we should all be able to communicate #dev it's good to have multiple seeds in your config for redundancy I guess #dev but i'm no expert ^^ #dev ah ok, so it's more of like a host? And I can leave multiple seeds uncommented then? I don't need to leave only one #dev yup, can have multiple #dev : @parazyd pushed 4 commits to master: 7e27171719: contract/deployooor: Port tests to updated test-harness #dev : @parazyd pushed 4 commits to master: 23abd8c526: contract/money: Port genesis-mint test #dev : @parazyd pushed 4 commits to master: e3b785a986: contract/money: Port integration test #dev : @parazyd pushed 4 commits to master: 427dbce106: contract/money: Port mint-pay-swap test #dev : @parazyd pushed 1 commit to master: 2125cf7c98: contract/test-harness: Append missing proof to vks #dev : @skoupidi pushed 2 commits to master: 1d82f5c260: README: development nightly notes improved #dev : @skoupidi pushed 2 commits to master: b30c20379c: darkfid: integrated latest changes #dev ok brawndo ty #dev woah errorist, your seed worked! #dev yayy #dev nice on #dev one #dev testing now #dev deki: this is a p2p tutorial that explains all the basic concepts around the p2p network https://darkrenaissance.github.io/darkfi/learn/dchat/dchat.html #dev Title: P2P API Tutorial - The DarkFi Book #dev also check https://darkrenaissance.github.io/darkfi/arch/p2p-network.html #dev Title: P2P Network - The DarkFi Book #dev cute hostname errorist #dev : i dont see the messages #dev : hihi #dev : hiiiiiiiiiiii #dev : hihi #dev : hihi #dev woah they all sent #dev those are the prev ones #dev draoi: thanks :D #dev : hey haumea #dev : welcome to the other side #dev : is inbound_connections = 0 mean unlimited or 0? #dev : it means 0, the default is 20 now to #dev : s/to/tho #dev : ok #dev : it's a problem if it's zero cos it means you won't send your addr to seed node or other nodes, since ping_self is disabled #dev : ok i put 100 #dev : kewl #dev : do you have an external addr tho? #dev : when ppl setup tor and provide instructions, i'll set that up too #dev : yeah #dev : tor is only partially deployed now afaik. errorist is working on a tor seed #dev : btw we have 24 hour for resetting tree #dev : maybe we should do like 8 hours, but go back 1-2 weeks, starting with most recent tree #dev : later we can see how to enable support in clients like weechat or custom UI #dev : but good to have these presets working before people start running lots of nodes #dev : draoi: my tor node should be running, but haven't tested it: tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551 #dev : I have outbound_connections = 8, will set it to 20 #dev : we were talking about inbound connections above fyi #dev : ah yeah good idea #dev : *inbound #dev : ah kk #dev : yeah the more the merrier for seeds especially #dev : should i increase outbound too or not? #dev : outbound default is 0 afaik, so if you want an outbound node you will also need to set that to something reasonable #dev ran make coverage and eventgraph_propagation failed tests.rs:164:9 #dev : encrypt: maybe you can try inspecting your lilith's hostlist by running dnet #dev : should i put outbound? #dev : (for a server node) #dev : yes #dev : i have = 8 #dev : that's probs fine, idk really #dev : ok i put 10 #dev : kewl #dev errorist: congrats on setting up the seed node! I'm helping on board a devops contributor who plans to run a seed node as well, any pointers to getting started? #dev aiya: thanks, it took me a while but think I now understand how it works thanks to draoi and dasman :) I can try writing a noob friendly guy on how to run seed nodes #dev aiya: tests are broken now, we are actively fixing them #dev also why run coverage? it will take hella lot as its slow af #dev ty #dev : for some reason i'm not always getting new messages, have to quit weechat and reopen and then I see them, strange #dev im trying everything on the mac and setting up a build environment #random test #random test back #dev *guide lol #dev : that shouldn't happen #dev aiya: glhf :D #random darkirc failing for me now #dev feel free to PR on stuff thats missing in the deps config, etc #random https://agorism.dev/uploads/screenshot-1707491399.png #random check this out #dev : let me restart darkirc #random haumea: nice doxxing #random lmao i had a darkirc node still running from a long time ago #random haumea: same now here too #random ok it's failing on the server for me too #random I have dasman's node in my lilith as seed, maybe his went down again #random wdym "failing" #random logs or gtfu #random : test #random test back #random so in lilith if I have another node listed as seed, my connection is going through this node like a daisy chain? I uncommented seed and it's working fine now #random : hey #random : still not getting all the messages though, need to restart weechat #random : that's weird #random : can you see the msgs in your log? #random errorist: its more like your lilith will ask that node for peers, to fill its list #random upgrayed: I see #random draoi: which log? #random so in this case it acts more like a quick bootstrap of your own lilith #random errorist: I don't think mirror-bot is two-ways #random errorist: the debug output of your darkirc node, the client of which is not displaying msgs #random draoi: do I need to run in verbose? I don't see the messages there when just running ./darkirc #random ah yes plz run with -vv #random my nodes are fine, I can still connect and sync successfully #dev : @skoupidi pushed 1 commit to master: d81be20ec1: src/error.rs: minor cleanup #random same for lilith, run with -vv #random ok, let me check #random dasman: did you share the logs already? #random I did, check TG #random recv'd ty #random yw #random : test #random test back #random : test #random test back #random will check logs in a bit, gtg for a lil while #random : sup bros #random : i can see everything #random : alwayshasbeen #random : etc #random : same here #random : XD #random : must be something on my side #random : I can send but not seeing yours lol #random : could it be the irc listen port? #random : I have a different one than default #dev i'm getting this: 15:23:58 [ERROR] send_version() failed: Channel stopped #dev but still i synced successfully just now #random oh weird my server is connected now and running #dev : hihi #dev : welcome! #random : test #random test back #dev : uh well the messages shown on ircd are different #dev : three are missing #dev : Checking mirror bot #random : test #random test back #dev : test back #random : test back #random : test back #dev : test back #dev test #dev test back #dev : test #dev : test back #dev test back #dev : @skoupidi pushed 2 commits to master: eaecebf47c: darkfid: cleaned up all slot references #dev : @skoupidi pushed 2 commits to master: 01f88db53b: drk: cleaned up all slot references #dev one of bots was on old darkirc v0.4.1, that caused send_version() error, all should be clean now #dev aha kk #dev : @skoupidi pushed 1 commit to master: 47b0e2905f: doc/arch: removed pos related stuff and added a high level description of PoW logic #dev : @skoupidi pushed 1 commit to master: 3e7bc53af0: doc: removed faucetd references #dev gm #dev : @parazyd pushed 2 commits to master: a8297adbf4: contract/money: Port token-mint test #dev : @parazyd pushed 2 commits to master: 9c44bfb9ed: contract/money: Delete redundant tests #dev afk bbl #dev cya #dev upgrayedd: What would be the right way to add a block to the blockchain in the test-harness now that there are no slots anymore? #dev I want this to work: https://github.com/darkrenaissance/darkfi/blob/master/src/contract/test-harness/src/money_pow_reward.rs#L55-L58 #dev brawndo: it fails now? #dev since you are using fixed difficulty, you can do something like this: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/darkfid/src/tests/harness.rs#L168-L230 #dev Title: darkfi/bin/darkfid/src/tests/harness.rs at master - darkrenaissance/darkfi - Codeberg.org #dev so a holder generates the next block, and then you add it to all of them using validator.add_blocks() #dev so instead of executing the PoWReward tx, you just generate a block for that holder and everyone adds it #dev with the fixed difficulty the difficulty check should always pass #dev : @skoupidi pushed 1 commit to master: 8eef36b898: blockchain/header: changed nonce from pallas::Base to u64 #dev : @parazyd pushed 2 commits to master: 882c7da804: contract/money: Add malicious test case for genesis-mint #dev : @parazyd pushed 2 commits to master: 7d95c7f09e: contract/money: WIP pow-reward test port #dev upgrayedd: make test-pow-reward #dev upgrayedd: It fails at VRF proof verification #dev The next commented one, at line 93 #dev But that's correct, as I didn't add a block to the blockchain, we need a way to do that #dev brawndo: yeah like the link I send, it should be easy to add #dev ok #dev ty #random : test #random : test back #random test back #random : test #random : test back #random test back #random : test #random : test back #random test back #random : test #random : test back #random test back #dev b #dev : @parazyd pushed 2 commits to master: f007d1a732: contract/money: Remove pow-reward test... #dev : @parazyd pushed 2 commits to master: 09e7475d58: contract/test-harness: Add a generate_block() function.... #dev : @parazyd pushed 1 commit to master: c7ea1a2c08: contract/dao: Clippy lints #dev : @parazyd pushed 1 commit to master: f4c3a059f3: contract/test-harness: Remove airdrop module. #random test #random test back #dev : @skoupidi pushed 1 commit to master: d376d2d43a: contract/money/tests/integration: fixed failing test due to erroneous VRF parameters #dev Hello #random hello #random Is anyone here? #math hello #random hey #random I'm around #random Hello. Have you seen anyone known as azurekiss? #random They were on a platform I on, but left and mentioned this server. #random I know usernames are anonymous here though. #random hmm name doesn't sound familiar from here, dont think I've seen anyone using it #random there's also the telegram channel, they could have referred to that #random i'll check it, but don't worry i'll stick around here too. I feel like a hacker accessing this lmao #random haha I know hey, me too #random I'm learning C++ and Java currently. But i'm at the "why the frick is this giving my 5000 lines of errors" stage of C++ #random templates are a pain #random haha I understand the struggle, I got into C++ at work last year and it's been interesting... #random although recently took up Rust, which is making in-roads into crypto projects (such as this one) #random I want to work up to making an RPG from scratch but for now i'm just doing smaller programs like a basic polynomial library to do stuff like solve and factor integer polynomials #random Cuz I'm a math nerd. #random Also I wanna work on a command line idle game to gain some experience #random ooh that's pretty cool #random personal projects like that are the way to go, the math stuff will help if you ever want to get into open source projects like darkfi #random I managed to make some progress albeit i had to rely on chatgpt for some of the code, but by analyzing what it generates I can learn to code better hopfully #random I wanted to jump right into the RPG but I realized quickly that would be a lot of work with my level of experience. #random So I wanna get some more. #random Also I want to learn haskell but it's just so different from C and C++ that i'm having a hard time with it. #random well C++ is the main language for anything gaming related, I was using it with Unreal Engine #random I don't know anything about Haskell, but my advice would be to stick to one or two languages at a time #random Haskell is like if a mathmatician was asked to design a programing language based on the definition of a programing language and nothing else. #random haha I see #random All data is imutable, everything is a function, and there isn't even a set evaluation order. You define more what to do and let the compiler figure out how to do it. #random Whereas a language like C, you define how to do somthing, and the compuler figures out what you're doing to optimize it. #random *compiler #random sounds like Rust, data variables are immutable but by default, you can change it to mutable #random Rust does take some inspiration from functional programing, but in haskell, immutability is enforced for everything. #random sounds tedious #random There is a garbage collector, and you can use trickery to simulate state so it's equivilent to other programing languages. #random Even if immutability is enforced #random There are these thingies called monads which you can use for IO and i'm going to be honest I do not understand them #random looking at it now, it does looks complicated straight off the bat #random But once you know haskell, code is apparently a lot more readable because it is defined in terms of what to do instead of how to do it. #random and it is a lot more compact too #random I don't know, I think after Rust I'll likely move onto Javascript and maybe leave it there for a while, already know Python/C, C++ I'm okay #random I'd only do Haskell if it was an absolute requirement for something #random I'm gonna learn haskell but not use it exclusively or anything. #random I also wanna get better with python. #random python is good to know definitely #random Python seems really nice for if I need to write a script that i just need to run a few times and I need to do it quickly. And I do know that python can compile to C with cpython to make it run fast #random yep pretty much it #random Also haskell is supprisingly pretty fast, on par with C a lot of the time. #random But enough about Haskell. It confuses me and I am going to be a math major lmao. #random actually I think one of the other devs in here was interested in Haskell #random haha fair #random Also, I have an idea for a way to basically establish a secure communication over any internet chat platform that lets you upload files, and send encrypted messages that are indistinguishable from normal documents and images. #random how would you do that? #random If done right, this would let you basically turn anything into a free speech zone, because admins would not be able to prove that you are sending anything other then innocent images to eachother. #random fair enough, I think darkfi is aiming for that too #random Basically, first the Idea is to do a Diffie–Hellman key exchange in such a way that it is unrecognizable as one. #random This requires both users to know what to do ahead of time, but once everyone knows what to do they can establish a secure channel over any public service that lets you send files. #random With this, you could make a facebook group a free speech zone, and the admins would have literally no idea it was anything other then an image sharing group. #random There is nothing stoping you from doing a Diffie–Hellman key exchange over internet chat actually. #random nice idea, I know darkfi uses a DH key exchange so it's definitely the way to go #random But it would look very suuspicious to just send a 4096 bit prime number to somebody. #random Well not a prime, but it would look strange to send random data to someone and it would be very suspicious #random So the idea is to create an innocent looking odt file #random Overide manifest.rtf with the public secret(after copying it) and send it along with a sha256 to pretend to be verifying it. #random (the sha256 of the real file, not the 'corrupted' one. #random Then, they can extract the manifest.rtf file, which would be encoded in a way to look corrupted, when in reality it is the key. #random The public key for the key exchange. #random The other person would do the same thing, and the two people now have a secure channel established in a way that won't raise eyebrows. #random Now, use a key derevation function on that shared secret, use 256 bits for an aes 256 key and the rest of the information to feed into some sort of algorithm. #random you sound very well versed in cryptographic principles, I like the idea #random This algorithm would take in the rest of this information that was obtained from the exchange, some AES-256 cyphertext, and an image, and output a near identical image with the cyphertext encoded into it. #random I'm a novice honestly, but i'm trying to learn more. This idea is a bit rough around the edges and needs more work to be viable in practice #random see what the other devs think, as for myself, I've only done one cryptography elective when I was at university, but teaching myself about it more now with darkfi's implementations #random Anyways, with this shared information, all users who partook in the key exchange could encode cyphertext into images. Also during the eky exchange, you would pretend the document got accidently corrupted and send the document with the correct sha256 #random You could have users post fake plaintext posts #random But have a few image channels or somthing that you use as a free speech zone. #random I don't know how to add new people to this exchange, but I do know it's robably possible. #random Also you could probably use asymetric crypto to make this more secure but more performance intensive to perform. #random just using aes for the sake of simplicity #random I like the idea, probably also want to use ZK proofs #random not familiar with them, but I will look them up now. #random oh yeah, they underpin a lot of privacy focused protocols #random Anyways, my idea would be that the intial exchange would be impossible to prove it was anything other then just documents being corrupted(you send the 'right' document afterwords #random and everything after that is embeded in either more ""corrupted"" documents or normal looking images. #random hey I gotta head out, can talk later #random Cya #random Stay safe out there :3 #random c-ya #random haha I shall try :3 #random i'll probably work on implementing an actual implementation of this idea tommrow #random just somthing purely theoretical, not meant to be used in practice, just a proof of concept. #random anyways, goodnight #dev gm #random Colonizor48: you should learn rust instead of c++ #math yoyo #math Colonizor48: say you mention you're a math major... what areas of math are you into? #math i'm into elliptic curves, algebraic geometry/number theory and homology #dev gm #dev currently learning about elliptic curve group law #random https://darkrenaissance.github.io/darkfi/crypto/rln.html #random Title: Rate-Limit Nullifiers - The DarkFi Book #random check this out for anon chat spam resistance #dev nice #dev : test #dev test back #dev : test back #philosophy https://thewritetoroam.com/2024/02/how-to-write-stuff-no-one-else-can #philosophy Title: Not Acceptable! #random https://github.com/djanderson/aho #random Title: GitHub - djanderson/aho: A git implementation in awk #random woah cool #random i feel inspired to learn awk #random haven't heard of awk before, looking into it now #dev haumea: did you have some issue with the book not updating before and if so how did you solve it? #dev i didnt fix it, bra*ndo did #dev ah hmm, it's weird there's changes to the book which are viewable locally (and SUMMARY.md is updated) but the website blog shows the old stuff #dev s/blog/book #dev where? #dev oh yeah Start Here is missing #dev https://github.com/darkrenaissance/darkfi/actions #dev Title: Workflow runs · darkrenaissance/darkfi · GitHub #dev everything failing #dev it's my fault #dev : @zero pushed 1 commit to master: e6bf38d0aa: book: fix broken include links #dev oh it's this error causing it to fail #dev error[E0635]: unknown feature `stdsimd` #dev --> /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ahash-0.7.7/src/lib.rs:33:42 #dev that's why all jobs are failing #dev : hihi #dev https://users.rust-lang.org/t/error-e0635-unknown-feature-stdsimd/106445/2 #dev Title: error[E0635]: unknown feature `stdsimd` - #2 by jofas - help - The Rust Programming Language Forum #dev 6894572da6eb8b0906b0f926e5911db651e8d493e29b227e97da3d0ebc10d9e0146d5eb1f5a67e61 #dev opps #dev https://github.com/rust-lang/rust/commit/ea37e8091fe87ae0a7e204c034e7d55061e56790 #dev Title: Auto merge of #117372 - Amanieu:stdarch_update, r=Mark-Simulacrum · rust-lang/rust@ea37e80 · GitHub #random test #random test back #dev https://github.com/tkaitchuck/aHash/issues/200 #dev Title: error[E0635]: unknown feature `stdsimd` · Issue #200 · tkaitchuck/aHash · GitHub #dev : @draoi pushed 1 commit to master: 67216e14fe: chore: cargo update #dev seems this build is still failing due to dependencies using dependencies using the old version of ahash #dev https://github.com/wasmerio/wasmer/issues/4445 #dev Title: Broken on nightly because of ahash 0.7 (aka "update hashbrown") · Issue #4445 · wasmerio/wasmer · GitHub #dev ah nice one #dev seems arti-client also needs to update some depdencies but nothing on their issues about this #dev haumea: You did the funcid changes, could you also please update the FeeV1 proof with the changes? #dev No worries about code, just the zkas proof please #dev oh actually it seems fine I think #dev what should i look at? #dev nw it's just that the proof is failing to verify #dev I must have missed something #dev I thought initially it's related to funcid changes, but that stays the same in the proofs #dev i.e. if there is nothing, spend_hook should be 0 #dev biab #dev brawndo: use zk::export_witness_json() to debug #dev then compare the public inputs inside the json and inside the wasm #dev (assuming the exported json passes zkrunner) #dev this is how i debug all zk proofs #dev 1. is the proof sound? (so it works with witness/publics when built) #dev 2. do the public inputs in wasm match what's expected? #dev use zkrunner for #1, use the debug log for #2 #dev okay will do #dev Thanks #dev ah yes there's an extra public input in the FeeRevealed::to_vec() #dev In zkas it's using constrain_equal_base() which does not use an Instance #dev But the vec kept the spend hook #dev ok ez :) #dev yay it works now #dev kewl #dev !topic artifact abstraction for wallet Builders #dev Added topic: artifact abstraction for wallet Builders (by haumea) #dev !deltopic 0 #dev Removed topic 0 #dev when should i start fixing drk? #dev upgrayedd is working on it, so you 2 can organise #dev ok ty #dev : @parazyd pushed 1 commit to master: 8c2a7c65a1: contract/money: Final integration test fixes... #dev I finished porting the money tests #dev Now DAO and we gud #dev master I can't compile anymore tho #dev just looking at the test-harness and it occurs to me that a lot of this API could be migrated to a user friendly API #dev In what sense? #dev fuuuck im getting the stdsimd issue now too #dev ffs rust #dev brawndo: you know like dao_mint, money_transfer .etc that return a tx and stuff #dev You can revert 67216e14fe31f3943b6b96c3466260eb2a7b84b0 #dev Yeah what about it? #dev https://codeberg.org/darkrenaissance/darkfi#living-on-the-cutting-edge #dev Title: darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. - Codeberg.org #dev you don't need to revert #dev draoi, haumea: we already have a workaround on darkfi :D #dev brawndo: so these functions are used in the test-harness currently, but i'm saying they could be also generalized a little and used in DRK or other wallets #dev like the relation between GDK and GTK #dev note: i mean the TestHarness functions to create the txs #dev (not the contract functions) #dev like money_token.rs has fn token_mint() #dev Well perhaps but they're quite geared towards testing #dev i think it's possible to make some changes and share the code rather than full on code duplication for `drk` #dev Sure #dev i'll look into it when we're ready #dev not sure if this is related to the issues you guys are having, but yesterday I tried building darkfi in a docker container, long story short I had some dependency issue and ran cargo update to fix it #dev i also want to make the cli tool more stateful like git #dev cos often passing around big strings is kinda annoying #dev i also had this crazy idea of integrating darkirc into it for message passing #dev so for example you could send money to people's nicks #dev or doing DAO stuff / swaps #dev might make also integrating RLN easier #dev JSONRPC is your friend #dev android doesn't allow spawning daemons like that, they have their own ghey interface #dev https://developer.android.com/develop/background-work/services #dev Title: Services overview  |  Background work  |  Android Developers #dev haumea: you are entering systemd "ideas" territory.... #dev lol true #dev this is how the linux kernel works, you have pluggable modules that expose an introspectable common interface #dev also how blender became big and successful #dev https://www.geoffreylitt.com/2019/07/29/browser-extensions #dev Title: Browser extensions are underrated: the promise of hackable software #dev or winamp #dev : @skoupidi pushed 1 commit to master: 7155548f45: Revert "chore: cargo update"... #dev draoi: use the guide I send while the crates are not updated #dev we can also updated the github pipelines so tests/book can use the workaround until that #dev unless you want metamask/browser, we have to enable users to create extensions for software... and we can easily do that with current functionality (pluggable architecture) while gaining the benefits of: android/cross platform, and can easily build gui on top while also forever supporting cli #dev haumea: Why is the TokenID using a fixed blind now? #dev only for a single token, but not for other tokens #dev so correct would be to store a HashMap of TokenID -> token_blind #dev aha #dev ah my bad upgrayedd ty #dev : @skoupidi pushed 1 commit to master: 1eaf5fae35: .github/workflows: temporary workaround for nightly build #dev ty #dev quick Q about the consensus.md doc upgrayedd: i see you are saying 'previous previous proposal' and 'previous previous block producer'- is that a typo or do you mean 2 blocks previous/ 2 proposals previous? #dev yeah I mean the previous block of the previous block from current, so yeah 2 blocks before current #dev ok gotcha #dev let me add a missing note about VRF so its complete #dev go ahead #dev 1 other thing wasn't sure about, when you are talking about the nonce #dev you say miners "try to find a nonce that makes the blocks header hash bytes produce a number" #dev do you mean the block header contains the nonce? or wdym by the block head hash bytes produces a num #dev sec #dev when you hash data, it produces a number which is 32 bytes long (the representation) #dev but the data you're hashing deliberately contains a field called a nonce, which can be anything #dev ^^ #dev changing the nonce changes the number output by the hash #dev exactly! thats the PoW mining logic re: block hash is < difficulty target #dev so it's just selecting a new nonce (could be random, could be according to some algo like nonce += 1) #dev ok so there is a nonce in the block header such that when you hash it it produces a number that... #dev yep #dev ok got it #dev yeah think of nonce as like the only modifiable thing in the block #dev where you change it in order to find the produced block hash that its number is less that the target #dev (thats mining btw) #dev yeah the grammar thru me off #dev block header hash bytes :) #dev Well thats the point of proofreading :D #dev ++ #dev I obviously write biased as fuck #dev script/research/pow/src/main.rs #dev Study this #dev I consider most of this common knowledge #dev XD #dev lmk when the new thing is pushed #dev i have a few changes made just will stash them #dev : @skoupidi pushed 1 commit to master: 260a0d99d8: doc/arch/consensus: vrf proof info added #dev draoi: pushed, glhf #dev btw the book should have been updated now in the site #dev : @parazyd pushed 2 commits to master: 98521da0de: contract/dao: Integration test port #dev : @parazyd pushed 2 commits to master: f04a44d255: chore: Clippy lints #dev gotem #dev haumea: All is ready :)( #dev nice, we're ready basically #dev always_has_been.jpg #dev ty upgrayedd #dev : @skoupidi pushed 1 commit to master: 6916cff694: validator/consensus: fork rank logic minor optimization #dev : @parazyd pushed 1 commit to master: 68c9bc8418: consensus: Use BigUint for block ranking to obtain higher resolution #random : test #random : test back #random test back #dev draoi: for previous previous wording, maybe second to last is better term? #dev second to last implies something else #dev i think former previous block might work #dev actually maybe second to last is good #dev well brawndo suggested n-2 #dev which is even more explicit #dev n-2 is perf #dev $(n - 2)$-block is best formatting wise #dev : @draoi pushed 3 commits to master: be7ce54770: doc: proofedit doc/src/arch/consensus.md #dev : @draoi pushed 3 commits to master: 26a7b352ed: doc: fmt doc/src/arch/consensus.md #dev : @draoi pushed 3 commits to master: f2666e77bc: doc: small tweaks doc/src/arch/consensus.md #dev lmk how that looks upgrayedd #dev the main diff is between first 2 commits (fmt messes up the diff) #dev s/ first 2 commits/ first commit #dev draoi: pulling and checking #dev draoi: there are some edits that were replaced #dev check 68c9bc84181acc30b55877d7d735785381babdb8 #dev thats the correct rank computation steps #dev checking #dev ah yep, fixing #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/doc/src/arch/consensus.md?display=source#L74-L76 #dev Title: darkfi/doc/src/arch/consensus.md at master - darkrenaissance/darkfi - Codeberg.org #dev this looks weird #dev it renders here: https://darkrenaissance.github.io/darkfi/arch/consensus.html #dev Title: Consensus - The DarkFi Book #dev as I read it I unders its 3 things, the n-2 proposal, a `VRF` proof and `nonce` #dev s,unders,understand #dev ah thought u meant format #dev no no lol #dev the modules is the n-2 proposal's `VRF` proof big int and `nonce` #dev so 2 things #dev ++ #dev s,modules,modulus #dev these are wrong https://codeberg.org/darkrenaissance/darkfi/src/branch/master/doc/src/arch/consensus.md?display=source#L165-L167 #dev Title: darkfi/doc/src/arch/consensus.md at master - darkrenaissance/darkfi - Codeberg.org #dev its not the n-1 block, its the last block(n) in the fork chain #dev since we defined n-1 as previous, and n-2 as previous' previous #dev other that these rest look fine #dev draoi: so the question is after reading it all, do you understand how the logic works? #dev yeah it makes sense #dev draoi: noice, so make the last edits and its g2g #dev ++ #dev : @draoi pushed 1 commit to master: 5dcf458864: doc: fix doc/src/arch/consensus.md... #dev biab #dev upgrayedd: where are you converting blake3 to pallas::Base? it should be blake2b using pallas::Base::from_uniform_bytes() otherwise it's less secure #dev https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#hashing-to-fp #dev Title: Cryptographic Schemes - The DarkFi Book #dev darkfi/src/contract/dao/src/model.rs:123 #dev haumea: I don't think we do it anywhere #dev where did you caught that up? #dev if you mean in the VRF we already changed it to use big int here 68c9bc84181acc30b55877d7d735785381babdb8 #dev i saw it in the doc #random https://www.youtube.com/watch?v=1o107jihfsg #random Title: Why Mud Wrestlers Give Up Everything For An Ancient Sport | Still Standing | Business Insider - YouTube #dev yeah its already changed, that was old impl probably before the blake2b find #dev ok cool #dev btw can you read it now(as its in final form) for feedback? #dev doc/src/arch/consensus.md #dev will do, just will eat now, so tmrw #dev if urgent i can read tonight #dev well I would prefer the feedback asap as I want to share it around for external feedback #dev since later we need to make the proper formal paper #dev : gn #random Also a lot on the libertarian left do also get distracted by identity politics. But I digress. #random Anyways, where can I learn more about guns? #random I've got a friend who's trans and a good deal of my friends are lgbt. Gotta protect them if the ultranationalists try anything funny. #random In addition to myself. #random Oh yeah also fuck big corporations too. They just use identity politics to divide the working class and as a cynical ploy to try to centeralize their control over culture. #dev : gm #dev greets #dev gm #dev : gm #philosophy draoi: https://www.infoworld.com/article/3712783/an-interview-with-martin-hellman.html #philosophy Title: Martin Hellman: We’re playing Russian roulette | InfoWorld #philosophy relevant to your article #philosophy "Until I read your book, I saw the National Security Agency as bad and Diffie-Hellman as good, plain and simple. You describe how you came to see the NSA and its people as sincere actors rather than as a cynical cabal bent on repression. What changed your perspective?" #dev is it a mistake that consensus.md#Ranking is talking about pallas::Base? #dev also it says ECVRF but then starts using VRF instead #dev > If more than one fork exists with same rank, the node will not finalize any block proposals. #dev does this keep going until the tie is broken? #dev ok nvm it explains after #dev haumea: I think our impl is `ECVRF`, but kept is as `VRF` after for simplicity #dev is it wrong? #dev well it's highlighted as a label `ECfoo` but then after `foo` is used. NBD #dev how is epoch in the header calculated? is it calculated from the height? do we need this field or is it redundant? #dev i would either use ECVRF each time or do ERCVRF (VRF) and then call it VRF from then #dev epoch is used to define the rewards periods, and is derived by the height #dev we had the discussion again couple of weeks ago, but tbh don't remember if we discussed to remove it entirely from the header #dev : @zero pushed 1 commit to master: 485bec0471: book: correct typo #dev if it's calculated from the height, then you don't need it #dev check src/sdk/src/blockchain.rs #dev ok #dev ah yes i'd remove it, just extra data to hash and is useless #dev kk will remove #dev btw the doc also acts as a "mini" spec for the structs #dev where does the block producer public key for the signatures come from? #dev it's nice, i like it #dev the public key that signed the block must be the same one used in the coinbase/producer transaction #dev so durring block txs verification, we just grab that and use it to verify the block signature against #dev ok you mean for the signature in the coinbase tx #dev yy #dev the pubkey is reused, ok thats fine #dev not exactly #dev each block we produce has a different key #dev which we derive #dev bin/darkfid/src/task/miner.rs#L158-L163 #dev k ty #dev > To calculate each fork rank, we simply multiply the sum of every block proposal's rank in the fork by the fork's length. #dev you mean just sum the ranks of the blocks, right? #dev yeah and then multiply that sum by the forks proposals len #dev thats just proposals, not finalized blocks #dev so empty fork(no proposals after canonical) will have rank 0 #dev there are n proposal blocks, you sum the rank for the n blocks, then you multiply it by n? #dev yes exactly #dev why not just sum the rank for the n blocks? #dev so we try to preserve the shatoshi logic for keeping the fork with more proposals #dev ok so it's giving much stronger preference to longer forks #dev exactly! #dev why sum the ranks then? could you multiply the last rank by n? #dev i guess it must always be increasing #dev no its not increasing #dev the ranks are > 0, and you sum then, then multiply by n ... so it always increases, never decreases #dev check src/validator/utils.rs#L103 #dev ok #dev wait #dev you mean last forks rank or last proposal in fork rank? #dev if you mean the former yeah then the logic stands #dev the rank of a fork. If the fork has blocks F = (M1 ... Mn) with rank(Mi) > 0 #dev yy I thought you mean last block rank #dev aha ok #dev so the fork rank acts as an accumulator #dev that what you mean right? #dev given a fork F of length n, and the fork F' of length n+1 created by appending M{n+1} to F #dev then always total_rank(F') > total_rank(F) #dev just wondering if that's a desired property since it comes from summing the blocks in F #dev yeah thats whats happenning here #dev its a desired property since the stronger preference for longer forks #dev ok so the VRF ranking is just a random number to break ties #dev exactly! #dev aha ok nice, that makes sense #dev and its based on the actual sequence so you can't do long range attacks or shit like that #dev let prefix = pallas::Base::from_raw([4, 0, 0, 0]); #dev since you can never produce a valid high vrf in advance, so your block can rank higher #dev darkfi/bin/darkfid/src/task/miner.rs:161 #dev we can make that a const value, and use from_u64() #dev sure sure, that code is a wip so all improvements/optimizations are good to do #dev oh nice, i didn't think of long range attacks but certainly it's a risk for smaller blockchains #dev btw could you add the math definition you just described? #dev yeah #dev one sec #dev I'm not that into so formal stuff, and we will need it later for formal definitions #dev so better have it there #dev and other formal definitions you have/can think of are highly appreciated #dev I made the doc to be easily digestable by someone without that much underlining knowledge #dev it's very readable #dev so you get a grasp of the consensus logic right? #dev yep it's very clear #dev ++ #dev I'm also really proud of the ascii forks art :D #random anyone with an alternative to firn protocol or railgun? they're both prohibitively expensive #random i miss zkmoney #dev they are my favourite #random concernednetizen: if you don't mind splitting into small positions to minimize the risk of being rugged, you can use cake wallet centralized swap to buy XMR with ETH (and buy back in if desired) #random or you could try the ETH->XMR atomic swap, it's one directional tho #random ofc XMR has some traceability issues, but it's still better than ETH #random https://www.youtube.com/watch?v=7CD_Nl3iwhE #random Title: Bad OPSEC - How The Feds Traced a Monero User - YouTube #random kinda interesting the guy gets caught here cos of opsec, not cos of monero tracing #random ty fellow_traveller #dev : @zero pushed 1 commit to master: 0d7d306a70: book/consensus: add formalization about fork rankings always increasing #dev it looks good, i wouldn't add any math for graph theory stuff #dev it's better for formulas/calculations #dev otherwise you get stuff like this: https://agorism.dev/uploads/screenshot-1707734085.png #dev which is literally describing a graph using math #random in the end it comes down to opsec and choice of software/platform used te operate on #dev lol yeah no these stuff are only needed in formal papers, not here #dev ok will remove the epoch now and I guess we are g2g #random fellow_traveller: are you the same dev as for opentransactions? #random Colonizor48: #fosscad channel #random on oftc network #random aiya: what's your pub key for DMs? #random i'm contact_pubkey = "GNuVxM7358FSbDqZZw5dhkK2CHdhyxpP9cS2WhYao2uW" #dev : @skoupidi pushed 1 commit to master: 7f0f954671: blockchain/header: removed redundant epoch number #dev !list #dev Topics: #dev 1. DRK vesting and mining contract mechanics (by haumea) #dev 2. configurable generators (by haumea) #dev 3. not no entrypoint feature (by haumea) #dev biab #dev !deltopic 1 #dev Removed topic 1 #dev !deltopic 2 #dev Removed topic 2 #dev !deltopic 3 #dev No topics #dev (discussed last week) #dev !list #dev Topics: #dev 1. configurable generators (by haumea) #dev !deltopic 1 #dev Removed topic 1 #dev !topic tx fees client #dev Added topic: tx fees client (by brawndo) #dev !topic tx fees different for issuance vs transfer #dev Added topic: tx fees different for issuance vs transfer (by aiya) #dev !list #dev !list #dev Topics: #dev 1. tx fees client (by brawndo) #dev 2. tx fees different for issuance vs transfer (by aiya) #random xeno: 7HPTLvLNEPs8ohKxQTaXTAnHJGmcxU52jk2fm46efiRR #dev the android stuff is very delicate with versions of the SDK, see for example darkfi/bin/darkirc/android.Dockerfile:41 #dev and to make an APK for things like miniquad, you need a lot of special env variables and custom setup: https://github.com/not-fl3/cargo-quad-apk #dev Title: GitHub - not-fl3/cargo-quad-apk: Glue between Rust and Android #dev i tried before setting it on my dev env but it's a lot of work to maintain and also replicate #dev so can i add the docker target to darkirc Makefile? #dev the android build instrs in the book are broken #dev If the extra stuff don't correspond to actual repo building I wouldn't add them #dev You can copy it and add your extra stuff as a generic android docker builder #dev wdym? #dev well if the target are for building miniquad stuff, they are not for darkfi bins #dev therefore irrelevant to that docker #dev android ndk isn't in the void linux repos #dev i don't see the SDK either... weird #dev hence the generic android docker builder #dev probably based on ubuntu since it has the most updated packages #dev (comperativly to other debian based distros) #dev i'm saying the Makefile used to have a target to build using the dockerfile #dev or maybe debian sed, which is supposed to be rolling release #dev oh wait #dev but it's removed and instead you must install the environment manually now #dev I understood another thing #dev but the android environment is difficult to setup, and i had to build sqlite3 manually, install specific android versions for special features... it's very difficult #dev yeah still you can create a general docker using those exact instructions #dev setup env vars, .etc i tried running `make darkirc.android64' but there's no sdk/ndk package for my distro #dev we have the same thing for musl #dev https://darkrenaissance.github.io/darkfi/dev/dev.html?highlight=static#static-binary-builds #dev Title: Development - The DarkFi Book #dev is the equivelant to using contrib/docker/static.Dockerfile #dev so you can create the dev env inside a docker and use that to build for android instead of your host os #dev https://agorism.dev/uploads/diff.txt #dev this is the code #dev yeah so create a docker builder and invoke the make target to that #dev you don't need to mount iirc #dev yes you need to mount #dev no actually you do yeah #dev check how the builder thing works: https://github.com/aggstam/librewolf-source-installer?tab=readme-ov-file#using-docker #dev Title: GitHub - aggstam/librewolf-source-installer: A helper script extracting and installing a packaged Liberwolf source tar archive. #dev you have the docker file which describes your building environment, so you init it once #dev and then you invoke make targets directly from it #dev the example I send is a docker builder to compile librewolf from source, without setting up anything on your local os #dev (other than having docker obviously) #dev has anyone managed to get this all working in an ubuntu docker container? I got ./ircd working, but couldn't get weechat to connect, I think I know the issue #dev also I've found a bunch of broken links throughout the darkfi book, did you guys want me to list them here or create an issue on github? #dev deki: you can fix them and open a PR #dev This ^ #dev okay will do, I'll do it in the next 2-3 days because there's a few, plus I need to leave soon...for reasons #dev !topic next tasks #dev Added topic: next tasks (by brawndo) #math https://falcon-sign.info/falcon.pdf #random test #random test back #dev hi #dev hihi #dev Hello #dev holla #dev !list #dev Topics: #dev 1. tx fees client (by brawndo) #dev 2. tx fees different for issuance vs transfer (by aiya) #dev 3. next tasks (by brawndo) #dev hihi #dev hello #dev Shall we start? #dev !start #dev Meeting started #dev Topics: #dev 1. tx fees client (by brawndo) #dev 2. tx fees different for issuance vs transfer (by aiya) #dev 3. next tasks (by brawndo) #dev Current topic: tx fees client (by brawndo) #dev okay so tx fees are implemented in the validator and in the tests #dev ACTION cheers #dev The idea is that tx fees require 1 input and 1 output (no more, no less) to prevent abuse and keep it succint #dev Generally the proof stuff is here: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/contract/money/src/client/fee_v1.rs #dev Title: darkfi/src/contract/money/src/client/fee_v1.rs at master - darkrenaissance/darkfi - Codeberg.org #dev And usage of it is here: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/contract/test-harness/src/money_fee.rs #dev Title: darkfi/src/contract/test-harness/src/money_fee.rs at master - darkrenaissance/darkfi - Codeberg.org #dev Sometimes there will be the case where a user doesn't have a single coin large enough to cover a tx fee #dev Therefore a coin selection algorithm needs to be built client-side, which would enable using Money::Transfer to merge some smaller coins into one and use the new one to pay the tx fee #dev It might get a bit complex, might not, but just wanted to note it down for everyone #dev upgrayedd offered to help out #dev nice, do you know about select_coins()? it's a pretty shit coin selection algo tho, just does greedy selection #dev darkfi/src/contract/money/src/client/transfer_v1/mod.rs:42 #dev is the transfer protocol utxo based or account based? #dev yy but it has to be a bigger part of logic #dev oh it's not even greedy, just FIFO #dev So the client is able to automatise this process #dev some users might want coin control to not spend old inputs? #dev e.g. if you wanna transfer something to someone, but have no coin for fee coverage, then it should know how to build a transaction to optimally use all coins #dev aiya: Everything is utxo #dev aiya: Coin control for that matter does not really matter in darkfi #dev what about tx fees proportional to number of inputs #dev Anyway it will be a tad daunting task #dev But surely can be solved #dev why is it daunting? #dev seems quite ez #dev haumea: There's a lot of edge cases to cover #dev esp since fee calls are position independent #dev And you want to make it optimal #dev making it optimal is another thing ;) but making it work is surely quite ez #dev We'll see :) #dev 16:09 what about tx fees proportional to number of inputs #dev Fees are based on general computation #dev This includes wasm execution, signature verification, and zk proof verification #dev then suddenly number of inputs matter for reducing tx fees #dev imo the best algo would be something like: 1. sort coins in terms of nominal value, 2. iter and grab all coins that cover fees. 3. if coins.len() > 1 { generate a Money::Transfer call first combining said coins into one} 3. Generate fee call using final coin #dev exactly that's good #dev ++ #dev that's the greedy algo #dev use case of miners paying out their earnings to the pool operators #dev aiya: That can be done with a smart contract easily #dev Just have the coinbase coin have a hook to some distribution contract #dev cool #dev Anyway #dev !next #dev Elapsed time: 11.4 min #dev Current topic: tx fees different for issuance vs transfer (by aiya) #dev yeah and then the contract simply does a Transfer propotionally splitting the inputs to outputs #dev the issuance of a contract might be large in size, is there consideration for higher fee when deploying new assets vs transfer #dev tx fees proportional to bytes on chain #dev It already is done that way #dev okay, will check #dev You can look through src/runtime/import/ files to see #dev ty #dev np #dev what are the sample fee for issuance vs transfer as set rn #dev in terms of DRK #dev wdym issuance? #dev deploy #dev We haven't settled yet #dev new asset deployed with a smart contract #dev We have the gas units used, but need to settle on a divisor to denominate it in DRK #dev need to consider reducing spam asset created to bloat the chain\ #dev dust attack per se #dev fee pricing depends on resource usage and not functionality #dev You can run some of the contract tests in debug mode and you'll see the gas used for various functionality #dev I believe what aiya means is like in eth where deploying bytes on chain become more expensive as its size grows #dev so the VM has no concept of "issuing coins" or "making transfers", it's just a bunch of functions #dev got it, yes #dev like for example "verify zk proof", "set a value in the DB", "perform signature check" #dev what is the block size limit #dev (those are the src/runtime/import/ that brawndo mentioned) #dev and frequency of blocks mined #dev upgrayedd: is that true? #dev haumea: iirc correctly yes #dev is gas pricing changing depending on blockchain size? how does that work? #random / #random ./nick 0xhiro #dev I might be mistaken tho don't quote me on that XD #dev We've yet to decide #dev aiya: there is no block size limit in terms of bytes #dev haumea: As a metric you have the gas units used per tx/call #dev we have an artificial 50 txs(excluding coinbase) limit right now #dev but we will probably change it to gas later #dev gas pricing depends on transactions in last block and mempool, need to review haumea: Then you select a factor/divisor over the gas units to get some DRK value #random try again with just /nick [nick] #dev aiya: yeah thats an inflationary token #dev since you also burn % of the gas #random <0xhiro> thsnkd #random <0xhiro> thanks #dev we_don't_do_that_here.jpg #dev (yet) #dev brawndo: yeah upgrayedd said eth makes gas price go up as blockchain gets bigger lol #dev okay, will the fees be flat in darkfi then? and depend on number of inputs and outputs? #dev that seems like a bad design #dev aiya: it depends on what the tx is executing #dev different functionalities in its calls have different gas #dev got it #dev haumea: again don't take what I say for granted #dev that might be me missreading something like 3-4 years ago #dev i won't nw #dev aiya: Forget inputs and outputs, it's just functions in wasm as haumea said #dev aiya: So it's the general computation you're doing #dev ^^ #dev I wrote this zip to combat zcash dust attack, but it was not enforced at protocol level so the spam continued for a year https://zips.z.cash/zip-0317 #dev Title: ZIP 317: Proportional Transfer Fee Mechanism #dev nice i know madars #dev haumea: btw I said deploying gets more expensive, as deploying a new contract, not general gas #dev ah ok, that's a bit better #dev but that might also have to be with general eth value #dev zec doesnt have functions tho, so its different for drk, but still need to consider spam attack angle #dev spammer still pays fees, as they are not flat #dev so whats the issue? #dev the main issue i see with cost estimates for fees is what the ideal computer looks like, and how expensive ops are #dev and whether you are aiming for best case pricing or to prevent worst case performance #dev yeah, if the incoming transactions can affect the network in any way #dev can someone explain me the spam definition in that context? #dev i guess there's no theoretical answer, just have to look how the network responds and modifying pricing accordingly #dev because all I see is someone using the network #dev what defines it as spam? #dev upgrayedd: It's locking up bandwidth for legit txs #dev spam as in easy to slow down the network for honest actors, with low $ spend #dev who defines their tx as not legit? #dev we do #dev we are borderline talking censorship here #dev so fuck that if thats what you imply #dev Yeah spam attacks are used for censorship #dev That's why tx fees exist in the first place #dev upgrayedd: thats the rules for tx fees we define :) #dev i mean we make a choice by allowing some ops to be cheaper than others #dev that's a kind of value judgement about which actions we prefer, or which types of computers we're targetting #dev anyway I might not see something right now, lets not divert #dev ok #dev idk calling it outright censorship seems like misrepresenting the argument #dev price to use something is not censorship #dev if the mempool becomes full and regular tx take more time to confirm, it gets problematic #dev anyway fee pricing: lets put something, make it easy to benchmark, run tests, see what works and modify accordingly #dev saying something is spam for no aparent reason other than its existance is censorship #dev thats what I'm saying #dev doesn't have to be perfect #dev but anyway we can discuss later #dev just need to make sure the fee framework is fair to proportion of computing resource used #dev we can modify it accordingly #dev (same with coin selection .etc - make it work then improve it) #dev ++ #dev ++ #dev draoi: how is the network stuff btw? #dev seems pretty stable #dev ok we still need to test it in adversarial conditions #dev yes #dev since most of our node conns are always on #dev : test #dev : test back #dev test back #dev draoi: have you checked the lilith log? #dev !next #dev Elapsed time: 16.4 min #dev Current topic: next tasks (by brawndo) #dev there is a bunch of send_version() errors #dev we need to do network hardening soon, assuming current network tasks are done #dev Does anyone have any tasks they need my help on? (Same for others) #dev We will be busy with crypto audit this week likely #random test #random test back #dev dasman: what are you working on? #dev dasman: what errors do you mean? #dev i notice this: App version: 0.4.2, Recv version: 0.4.1 #dev so there are ppl running different versions #dev mostly dag sync but i'll soon push to a new branch and talk to upgrayedd #dev what's up with the dag sync? #dev i also deployed tau couple of days ago and now i'm seeing events validation errors #dev so working on that #dev ok #dev speeding it up #dev :) #dev can we get a tui tool to view the event graph like dnetview? #dev so when events are dropped or missing, we can easily examine nodes #dev see #25 in https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: Contribute - The DarkFi Book #dev sure, i can work on that #dev draoi: i notice this: App version: 0.4.2, Recv version: 0.4.1 #dev yes that #dev brawndo: looks like most of the tasks on that page are down #dev we did it in a month, pretty good #dev outstanding tasks: #dev - fix drk #dev - p2p hardening #dev - src/runtime safety review #dev that's the main things left. I'm missing something? #dev - finish darkfid rewrite #dev ok darkfid/drk #dev (miner listening for blocks from the network and a new sync mechanism) #dev how are the blockchain works? #dev wdym? #dev is the merge mining with xmr working, and the blockchain/consensus stuff #dev draoi: but i see some of version errors are from my own ip, even tho both peer and myself are on 0.4.2 #dev blockchain/consesus is pretty much done #dev re darkfid: right now it works as a single miner pushing blocks and other nodes listen to it #dev lilith is still on 0.4.1 on master #dev so maybe that's why #dev darkfid doesn't mine blocks, it sends requests to minerd(script/research/minerd) #dev (bin/lilith/src/Cargo.toml) #dev that is going to be the main mining node, so thats where merge mining will happen #dev hah maybe #dev since darkfid is agnostic of how the block was produced, it just sens a request to minerd and then gets a nonce back #dev nice #dev so its almost there(TM) #dev :D #dev oh and for sync we will do a backwards syncing logic #dev we as connected peers for their canonical tip #dev is the darkfid network protocol done or will it change? #dev pick the most common, and then ask for the headers backward till our last known #dev i want to review it #dev after headers sequence diverges, we grab the blocks #dev then apply DoS hardening #dev oh brilliant i love backwards sync logic #dev that's the best #dev :) #dev it will change due to that sync logic #dev right now we do forward syncing which is wrong #dev yes it is the most usable for wallets #dev yy you can also have checkpoints, so you don't even ask for tips #dev you expect them to have said checkpoint #dev its like what we have in eventgraph now #dev ok when the network protocol is 90% then lmk #dev but its always a single parent #dev then we can add a resource manager to p2p code #dev yy will ping #dev it will need testing so #dev ok and when is the ETA for needing to fix up the drk tool? #dev needing? #dev well it's broken now due to various changes throughout the code #dev I reckon before text testnet release #dev next-testnet.com? #dev ++ #dev waiting on darkfid stability so i can update the drk cli tool #dev but also want to go through all the commands since many of them are quite adhoc rn #dev me_too_kid.jpg #dev and improve them #dev well you don't care about darkfid behind the scenes #dev you can run a node and test drk stuff directly against that #dev will it work now if i do that? you mean i can start working on this? #dev like will the txs pass? #dev yes #dev oh kewl #dev I told you we have block production #dev its just a single node that's doing it #dev XD #dev ok thats great i'll set them up #dev I can help you to set it up #dev or create a script or something #dev like local-dev-node.sh #dev nice, we have the audit so will be around for that, but then after will switch to this task #dev yy no worries, more time to work on darkfid behind the scenes stuff #dev btw brawndo: should we move minerd to bin? #dev or keep using it from research since its still wip/experimental #dev ? #dev sounds like it belongs to bin/ #dev yeah anyway continue/end? #dev end, brawndo fell asleep #dev !end #dev Elapsed time: 19.6 min #dev Meeting ended #dev gg everyone #dev tnx bros #dev gg #dev thanks everyone #dev o/ #dev ACTION waves #dev 🔫 #dev #dev bye #dev test #dev test back #dev sry got cut off #dev 16:49 end, brawndo fell asleep #dev 16:33 so there are ppl running different versions #dev lol was joking #dev nw #dev Missed between these two msgs #dev check the logs agorism.dev/log #dev asked if we should move minerd to bin, or keep it in research since its wip/experimental #dev ty #dev is the merge mining with xmr working, and the blockchain/consensus stuff #dev No merge mining yet #dev ok thx #dev : @dasman pushed 1 commit to eventgraph-dev: e8d349cbab: eventgraph: divide missing events between connected peers and request concurrently #random test #random test back #dev upgrayedd: check this ^ out please if you have time, it doesn't really speed things up, maybe a little bit with 200k :) #dev : @dasman pushed 2 commits to master: e8ce57e81c: bin/tau: add default hostlist path #dev : @dasman pushed 2 commits to master: ea50f9ac5e: bin/tau: remove commented code #dev : gm #dev gm #dev what does merge mining with xmr mean? Are you going to use monero as a mining token? #dev bbl #dev gm #random https://lainchan.org/%CE%BB/res/38069.html#38325 #random Title: /λ/ - Programming Employment #random lmao #dev deki: like ltc and doge merge mining, when two coins have the same mining algo, the mining can leverage finding a block in both chains and increase rewards for the miner #dev for darkfi, it means the existing monero miners can join mining drk with some config changes and contribute to decentrlize mining #dev these mining pools will receive the rewards for finding the next block and reward their pool operators with profits from both xmr and drk, some pool operators can decide to payout only xmr to their miners or provide an option to the user to decide which coin/rewards they prefer for the merge mining work #dev will we be able to mine drk from the Monero GUI Wallet? #dev pancake: can you mine normal monero using that wallet? #dev There is a mining mode #dev under advanced tab #dev pancake: can you mine anything else other than monero there? #dev no, only option is solo or P2Pool #dev and CPU Threads #dev aha so since they don't have anything else, I doubt they will add DRK #dev also thats a question to make to their devs team, not here... #dev was within the realm of possibility : ) #dev gm #dev pancake: It could work if you'd use P2Pool #dev pancake: https://github.com/darkrenaissance/darkfi/issues/244 #dev Title: Merge mining with Monero · Issue #244 · darkrenaissance/darkfi · GitHub #dev SChernykh is working on a unified API for merge mining #random lol #random Nice #dev cool #random haumea: There' #random There's also rlnv2: https://github.com/darkrenaissance/darkfi/blob/master/script/research/rln/rlnv2/src/main.rs #random https://rfc.vac.dev/spec/58/ #random Title: 58/RLN-V2 | Vac RFC #dev Does the Monero GUI allow you to merge mine using p2pool? #dev I don't see any options indicating that #dev ah nvm #dev Yes #dev it does #dev wait #dev haha nio #dev dislexia #dev it said manage miner #dev im excited for the unified API #dev Maybe worth researching if they plan to support it #dev Or if it already is supported, just hidden :D #dev what is the best method for contacting xmr devs? #dev https://github.com/SChernykh/p2pool/blob/merge-mining/docs/MERGE_MINING.MD #dev #monero-dev on libera IRC I suppose #dev https://libera.chat/ #dev Title: Libera Chat | A next-generation IRC network for FOSS projects collaboration! #random aha kk #random oh great, was going to make this change but glad to see it's already done #random like christmas everyday recently #random :D #random all the rust "rewrite" ppl should make an improved man command with table of contents and easily see switches with short desc .etc #dev https://git.sr.ht/~ireas/rusty-man #dev Title: ~ireas/rusty-man - Command-line viewer for rustdoc documentation - sourcehut git #random >what is GNU info #random doesn't work with most tools #random i take that back #dev : @skoupidi pushed 4 commits to master: 6de4869bec: darkfid: removed obselete protocol_block #dev : @skoupidi pushed 4 commits to master: 38a83c8b40: darkfid: renamed consensus_p2p to miners_p2p #dev : @skoupidi pushed 4 commits to master: 34b750dc5e: minerd: moved from script/research into bin #dev : @skoupidi pushed 4 commits to master: f1f05b726d: darkfid: created task to listen for appended proposals and perform finalization check for non mining nodes #random info mpv #random #random > No menu in this node #random how do i see the switches, or a contents menu for the mpv manpage? #random https://unix.stackexchange.com/questions/159239/find-contents-of-a-man-page #random Title: Find contents of a man page - Unix & Linux Stack Exchange #dev https://gupax.io/ is a simple monero GUI for p2pool mining as well, if looking for other options brawndo #dev Title: Gupax #dev biab #dev : @skoupidi pushed 1 commit to master: 847e4749eb: darkfid/task/miner: properly listen for network proposals #random https://www.youtube.com/watch?v=IG0CHGGb1-I #random Title: Loneliness makes you a visionary - YouTube #dev Merge mining is coming to Monero p2pool, and GUI wallet has p2pool integrated, so probably will be able to mine DRK thru monero GUI, though it is not possible now #dev nice ty waffles #dev : gm #dev gm #dev hi #dev afk #dev : @skoupidi pushed 2 commits to master: 44103f0359: darkfid: use base64 encoding | drk: minor fixes #dev : @skoupidi pushed 2 commits to master: f345f7a338: contrib/localnet/darkfid-singe-node: updated to work with latest darkfid #random test #random test back #dev : @skoupidi pushed 1 commit to master: af5542da7b: drk: parse coinbase transaction #dev : @skoupidi pushed 1 commit to master: 67692cf354: drk: minor scan fix #dev : @skoupidi pushed 1 commit to master: d4af12f264: drk: another minor scan fix #dev what are the plans for light clients to connect to nodes and sync with the chain? #dev is light client support possible on the upcoming testnet? #dev aiya: can you define what a light client is? #dev (compared to a normal darkfid node) #dev one that does not store the blockchain data and only cares about own transactions, like a mobile wallet #dev then drk is a light client already #dev it doesn't store blocks, it asks them from a darkfid daemon instance and parse them to update the state #dev okay, and how does drk connect to a remote darkfid daemon #dev jsonrpc #dev zcash has lightwalletd that uses grpc for performance https://github.com/zcash/lightwalletd #dev Title: GitHub - zcash/lightwalletd: Lightwalletd is a backend service that provides a bandwidth-efficient interface to the Zcash blockchain #dev thanks, is there a doc spec for the jsonrpc interface? #dev https://darkrenaissance.github.io/darkfi/clients/darkfid_jsonrpc.html #dev Title: darkfid JSON-RPC API - The DarkFi Book #dev neat #dev next challenge is to get drk to work on android #dev https://eprint.iacr.org/2024/188 #dev Title: HomeRun: High-efficiency Oblivious Message Retrieval, Unrestricted #dev OMR backend setup needs high resources when scaling, see benchmarks https://github.com/ZeyuThomasLiu/ObliviousMessageRetrieval #dev Title: GitHub - ZeyuThomasLiu/ObliviousMessageRetrieval #dev incentivizing OMR server operators is another challenge, unless there is a way to pay per use #dev HomeRun is a lot more efficient than those old ones #dev Doesn't use FHE or TEE #dev hmm #dev : @skoupidi pushed 1 commit to master: d54e44b573: contrib/localnet/darkfid*: updated to work with latest darkfid #dev b #dev b #dev : @dasman pushed 1 commit to master: 95e7a53094: event_graph: fix events validation with days_rotation set to zero #dev okay now tau is good to go #dev seeds = ["tcp+tls://dasman.xyz:23331"] #dev there are 6 dummy tasks if someone give it a shot and synced, just so you know :) #dev : @parazyd pushed 1 commit to crypto-fixes: 7280b434fc: sdk/mimc_vdf: Generate round constants as BigUint instead of u64 #random test #random test back #dev : @parazyd pushed 1 commit to crypto-fixes: d63bce3a7a: sdk/ecvrf: Enforce that the public key is not the identity point #dev I have ircd and tau set up on a vps. The darkfi folder is abt 10gb which takes a lot of space. Is there some advice for less resources/space to be needed. can some things be removed? #dev anon: You mean the git repo? #dev anon: It is possible to build static binaries on another machine and then just upload them to your vps: https://darkrenaissance.github.io/darkfi/dev/dev.html#static-binary-builds #dev Title: Development - The DarkFi Book #dev hey #dev Then you won't need that 10GB of build artifacts #dev Hi haumea #dev my vps crashes trying to build #dev i have to upload bins #dev Yeah easy to go OOM #dev If it's a 1GB RAM machine or whatever #dev I have an Alpine LXC set up like in that doc I linked #dev Then I just distribute the bins #dev If you use Gentoo it's also possible to do it natively, but a bit more involved #dev haumea: btw I'm pushing the crypto fixes to a separate branch called "crypto-fixes", so when you make any changes, please also push to that branch #dev It will be easier to review that way when we're done #dev ok #dev dasman: do i use tau-python? #dev i enabled RPC but nothing shows #dev > Error: Connection Refused to '127.0.0.1:23330', Either because the daemon is down, is currently syncing or wrong url. #dev : @parazyd pushed 1 commit to crypto-fixes: bb8bb1b828: chore: Add supply-chain to main .gitignore... #dev ty brawndo #random test #random test back #dev : @zero pushed 1 commit to crypto-fixes: f19a4abdec: schnorr: add the pubkey to challenge hash of commit #dev : @zero pushed 1 commit to crypto-fixes: 8baff2b00a: improve prev commit, by actually allowing hash_to_scalar() to take a Vec #dev You should prefer taking &[&[u8]] over Vec<&[u8]> when possible #dev Also please squash the commits relevant to a single fix, feel free to force push #dev ok #dev Thanks #random test #random test back #random test again #dev : @zero pushed 1 commit to crypto-fixes: 2d4c730a3a: schnorr: add the pubkey to challenge hash of commit #dev ok thanks, did force push #dev much better #dev Cool #dev haumea: when updating fn definitions don't forget to update the doc comments #dev On it #dev : @zero pushed 1 commit to crypto-fixes: 42fe1ea23d: sdk/schnorr: add the pubkey to challenge hash of commit #dev oh oops XD i just auto-ignore all comments #dev haumea: See I actually meant to do it like this: https://github.com/darkrenaissance/darkfi/blob/crypto-fixes/src/sdk/src/crypto/schnorr.rs#L69 #dev It's a tiny optimisation, but it'll accumulate when we do it throughout the codebase #dev Just a ref slice opposed to a vec #dev By not using a vec, you avoid allocating on the heap #dev ahh yes, you're correct #dev i should've known that XD #dev its all pointers after all #dev always_has_been.jpg #dev XD #dev ah but the transcript will have to be a vec if we use it for the nonce generation too #dev Where? #dev let mut transcript = ..., and then for each new public value, we push to the transcript #dev in the schnorr sig part (not the function hash_to_scalar()) #dev i even thought about making a struct for it with methods like "write_point(), write_base(), squeeze_challenge()" but that's overkill #dev I'm not seeing where you mean that happens #dev SchnorrSecret::sign(), right now we just use the transcript for challenge, but david was saying we should also use it for mask too (altho that's my interpretation of what he said) #dev Yeah he's saying something about deterministic nonces, but I'm waiting for a reply #dev so in that case transcript would be a mutable vec = [pubkey, msg], then nonce = hash_to_scalar(transcript), then we make commit, transcript.push(commit), then challenge = hash_to_scalar(transcript) #dev like that #dev so nonce = hash(pubkey, msg), and challenge = hash(pubkey, msg, commit) #dev which is the fiat shamir transform, but a random nonce is also fine tbh #dev Let's see what he says #dev actually that's wrong, nonce = hash(pubkey, msg, secret) #dev You'd end up reusing the nonce when you sign the same msg twice #dev I'm not sure if that's good or bad #dev the signature is deterministic so it wouldn't matter #dev it's only bad to reuse the nonce when the signature changes, because then you can calculate it from the public values, but since the nonce is derived from public values + secret key, it changes for different messages #dev ok #dev the auth enc (elgamal) needs a MAC using poseidon, then we can encrypt that #dev ++ #dev is poseidon vulnerable to length extension attacks? #dev i guess not since we input the messages *then* compute the permutation, right? #dev Depends on the context #dev i give you: hash(x), you give me: hash(x || y) for some y #dev x is random #dev Yeah that can theoretically happen #dev ok good to know #dev But that's true for any hash function #dev The message must be fixed length #dev i mean for poseidon_hash, where x is a single pallas::Base #dev guess i should've written poseidon_hash(x) and poseidon_hash(x, y) #dev Yeah those two hashes can be the same in theory #dev i don't mean the same #dev What then? #dev i give you poseidon_hash(x) where x is a random pallas::Base, and you can modify the hash (without knowledge of x), to create poseidon_hash(x, y) #dev this is possible with SHA and other hash functions, but idk if it is with poseidon_hash() #dev https://en.wikipedia.org/wiki/Length_extension_attack #dev Title: Length extension attack - Wikipedia #dev oh I see #dev Give me a sec to read the wiki #dev i think maybe it isn't due to how the permutation works, but that's just a guess, not informed opinion #dev blake2 is immune fyi (according to google) #dev It says you can do HMAC instead of MAC #dev it might not be needed though because i think poseidon is immune to length extension attacks #dev sec I had a hackmd somewhere with filecoin talking about posieon #dev nice, we also don't really need the MAC in ElGamalEncryptedNote, because the note is verifiable in ZK, and anything we're encrypted corresponds to something in ZK like a coin #dev but it would be nice to add for additional security to ensure encrypted values cannot be modified (eventhough the ZK is preventing this) #dev https://github.com/darkrenaissance/darkfi/blob/master/script/research/poseidon/poseidon.sage#L67-L71 #dev altho tbh, why would you encrypt values if they aren't enforced in ZK? then they could correspond to anything and it would be meaningless so it's nbd #dev ok so #dev With constant-input-length hashing it's padded with zeroes to a multiple of RATE #dev Then the constant length is encoded into the capacity element #dev Which means inputs of different lengths don't share the same permutation #dev This sage is equivalent to the zcash impl #dev nice ic, that's good #dev so the permutation poseidon_hash(x) is completely different than from poseidon_hash(x, y) #dev Yeah #dev which means you cannot just apply on top of x to get (x, y) #dev But that works only because of encoding the length into the capacity elem #dev https://github.com/darkrenaissance/darkfi/blob/master/script/research/poseidon/poseidon.sage#L78-L80 #dev L = len(messages) #dev excellent thats cool af ty #dev np #dev noice #dev i forgot about this code, gj #dev It's very simple once you read it a few times :D #dev ah here's the hackmd: https://hackmd.io/@7dpNYqjKQGeYC7wMlPxHtQ/BJjaxXd9U #dev Title: Poseidon in Filecoin - HackMD #dev Dunno if relevant #dev I think it's for their specific Poseidon implementation #dev nice, one day we can go through the one we use and customize this hackmd for our book (crypto section) #dev i added sth to the spec, but just kinda hand wavy https://darkrenaissance.github.io/darkfi/spec/crypto-schemes.html#poseidonhash-function #dev Title: Cryptographic Schemes - The DarkFi Book #dev I trust that the Zcash implementation is good #dev im sure it is #dev They're probably the most pendantic devs in the space :D #dev : gm #dev haumea: you probably have rpc_listen set to a value different than the default, either change it back to 127.0.0.1:23330 or use -e with tau #dev tau -e 127.0.0.1:1234 #dev tau being an alias for tau-python #dev $ ./main.py #dev Error: Connection Refused to '127.0.0.1:23330', Either because the daemon is down, is currently syncing or wrong url. #dev rpc_listen="tcp://127.0.0.1:23330" #dev that's inside ~/.config/darkfi/taud_config.toml #dev so what am I doing wrong? #dev taud running? #dev yes pgrep taud works #dev odd #dev ah it works, one sec #dev you sure you use the same config? #dev ah ok cool #dev :D #dev weird i tried compiling again, but i swear i did that this morning #dev ok i commented task 2 #dev noice #dev commented on it too #dev i see it, nice ;) #dev one concern tho, tau tree only grows, maybe we should prune only stopped tasks that are older than couple months? #dev I'm getting "collect2: fatal error: ld terminated with signal 9 [Killed]" when trying to compile taud. anyone have any idea why it is happening and could direct me to what needs to be done? #dev 1) WHAT #dev what's your setup? #dev You probably don't have enough RAM on the machine you're building on #dev vps, 1 core , 20 GB disk #dev brawndo: I think you are right #dev it's such a small one after all #dev I'd advise compiling elsewhere #dev Try this perhaps: https://darkrenaissance.github.io/darkfi/dev/dev.html#static-binary-builds #dev Title: Development - The DarkFi Book #dev brawndo: ty will try this #dev reka: we also have the corresponding docker file if you prefer that https://codeberg.org/darkrenaissance/darkfi/src/branch/master/contrib/docker/static.Dockerfile #dev Title: darkfi/contrib/docker/static.Dockerfile at master - darkrenaissance/darkfi - Codeberg.org #dev upgrayedd: will take a look at all this and see what might be the best solution. Thank you very much for all proposals and resources #dev you can run this locally on your machine, you don't need to run it on a server anymore #dev : gm #dev : Greets #dev : @zero pushed 1 commit to master: 8a17b7175e: fix darkirc android build using dockerfile #dev aiya: try this now ^ #dev Did you even read the makefile? #dev There's native Android instructions #dev (I just hate Docker really) #dev :D #dev + Introducing an redudant dependency in Cargo.lock #dev (which breaks book gen flow since its not commited) #dev yes i did but there's no android NDK or SDK package on my linux distro #dev and it seems the Makefile wants me to install android studio which is equally (or moreso) worse, then install NDK/SDK through the gui #dev at least with docker it's segregated and i can purge everything once done #dev also idk how it works for you, but i need to install sqlcipher and do loads of manual config to get builds to work (see the dockerfile) #dev i think it's ok for cross compiling, just not for native builds #dev upgrayedd: about the dependency, that's not redundant but needed for android builds since otherwise openssl cannot build which is required by some dependency #dev [target.aarch64-linux-android.dependencies] #dev openssl = { version = "*", features = ["vendored"] } #dev haumea: thein either sed it in the make target and then restore it after build #dev it's saying to use the vendored openssl rather than the default #dev or commit the Cargo.toml #dev the Cargo.toml is committed, but i didn't commit the Cargo.lock #dev Its redundant in the sense that its a arch target specific config #dev therefore special handling is needed #dev s,Cargo.toml,Cargo.lock #dev however you prefer, but what's wrong with just using [target.aarch64-linux-android.dependencies]? #dev its not wrong, the commit is incomplete since Cargo.lock was changed #dev ok adding that then #dev I'm just saying that there is a better way to handle target specific stuff #dev so Cargo.lock doesn't need to accomodate them #dev : @zero pushed 1 commit to master: 75ad829ff8: Cargo.lock: openssl #dev how? i mean i'm open whatever is the best way to have android builds #dev hell you can even add the sed in the builder itself #dev but since you mount the repo folder to build from you can't do that #dev so you can sed in the make target #dev as to not polute the main Cargo.lock for a target arch specific definition #dev dasman: I tried to add a test task to tau. Is it visible for you? #dev haumea: why you need a different make target than the one already there? #dev _aarch64-android when you already have $(BIN).android64 #dev they are different commands being run #dev i couldnt get the other one working #dev my android skills are too weak #dev haumea: finally works! i haz a darkirc.aarch64-android build #dev aiya: <3 #dev nice #dev upgrayedd: the Cargo.lock thing is nbd, check the commit diff, and it doesn't get added to non-android builds #dev it just says "for android builds, when openssl is used, use the vendored version". it doesn't touch any other code #dev I don't think so #dev darkirc package definition contains openssl #dev i could add echo "...." >> Cargo.toml though if it's necessary, but then i have to cp Cargo.toml Cargo.toml.bak, run build, then cp Cargo.toml.bak Cargo.toml again #dev so it should be pulled as part of the build tree #dev hence my redundancy comment #dev [target.aarch64-linux-android.dependencies] #dev openssl = { version = "*", features = ["vendored"] } #dev this is the lines added #dev yy I saw #dev iirc cargo pulls everything defined as a package dep, and then use the target specicif ones when building #dev so you always have openssl in your dependencys tries, regardless of native/cross compiling #dev s,tries,tree #dev I know I'm nitpicking, but you know that random crates existing in dependencies tree might give shitty future headaches #dev https://github.com/darkrenaissance/darkfi/blob/master/Cargo.lock#L2120-L2149 #dev see the package definition? it contains openssl, while it shouldn't #dev yep so what should we do? #dev btw we can also remove docker too, but just we need to test on unstable conns, so android build is good #dev haumea: if you only care about 1 time builds(no active development) you can make the docker like we have the one for riscv #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/contrib/docker/riscv.Dockerfile #dev Title: darkfi/contrib/docker/riscv.Dockerfile at master - darkrenaissance/darkfi - Codeberg.org #dev this copies the repo folder into the docker, applies all hacks, build the binary and then transfer it back to host #dev so we have 0 impact on repo configs/etc for that target specific build that needs hacking #dev ok will do this later, about to head out #dev good to know #dev glhf #dev ty #dev reka: i don't see your task, are you on darkfi-dev workspace? #dev reka: btw you can delete the old ~/.config/darkfi/taud_config.toml and use this instead https://agorism.dev/uploads/taud_config.toml #dev it's just the default config for taud, but seeds are changed #dev ++ ^ #dev ACTION is afk #dev o/ #dev dasman: I am and changed to se seeds you shared. Will change config and see how it works, ty. #dev dasman: sry for the poor writing lol will ping you when this is done. #dev : yo #dev : test back #dev : test #dev : test back #dev test back #dev reka: np :) #dev dasman: tried to add a task again. I'm using taud deamon with tau-cli. Correct? please tell me if it worked. #dev oh no, use tau-python #dev ++ #dev oops sry I am using tau-python #dev don't see your task #dev you're using default config, just the seed is changed #dev right? #dev also could you share taud log? #dev the seed that was shared in the chat is the same as in the agorism.dev/....I didnt have to change anything #dev one sec #dev dasman: https://pastenym.ch/#/DrW9qvg_&key=93cfad5ab6a4017ccf743a07691fb78c #dev Title: Pastenym #dev yeah it's the one #dev nothing weird happened #dev can you do: ./taud --refresh #dev and try again #dev ++ #dev wait, could you share the log from the very beginning? #dev yy one thing at time lol, no rush #dev just refreshed and restarted and tried to make a new task #dev can I see the full log? #dev https://pastenym.ch/#/qQe2JjRo&key=74ad7ea4c23585d4d49a3cfeb1fa210f #dev Title: Pastenym #dev ugh it's taking forever to load #dev <5> hello all, what's the size of the current testnet blockchain? #dev 5: 2.5 GB #random : test #random test back #random : test back #random : node reconnected well (quarantine working) #random : test #random test back #random : test #random test back #random : test back #random : test back #dev : Toist #dev : Nice having seemless connection #dev : Test #dev : Test back #dev Test back #random : Test #random Test back #random : Test #random : Test #random Test back #dev : Test #random : Test back #random : Test back #random Test back #dev Test back #random : test #random test back #random : hmm had a connection issue there #random : test back #dev b #dev is running ``` ./drk scan ``` not possible without a wallet ? #dev sorry, asking one more question: what's the hard disk requirement for syncing the testnode blockchain data ? #dev hi vdz4 #dev u need to be running darkfid for `drk scan` to work #dev however, rn we are v close to releasing a new testnet #dev we do not recommend trying to run the old testnet rn #dev : gm #dev : what's the event graph time limit again? not getting the msgs i sent yday from phone relayed altho i would expect to #dev : also i get this: #dev : #dev Mode #dev [+] #dev : multiple times #dev : btw rn it seems darkirc is the only /bin on version 0.4.2, should we downgrade to 0.4.1 and then upgrade everything to 0.4.2 when it's all ready? #dev : to avoid version mismatches #dev gm #dev dasman: tried again, rm config and new was generated. changed seed. if you see the task please tell me. If not I can share logs again and hopefully it's faster to load this time :) #dev Hello draoi. Thank you .. #dev hey gm #dev dasman: added 2 tasks #dev you see them? #dev gm #dev haumea: yes I see them #dev reka: yes please I couldn't load the logs from yesterday, not even now #dev : draoi: re:events time limit, it's 24hrs, at 00:00:00UTC #dev : hmmm yeah i didn't get replay from the various test messages wuz sending yday #dev : it's not 24hr window btw #dev : hard reset on midnight urc #dev : utc* #dev : ah ok that's why #dev : ++ #dev : i did some dis/reconnect testing, switching internet on, off etc and seeing does it reconnect. sometimes it reconnected, othertimes seed node rejected our connection (with the same Connection Refused error as before) #dev : yeah same #dev : sometimes it would instantly reconnect but then another time it wouldnt reconnect until i restarted the node #dev : i can try to reproduce that seed node issue locally, need a bit tho as working on some other stuff rn #dev : same for me, is it related to the seed being greylisted or anchorlisted #dev : no it should not relate to the hostlists #dev : ah ok cool #dev : hostlists are independent of whether connections can be made etc #dev : ok i think i know what it is actually #dev : actually nm, need to think about it more #dev : so we have this quarantine logic where if an outbound node disconnects we try to reconnect to it N times, and after N times we add it to a list called rejected() #dev : and if it's been added to rejected then we will not accept connections from this node #dev : however, this shouldn't apply to seed nodes since they are just inbound sessions and aren't doing outbound quarantine stuff #dev : lmk if you need seed log for debugging #dev : i can't work on this rn as doing other stuff #random test #random test back #random test #random test back #dev : dasman stopped task (BINgPG): test task 5 #dev : noice #dev : dasman stopped task (BxkH6u): tau <-> irc bridge #dev : dasman stopped task (mKKwJr): test task 1 #dev : dasman stopped task (1HworA): test task 2 #dev : dasman stopped task (J71N1e): test task 3 #dev : dasman stopped task (YJ9k1s): test task 4 #dev : dasman stopped task (fesFBi): another test task #dev : dasman added task (OVjOqH): seed reconnection #dev dasman: https://pastenym.ch/#/cYh10isW&key=e59567d17b87ed8c4593dcf82e9fe88a #dev Title: Pastenym #dev reka: everything looks normal, except this: #dev 15:25:15 [WARN] [EVENTGRAPH] Peer tcp+tls://dasman.xyz:23332 sent us a malicious event #dev but you synced successfully after that #dev can you show me the command you're using to add a new task #dev dasman: I do this --> python3 main.py add nameoftask @nameofresp +whatevertag #dev you should get an editor open after that command to write a description #dev if everything is well you should see "added task 'title'" #dev or you can use desc:description with your command #dev hello, I am working towards my first changes to the repo and have fixed some warnings wrt unnecessary casts and path prefixes, matching the order of "impl" members with the trait and other changes like replacing deprecated methods like 'max_value' to MAX #dev where can I make a pull request for review? #dev aiya: codeberg preferably, but you can use github as well #dev dasman: I do get 'added task...' and it is visible for me in the task list. Just seems like the syncing isnt working out. #dev upgrayedd: ty #dev my android client keeps failing to connect with the default nodes, what other nodes can I add to connect with? #dev dasman: ^^ #dev also, is the issue related to nodes going offline for long and getting rejected as a result? can lilith distinguish between trustworthy nodes and light clients that join occasionally? #dev lilith should clean up the lightclients, and even if it sends them to a new peer they would add them to graylist and reject them after failing to connect, so I don't think there is a problem there #dev how does a lightclient fail to reconnect? my client hasn't been able to connect even once #dev wdym lightclient? #dev my darkirc on android :/ #dev thats not a lightclient #dev also default seed is incompatible with current master #dev a custom seed is used for testing #dev when android force closes connections for apps, like battery management and stuff, my node will go offline adn hen reconnect when i check next #dev what build it is? latest master darkirc? #dev yes #dev default seed in the config is incompatible with it #dev that seed is for older versions #dev you have to use the testing seed and/or add a peer directly #dev reka: since you're able to sync and see your own task, it should be in the dag, but neither haumea nor I see yours, so maybe you're on a different workspace (possibly you removed the wrong config file) #dev aiya: seeds = ["tcp+tls://dasman.xyz:5262"] #dev ^ darkirc seed #dev ty. ill add dasman, also will work on running own permanent seed node, how often does the lilith code change? how often will it need to be deployed #dev I'd say rarely :) #dev upgrayedd: ^ #dev whenever a p2p change has been pushed #dev like the one currently tested #dev also we need more people using tau #dev seeds = ["tcp+tls://dasman.xyz:23331"] #dev dasman 5262 failed for me, trying 23331 now #dev wait #dev 5262 is for darkirc #dev 23331 is for tau #dev oh, what is tau #dev encrypted task management p2p app #dev how did 5262 failed tho? #dev gotcha, found it on the darkfi book #dev says connection refused #dev can you try now? #dev dasman: I'll check again #dev dasman: could you share the agorism link again please? #dev now it failed saying cant finf any DAG tips #dev reka: https://agorism.dev/uploads/taud_config.toml #dev aiya you have to remove existing db #dev aiya: do you connect to some peers? #dev like dasman.xyz:26661? #dev : test #dev test back #dev : test back #dev dasman: ty :) #dev np #dev conn failed again, bbl, ty dasman #dev dasman: checked cofig. tried to add task again. can u see it? #dev aiya: np, lmk if it fails again, I can connect fine #dev reka: tau bot is running, there's no notification #dev so your task is not passed #dev ty dasman: will try to figure out what's wrong here #dev dasman: do I need to run .taud --piped? #dev reka: that's for taubot, no need for normal usage #dev bbl #dev dasman: ++ #dev b #dev : dasman commented on task (yWx0dR): event graph tool #random test #random test back #random test #random test back #dev greets, my internet was d/c #dev : hihi #dev gm #dev gm #random https://mw.rat.bz/davgmsrl/ #random Title: -=:[ Demoscene & Video Game Music Streaming Radio Links ]:=- #dev : @zero pushed 1 commit to master: 7fc5889ba2: book: add section on dev #dev : @zero pushed 1 commit to master: bcb1c5a439: book: add section on dev #dev pls no force push to master #dev oh sorry i tried to sneak that in #dev won't do it again #dev :D #dev ;) #dev It's a bit scary #dev One of the ways to introduce malicious code #dev yeah i agree, i thought maybe everyone is asleep #dev e.g. putting something bad in an old commit #dev aha ok #dev (That's why I initially had force-push to master forbidden, but we had to enable it bcos mirroring) #dev it should cause a conflict when you git pull #dev then you'd see the old commits changed #dev Assuming you have the repo locally #dev Someone cloning anew would get rekt #dev yeah, i wonder if this is still possible with tags #dev Yes #dev Tag just references a single commit #dev Ah I see what you mean #dev You can publish the commit hash somewhere #dev And make sure the tag is that commit #dev i'm asking in #git #dev git tags don't guarantee this #dev telegram is not proprietary btw #dev wut #dev Yes it is #dev https://telegram.org/faq#q-can-i-get-telegram-39s-server-side-code #dev Title: Telegram FAQ #dev ok we're safe, because commits contain the previous commit hash #dev when you cherry pick, it changes the hash #dev haumea: That's all under assumption you have a trusted repo #dev When you don't, you'd clone anything #dev git cat-file -p 75ad829ff85f5753feff #dev that's the entire commit data #dev brawndo: yeah you are right, I though they had the server code along with the clients, noice good to know #dev so when you publish a "safe" commit (say one that's been audited), you cannot rewrite the previous history #dev 11:45 You can publish the commit hash somewhere #dev correct #dev : ACTION waves #dev : yo #dev : @zero pushed 1 commit to master: 9f1649ef02: book: changes to hiring based on commentz #dev adi: https://github.com/narodnik/fagman #dev Title: GitHub - narodnik/fagman: Facebook-Apple-Google-Microsoft-Amazon-Netflix super app #random test #random test back #dev ty #dev new lib versions are available for smol, monero, arti-client, tor-rtcompat, tor-hscrypto, libsqlite3-sys, wasmparser #dev how often are new releases reviewed and adopted? #dev I was looking to update the ahash dependency to v0.8.8 as that fixes the stdsimd missing issue on mac, but the library relying on it(cranelift-egraph) is stuck with ond version #dev *old #dev made a PR https://github.com/darkrenaissance/darkfi/pull/251 #dev Title: Fix warnings and refactor code by nighthawk24 · Pull Request #251 · darkrenaissance/darkfi · GitHub #dev aiya reach me once you're in the design channel #random test #random test back #random test #random test back #dev upgrayedd: I cleared the dm under ./local/darki and my android darkirc still fails with connection refused when trying to connect to dasman 5263 and 26661 ports #dev not sure why 'connection refused' errors are happening, i'm trying to reproduce locally #dev but if you stop and restart the node it should connect #dev aiya: do you prefer PR comments here or in gh? #dev : I'm in darkirc! #random : Test #random Test back #random : Test back #random : test #random : test back #random test back #random : hi #dev : hola #dev aiya: it's 5262 #dev PR comments #dev 5262 and im in ty #dev coolz #dev : welcome to the dark side! #dev aiya: before proceeding, I have to say something smells really fishy about that PR so I will ask right away #dev is this some gpt/co-pilot refactor? #dev no, there are manual changes applied following my IDE warnings #dev potato potato #dev I'm intrigued to decline right away #dev but I will help you to understand why the fuck that is wrong #dev okay #dev first of all, you have to explicitly define "warnings" #dev IDE warnings are usually shit and/or outright wrong #dev When we/you refer to warnings, we usually mean native compiler stuff, not some random 3rd party lib that you personally use #dev did you read the PR description? #dev second and more importand, you didn't seem to follow normal dev procedures, meaning that the code doesn't build and steps are missing #dev hmm, what steps are missing? #dev aiya: yeah I went through it, hence I'm here #dev you never specify what "warnings" mean #dev I won't shit that much, but I will just say most(if not all) of the "refactor" is pure garbage #dev which you should have never pushed since on a first glance you should have caught that its not building #dev is there a preference of how the existing code is set? wrt defining the crate and function names, casts, etc? is there a styleguide I can follow for the project? #dev make fmt is for styling #dev make clippy is to verify your code works #dev (none of them were executed, I cloned locally to check) #dev but anyway the problem is deeper #dev refactor is outright wrong in most places #dev clippy failing is odd, I will double check #dev its not odd #dev in most cases you removed explicit crate definitions #dev if clause { return something } else { return something_else } shouldn't be refactored as return if clause { something } else { something_else } #dev but it should be: if clause { return something }; something_else #dev what if both if and else are returning something? why not use return if #dev why the else if they both return something? #dev the only correct "refactor" thing I see is changing match clause => return something to return match clasue => something #dev its okay if there is a preference for the project to keep separate return statements, coming from kotlin coding im used to simplifying statements\ #dev the goal is to make code clearer, and immediate return is the fastest way to do it #dev its a common code pattern #dev okay #dev btw my favourite one: https://github.com/darkrenaissance/darkfi/pull/251/files#diff-ff256e9a4a745e481efe242cd50f33d0e1c99ecb0297b1584903f6bfa65d4f02L306-R527 #dev Title: Fix warnings and refactor code by nighthawk24 · Pull Request #251 · darkrenaissance/darkfi · GitHub #dev but why? #dev ah, that was unnecessary, I will revert that and add back the explicit crate definitions #dev make clippy is your friend #dev also: https://darkrenaissance.github.io/darkfi/dev/dev.html?highlight=fmt#cargo-fmt-pre-commit-hook #dev Title: Development - The DarkFi Book #dev the doc is a bit outdated tho, I would just use make fmt #dev okay #dev aiya: thats for now, I hope you don't see me as babayaga or something, I know I'm harsh, but tough love is the best to git gud fast #dev thanks for reviewing and sorry for the trouble, I'll follow the pre-commit hook fmt #random test #random test back #dev : greetings, all #dev : aiya: I am also on the dark side. Looks like things are pretty healthy here now. #random : test #random test back #random : test back #dev : good #dev : darkirc and lilith been running stable for a while now on my side as well <3 #dev : should I run a taud seed too? #dev : @parazyd pushed 1 commit to master: 4dd4cf5178: sdk/crypto: Add test unit for pedersen.rs #dev : gm #dev : errorist: yes i believe help is needed to test tau and run tau nodes #dev : gm #dev : draoi: ok, cool, will do #dev : exit #dev can I use this config: https://agorism.dev/uploads/taud_config.toml ? #dev and should I set version 0.4.1 or 0.4.2 in lilith for taud? seen some comments above about versions so not sure #dev thx #dev set the version in lilith to whatever taud is (i think 0.4.2) #dev you can check the taud version by reading bin/taud/Cargo.toml #dev or perhaps running ./taud --version #dev gm #dev gm #dev gm #dev nice catch by david, i think it's a general problem anywhere we use nullifiers. will fix later today #dev solution is to put all the nullifiers into a HashSet, and check the nullifier_set.len() == inputs.len() #dev HashSets are prone to errors #dev I opted for vecs which are a bit less efficient probably, but more legible and easy to write #dev it's just to check the items are all unique #dev transfer_v1.rs:156 #dev oh nice, i forgot this #dev : https://pastenym.ch/#/8n11jNab&key=8915bf2883aa90656105a5d6547c2c5f #dev : Title: Pastenym #dev Title: Pastenym #dev : getting this #dev ok i'll copy your code #dev haumea: oh also note hashsets are not deterministic #dev haumea: So it might cause edge cases in wasm #dev e.g. one node uses different gas than other #dev It's better to prefer BTree in this case #dev : 08:54:42 [ERROR] Event 6770f21c482bfe1d5661b25319958df9c80eba785a4755a0d71b026b1c76a7d0 is invalid! #dev : 08:54:42 [ERROR] Failed syncing DAG (Event is invalid), retrying in 10s... #dev : not sure what that i #dev : *is #dev : draoi: is there some local DB I should delete and retry? #dev : i think taud has a built in command for this #dev : run ./taud -h #dev : there should be something called 'refresh' or similar #dev : ./taud --refresh #dev : can't remember the exact command #dev : ok thx, will try #dev ok the vec is good too #dev Yeah #dev On the safer side :) #dev So re: nullifiers wrt. DAO #dev That means we have to snapshot the nullifier set? #dev At what time? #dev Or is it irrelevant and we just look at Money's nullifier set? #dev i think it's fine as is, just need to add this missing check #dev cloning the money nullifier set is expensive, and the only downside is: #dev - voting opens #dev - i send money to you #dev - i can no longer vote on proposal #dev - (you cannot vote either since we cloned the coins before voting opened so we're good) #dev *cloned the coins tree #dev *nod* #random test #random test back #dev oops, i have the check in DAO::vote() already, just not in DAO::propose() #dev : @zero pushed 1 commit to crypto-fixes: f93e93e3f2: DAO::propose(): check input nullifiers are not used more than once - each one should be unique. #dev Ah there we go #random : test #random : test back #random test back #dev you guys might find this interesting: https://github.com/dbus2/zbus?tab=readme-ov-file#readme #dev Title: GitHub - dbus2/zbus: Rust D-Bus crate. #dev i like the way dbus allows introspectable services, but it sadly uses XML as the interchange format iirc #dev what's wrong with using XML? #dev cool lib tho #dev have you ever used XML? #dev it's super verbose #dev https://en.wikipedia.org/wiki/XML#Criticism #dev Title: XML - Wikipedia #dev nope :) just know of it as a markup language #dev xml is hell on earth #dev lol well the jury has spoken #dev its all fun and games until you use it for communications between apis in production #dev latest version: 2006 lol #dev i worked on a project which used XML as a scripting language with tags like , .etc and the conditions as string attributes #dev *for a project (wasn't my idea) #memes https://i.4cdn.org/sci/1707915797648643.jpg #dev : @zero pushed 1 commit to master: ce517f331c: book/dev: remove section on ChangeLog #random https://x.com/jonathankingvc/status/1747318888440721731 #random DarkFi mention missing and so is Monero :D #random And they categorized Zcash under coin mixer, not privacy pools category #random https://www.benzinga.com/news/24/02/37123615/gordon-ramsay-backed-mission-driven-borealis-foods-goes-public #random Title: 200 OK #random Interesting story of how AirBnb raised much-needed cash in its early days #random : test #random : test back #random test back #random : test #random test back #random : test back #random : So that is funny. I'm seeing two replies in the telegram mirror - the testbot test back and website title test back - but neither in my own weechat session. #random : oh weird #random : i see everything #random : we need a tool to dump internal event graph state #random : right now it's impossible to see what's happening #random aiya: i see darkfi in that list there lol #markets https://www.benzinga.com/markets/cryptocurrency/24/02/37197087/rich-dad-poor-dad-author-robert-kiyosaki-predicts-bitcoin-to-reach-100k-by-june #markets Title: 200 OK #markets ruh-roh it's happenin #markets correction then pamp? #random https://www.youtube.com/watch?v=ysijCHlalSY #random Title: Bowing Ravens Circle Dance - YouTube #random : gm #random : i think dasman is working on the event graph debugger #random : nice #random https://www.youtube.com/watch?v=WAIHaxdbVmE #random Title: Listen to these Orca whales imitate human speech - YouTube #dev !list #random test #random test back #dev !topic test #random test #random test back #dev gm, had a power cut overnight #markets we either get a correction or a blow off top dotcom style run until eoy imho #markets it all depends on macro, markets pricing too many rate cuts until eoy (markets are ahead of themselves) #markets my best case is something breaking in the economy, some banks going bankrupt or something else, then the fed is forced to pivot, we get a shake off (ca. 30% flash crash), then they stimulate the economy again with QE and BTC does a fast recovery and goes to new ATHs in 2025-2026 #markets no one knows what will happen, that's for sure, we can only speculate #markets we could also get inflation reacceleration and then central banks are forced to raise rates even higher to 6-8% #dev damn #dev brawndo: are all your systems back up? #random haumea: oh nice, they didn't mention it on the privacy spectrum slide tho, they mentioned anoma which is under development #random fixed AirBnb cereal link https://finance.yahoo.com/news/airbnb-sold-30-000-obama-204034867.html #random Title: Yahoo #dev Yep #dev 🤘 #dev test #dev test back #dev !list #dev No topics #random test #random test back #dev hihi #dev hello #dev holla #dev Hello #dev today is special #dev it's the day to clean your screen #dev but.. but.. my screen is clean #dev well done #dev :D #dev irc on waterproof eink? #dev well... gg? #dev hello #dev !start #dev Meeting started #dev No topics #dev :D #dev hows it going with the net stuff, any soln on the reconnect stuff #dev anyone have issues with tau and darkirc? #dev I saw darkirc is stable for people using it? #dev dark-john reporting some msgs being picked up by the mirror bot but not his client #dev yeah when im outside reconnecting is great, but sometimes it gets stuck in a state where it cannot reconnect #dev s/reporting/reported #dev we need a tool to dump event graph buffers + ppl send us logs #dev haumea: i've been trying to reproduce that error locally (connection refused errors), will report any findings #dev also reka reported they can broadcast thier tasks on tau, idk what's missing #dev can or can't? #dev can't lol #dev i haven't tested tau yet #dev please do if you have time #dev did reka share any logs? #dev Any configs to use? #dev there are two tasks currently #dev draoi: yes #dev https://pastenym.ch/#/qQe2JjRo&key=74ad7ea4c23585d4d49a3cfeb1fa210f #dev Title: Pastenym #dev idk if it's still valid tho #dev the link i mean #dev just curious if there was anything in the log that would explain why tasks weren't broadcasting #dev brawndo: https://agorism.dev/uploads/taud_config.toml #dev ty #dev draoi: found nothing honestly #dev yw #dev event graph debugger would be useful #dev i have a big doubt about their workspace #dev dasman are you working on that? #dev feel free to copy paste dnet code #dev yes i am, already started #dev nice #dev thanks #dev Any updates? #dev ACTION ^^ #dev We'll get audit reports for the zk vm and gadgets this week #dev Then going to fix a few minor things in there #dev they're doing good #dev nice #dev quite satisfied with their audit #dev contracts also getting audited by other ppl #dev Dunno when that report will be in #dev i think it's ~10 days #dev i need to put some effort to bring in more devs #dev Cool #dev going to hit up some foss communities #dev All the good devs already doing smth #dev https://lainchan.org/%CE%BB/res/38069.html#q38325 #dev Title: /λ/ - Programming Employment #dev test #dev test back #dev heh #dev upgrayedd: how is darkfid doing? #dev haumea: good, I'm in the process of testing consensus with multiple nodes #dev nice looking forward to it #dev exciting #dev https://www.fossjobs.net/ #dev Title: Free & Open Source Jobs - fossjobs.net #dev they are all like: "We encourage people of color, indigenous people, LGBTQIA+ people, women, ..." #dev hey just getting connected to ircd #dev hello SIN #dev welcome SIN #dev i guess indigenous means native indians, so US centric #dev hello will read along #dev hihi #dev all screens are clean #dev ok well keep it up #dev o/ #dev glhf #dev or gjhf #dev !next #dev Elapsed time: 28472598.6 min #dev No further topics #dev I guess that's it #dev Q so I'm running in to errors under src/consensus/state.rs but can't find the file in my project dir! #dev error: written amount is not handled #dev --> src/consensus/state.rs:380:13 #dev | #dev 380 | writer.write(&count_str.into_bytes()).unwrap(); #dev | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #dev Ah, looks like the meeting is over. I'd like to pitch something #dev aiya: There is no src/consensus/ #dev hmm, I'm erroring out when running make clippy #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src #dev I have a long-running ideal about how DAOs should work. DAOs for now exist mostly as a concept, but to me, they are nothing else than just Decentralized Voting Orgs #dev Title: darkfi/src at master - darkrenaissance/darkfi - Codeberg.org #dev aiya: maybe on v0.4.1? #dev I would love to be allowed to build that on darkfi. The idea is to allow people to come together anonymously and work together on anything, including money-making projects - hence real DAOs #dev dasman: ugh, you're right thx #dev np :) #dev welcome loopr #dev This would require some "primitive" in darkfi DAO design #dev Currently you can only post a proposal and vote #dev thanks draoi #dev loopr: anywhere i can read more about the idea? #dev or can you be more specific #dev aiya: when you update a branch from master, you should rebase its commits to be after head, do you know how to do that? #dev like what about current contracts would need to change to support this #dev upgradedd: ok, will follow rebase policy. I merged the latest changes in my branch on GitHub #dev Not really, but I could write something together. There is a book which a bit describes the idea in different terms: #dev https://slicingpie.com/ #dev Title: Slicing Pie | Slicing Pie, The World's Only Fair Startup Equity Calculator #dev So basically the idea is to create some sort of distributed accounting for orgs #dev You contribute, and the contribution results in compensation for the org #dev aiya: its not a policy, its how you keep the git tree clean #random upgradedd: can you send me your pub key for DM #dev ah interesting loopr #dev loopr: That's some kind of meritocracy? #dev loopr: that sounds to me more like contract businesss logic handling, so its more like proposal to execute something #dev haumea has ideas about how to build an anon credit network, idk if related #dev I don't see how the "primitives" correlate to that #dev It's an open problem how to "calculate" contributions #dev as long as a proposal allows you to execute a contract function, you can do whatever #dev There was a project called source cred which is now dormant, which wanted to do just that #dev loopr: are you a dev? if so i'll tell you how to build it #dev Too many ppl wanted to do that #dev we have all the pieces, just needs to be assembled #dev But you need some kind of policing, or AI always #dev and indeed, brawndo, absolutely right, on the other hand, I think it is a missing peace of distributed orgs #dev Agree #dev haumea: I am all ears. Yes, I am a dev #random aiya: FfrD6FVbQZmbA5TQVxeRra4cAryH8ijC9G3r2BieFzSs #dev the challenge indeed lies in solving that holy grail #dev nice fyi https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html#employment #dev Title: Contribute - The DarkFi Book #dev want to exchange keys? #dev [contact."narodnik"] #dev contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #dev so loopr: there's a linux tool called ledger-cli, it allows you to do double entry bookkeeping #dev I think AI could be used to some extent #dev But unsure what to train it on #dev there's also this book https://maa.org/press/maa-reviews/algebraic-models-for-accounting-systems #dev Title: Algebraic Models for Accounting Systems | Mathematical Association of America #dev we have the p2p network / event graph #dev hang on I had to reset my laptop, I still have to generate my keys for exchange #dev it's something i want to make, just didn't have time yet #dev but you can have a record of anything including time or "contribution" #dev when i make an exchange to you, we have to both approve it #dev it could be a simple command line tool with a text file format #dev right. so one approach could be distributed qualifying of a contribution, and then taking an average. that requires people to do it, and it becomes slow, introducing new challenges #dev anyway eventually when the p2p has swarming, the event graph will become generic that it can be used in python as a widget (since event graph doesnt care what the data is) #dev isn't that what money is for? #dev we create banks and credit .etc #dev not following #dev https://agorism.dev/uploads/screenshot-1708356819.png #dev i used to work for a catalan cooperative #dev they had sub-coops each focused on different areas of activity #dev each one would issue their own credit #dev the coop would buy the credit, and so control prices this way #dev the coop is an intermediate with the outside world (handling exchange .etc) but everybody could purchase freely within the coop #dev ofc for that you need a good accounting system, ideally p2p #dev (the one i worked for had a web platform for this) #dev yeah sounds like CIC? #dev yeah it's the CIC correct #dev they had a good model but poor execution, and not a good understanding of economic theory #dev yep, a widespread issue #dev There are a lot of good ideas around, most fail #random test #random test back #dev they focused too much on agriculture, should've focused on tech and industry #dev agriculture is low yield #random upgrayedd: mine is 7HPTLvLNEPs8ohKxQTaXTAnHJGmcxU52jk2fm46efiRR #dev absolutely, and very few people want to work in agriculture anyways these days #random aiya: added you #dev My suggestion is to use some kind of tokens which accrue based on the contributions you made. Those tokens then proportionally give you ownership of the pooled equity of the org. Equity can be anything, can be stuff or money. But for simplicity, assume a project works for money, and makes 1k USD worth of profit. A has 10% of tokens, B 60% and C 30%, so A can take 100$, B 600 and C 300 #dev Of course the challenge lies exactly on how to fairly account for those contributions #dev There could be a project charter, which defines upfront some "constitution" (but can be changed via voting later): e.g. dev work gives you a factor of 1.5 on your time, community mgmt 1.4, documentation 1.25, providing food 2 etc. So a dev works 1 hour and makes 1.5 worth of tokens etc. #dev This is not my idea, and I don't want to flood the chat with this. If there's interest I can write it up somewhere and share. Also, I don't want to push this suggestion only, I think it should be way easier for people to work together over the internet, empowering everyone to become independent, and possibly long term revolutionize the work world. That's my driver. So I am happy to work on other #dev proposals if that fits a shared vision. #dev Nice #dev !end #dev Elapsed time: 32.0 min #dev Meeting ended #dev loopr: we are working on the base layer #dev this is all possible with the DAO design right now: voting to call functions and set policy #dev but we have no bandwidth to work on complicated products just yet. we need to ship mainnet #dev we even need to make a wallet #dev also i'd start small and build incremental... what's the MVP for this? i think it's the tool i described which we can expand over time #dev hintjens.com/blog:19 #random test #random test back #dev of course, I have 20 years of dev experience, I know how to work iteratively. I'd say the MVP could be record contributions and calculate one's share. everything else can come later. #dev [contact."loopr"] #dev contact_pubkey = "4rzHWemAB35pLjGZeKeCdGYKRa3ZG5QNRGcrJecwjgU3" #dev > Tari and Townforge projects also considering merge mine with Monero, but not completely due to concerns with potential 51% attacks #dev https://www.townforge.net/proof-of-settlement #dev Title: Proof Of Settlement | Townforge #dev https://rfc.tari.com/RFC-0132_Merge_Mining_Monero.html #dev Title: RFC-0132: Merge Mining Monero - The Tari Network: RFC library #dev brawndo, upgrayedd: ^ from a friend #dev Yeah old stuff #dev Already know all that #dev aha great #dev https://github.com/darkrenaissance/darkfi/issues/244 #dev Title: Merge mining with Monero · Issue #244 · darkrenaissance/darkfi · GitHub #dev good news: darkfi crypto passed the audit with (mostly) flying colors #dev https://agorism.dev/uploads/darkfi-report.pdf #dev \m/ #dev \o/ #dev congrats #dev <3 <3 <3 #dev + many thanks to upgrayedd helping resolve several build and test issues on my system #dev loopr: ok added you now #dev sent you a DM test #dev haumea: So which ones do you wanna fix? :p #dev haumea: answered, thanks #dev i can fix all of them, will take all of 30 mins #dev lol or be my guest if up to the challenge, happy to review #dev I can do it tmrw, will push to the branch #dev congrats on the audit #dev :) #dev : Great news on the audit! Are further audits for other parts of the codebase planned? #random : Test #random : Test back #random Test back #random quit #dev : https://zfnd.org/frost-reference-implementation-v1-0-0-stable-release/ #dev : FROST multisig is a game changer for long term self custody and DAO ownership #random test #random test back #dev gm, can I get people's input pls: I've been going through the Rust book & doing the 'rust by example' exercises, but also trying to learn ZK proofs at the same time, and going through the darkfi book, and now groth16, and I feel scattered. I feel like I should solely focus on Rust, but then I'm not learning actual cryptography principles so idk what to do #dev I'm up to ch6 with the Rust book, I've been going through a lot of it at work because my manager is trying to ship me off to another project, so I technically have no 'tasks' to do other than fix compilation errors #dev deki: I'm in the same boat, so leaning more towards getting hands on with rust than core cryptography #dev deki: get good at rust, then later do the zk #dev because once you know rust well, then you can get your hards dirty right away on using them (without knowing how they work) #dev : dark-john: yeah we need to audit the rest of the code... searching for a good auditor #dev yeah that's what I figured is the best path, just because Rust is statically typed and I've become more used to the likes of Python #dev : also we need to make more changes first too like hardening p2p layer #dev in that case I'll put all the crypto theory stuff to the side for now, and just practice Rust, thanks all #dev aiya: checkout Rustlings on github, you go through exercises to fix errors, it's actually a lot of fun kinda like a game #dev it depends what you want to do, many cryptographers can't even write code but they write math (which is another type of code ;) #dev but if you want to be a crypto dev, well i'd do the dev part first but with a focus on using crypto #dev your objective: get good at rust, which means: #dev deki: checking #dev - focus on learning the rust book. some of the later chapters are optional, but chap 1-6 and 8-10 are mandatory #dev (then skim the rest) #dev - then write code, lots of code until rust feels fluent. first you will do lil side projs to get comfortable, later you can try to submit patches to darkfi #dev - lastly you can do more ZK stuff once you pass the prerequisites #dev thanks for the input, I just want to become a crypto dev and contribute to this project/learn more about cryptography principles in the process #dev re the book: I was going to go up to ch20, but if beyond 10 can be skimmed, I'll do that #dev there is also a really good book called 'rust for rustaceans' which is more advanced but actually explains granular details about how rust works as a language, it's a great reference for when you are further along #dev another user on here (antikythera) suggested: ZK proofs, groth16, bls signatures, elliptic curve group law, and finitie field, then I'd be ready #dev ty draoi #dev rust for rustca.. is more for after you've been working as a rust dev for a while and have a solid grasp of the basics #dev I see #random : test #random : test back #random test back #markets : wrote an extended guide for running darkirc on android https://gist.github.com/nighthawk24/8072ac75feb8c46bcb1b8bf14165ae87 #markets : Title: darkirc on android · GitHub #markets Title: darkirc on android · GitHub #dev : wrote an extended guide for running darkirc on android https://gist.github.com/nighthawk24/8072ac75feb8c46bcb1b8bf14165ae87 #dev : Title: darkirc on android · GitHub #dev Title: darkirc on android · GitHub #dev aiyad: termux on graphene os can only be run as the primary user (which is for my part only used as admin for security reasons and instead have multiple users). Do you have any advice how to solve this? #dev anon: I'll check back when I have access to my graphene OS device, are you planning to run darkirc under a secondary user and sandbox activity there? #dev aiya: I just want to run darkirc on another user than primary. Thank you for checking :) #dev gm #dev aiya: There's a FROST impl here already https://github.com/darkrenaissance/darkfi/tree/master/script/research/frost #dev It's on the simpler side #dev haumea: So do we want a MAC in the elgamal function or just rename the function and add a doc comment? #random mfw jaw aches from unconsciously mewing and i can't switch it off #random pain is good, signs of something changing #random : test #random : test back #random test back #random : seems like I have the same problem as dark-john, I can send messages but not getting messages in weechat unless I restart weechat #random : was ok for a few days, now same behaviour #random : sounds like an issue with event graph possibly #random : dasman is building a debugger to help identify such issues #random : nice #random aiya: pain is not always good #random https://www.nidcr.nih.gov/health-info/tmd #random Title: TMD (Temporomandibular Disorders) | National Institute of Dental and Craniofacial Research #dev maybe both, the MAC can be another function/struct on top of the unsafe one #dev so i guess rename for now #dev ah I'm into it already #dev It's difficult because const generics #dev Right now leaning to impossible, rather than difficult #dev the safe version calls the unsafe one, by just sending it [x1, mac(x1), x2, mac(x2), ...] then also wrapping .decrypt() #random oh hello dentist, disorders definitely not good #dev and checking mac(x[i]) == x[i + 1] #random lmao dentist enters the chat #dev Yeah it's not possible in Rust #dev At least not by keeping the current API #dev what is not possible? #dev Doing the MAC #dev Because poseidon is const generic #dev can you show me what you have? #dev Sure #dev https://termbin.com/3bi8 #dev ty #dev oh you don't need to do that #dev each value can have its own mac #dev That's not quite elegant #dev encrypt(𝐱: Kⁿ) → Kⁿ⁺¹ #dev sorry i mean: #dev encrypt(𝐱: Kⁿ) → K²ⁿ #dev encrypt(𝐱) calls encrypt_unsafe(𝐱') where 𝐱' = [x₁, mac(x₁), x₂, mac(x₂), ...] #dev okay I'll add 2 new functions then #dev it can be another struct #dev ElGamalSafe/Unsafe #dev likewise decrypt(𝐜') calls decrypt_unsafe(𝐜') → 𝐱' then checks xᵢ₊₁ = mac(xᵢ) for i = 1, 3, 5, ... #dev then returns 𝐱 = [x₁, x₃, …] #dev let s be the shared key, then macₛ(xᵢ) = poseidon_hash(xᵢ, s, i) #dev i was thinking about this and that's my current idea for API change, lmk if you think of sth better #dev brawndo: well tbh we don't need the safe version so it might just be extra code that isn't used #dev which is why renaming them might be the shorter easier option #dev Yeah likely #dev where later we can make the wrapper if needed #dev I'll just add the comments #dev but it's verified and used inside ZK so not needed #dev altho it's something to watch for when needing verified values... always check the decrypted values are valid (i.e. they exist inside a coin). #dev the values are used in ZK so modifying the ciphertexts makes the ZK proof unable to verify so it's fine #random : hey errorist: around? #dev Yep #dev If we ever need it we'll add it ez #dev ++ #dev But ok I found an impossible thing in Rust #dev :D #dev don't like writing unused code #dev Yeah things rot #dev just also you don't know what is needed ahead of time #dev polkadot wrote so much bloat #dev one thing also that's not in the report is that we're often not cheching that a PublicKey is not the identity #dev I think we should be able to fix that directly in keypair.rs #dev So it applies everywhere #dev secret key would have to be 0, and pubkey = (0 : 1 : 0) which in compressed form i think would be xx00...00 where xx can be 00 or 01 #dev it would be a self own, but not an attack, possibly good to have anyway #dev since it's weird #random test #random test back #dev : @parazyd pushed 6 commits to crypto-fixes: 632f7d7b58: sdk/crypto: Add "_unsafe" suffix to ElGamalEncryptedNote functions... #dev : @parazyd pushed 6 commits to crypto-fixes: 89cff07469: sdk/crypto: Use deterministic nonces for Schnorr signatures #dev : @parazyd pushed 6 commits to crypto-fixes: c191eb2b9c: validator/utils: Add FIXME note about dangerous code #dev : @parazyd pushed 6 commits to crypto-fixes: 96c6f6fa65: sdk/crypto: Derive a deterministic nonce for ECVRF #dev : @parazyd pushed 6 commits to crypto-fixes: 0bc4d0a2d3: contract/deployooor: Remove redundant ZK proof creation and verification #dev : @parazyd pushed 6 commits to crypto-fixes: 763a335716: sdk/crypto: Forbid PublicKey to ever be the identity point #dev haumea: Ok, up for review :) #dev Starting from 7280b434fc9b5fe56bf0e46c41d4f6af1eda3a0b #dev I think we can drop d63bce3a7a239f7c9137d6eac40cad8d1a6c5e42 since 763a3357163def8441e935f3fcc57e973ee51ff4 enforces it #dev Whoops I introduced a mistake #dev ah no it's fine #dev lmk when you review, I'll then rebase and merge if all gud #dev : @parazyd pushed 1 commit to crypto-fixes: 02c35b727e: fixup! contract/deployooor: Remove redundant ZK proof creation and verification #dev hey was cutting chicken #dev ok looking #dev oh nice we can remove OsRng #dev from 89cff0746930313a5d3c #dev let mask = hash_to_scalar(DRK_SCHNORR_DOMAIN, &[&pubkey_bytes, message]); #dev should be: #dev let mask = hash_to_scalar(DRK_SCHNORR_DOMAIN, &[&secret_bytes, message]); #dev (because mask must be private, and the pubkey/message are public info- my mistake before when i said hash(pubkey, msg)) #dev ok, fixing #dev : @parazyd pushed 1 commit to crypto-fixes: 045ee88bc8: fixup! sdk/crypto: Use deterministic nonces for Schnorr signatures #dev Yeah I did it right in ECVRF but not here :D #dev : @parazyd pushed 1 commit to crypto-fixes: 644158c13e: fixup! sdk/crypto: Forbid PublicKey to ever be the identity point #dev for ECVRF, it's correct what you're doing but you could also hash gamma, or hash x, message, .etc #dev (not talking about the rest of the code, just nonce generation) #dev It's like this in the RFC #dev ok nice #dev H is already the message btw #dev yeah true #dev well it's a commitment to the message, and k is a commitment to a commitment to a message #dev i will look more closely at deployooor later, but i trust it's fine tbh #dev ok thanks #dev Lemme squash these fixups #dev ok yeah the rest is small things #dev looks good #dev : @parazyd pushed 5 commits to crypto-fixes: b69aeb9ffa: sdk/crypto: Use deterministic nonces for Schnorr signatures #dev : @parazyd pushed 5 commits to crypto-fixes: ef1a39cf69: validator/utils: Add FIXME note about dangerous code #dev : @parazyd pushed 5 commits to crypto-fixes: 29addb004d: sdk/crypto: Derive a deterministic nonce for ECVRF #dev : @parazyd pushed 5 commits to crypto-fixes: 1ff100dae5: contract/deployooor: Remove redundant ZK proof creation and verification #dev : @parazyd pushed 5 commits to crypto-fixes: 25d3bf7950: sdk/crypto: Forbid PublicKey to ever be the identity point #dev ty #dev : @parazyd pushed 11 commits to master: 60fc2f0b3d: sdk/mimc_vdf: Generate round constants as BigUint instead of u64 #dev : @parazyd pushed 11 commits to master: 8636fb2641: sdk/ecvrf: Enforce that the public key is not the identity point #dev : @parazyd pushed 11 commits to master: 41266d7fd6: chore: Add supply-chain to main .gitignore... #dev : @parazyd pushed 11 commits to master: ff24d41a10: sdk/schnorr: add the pubkey to challenge hash of commit #dev : @parazyd pushed 11 commits to master: b218255aa1: DAO::propose(): check input nullifiers are not used more than once - each one should be unique. #dev : @parazyd pushed 11 commits to master: 23f2bbeac9: sdk/crypto: Add "_unsafe" suffix to ElGamalEncryptedNote functions... #dev : @parazyd pushed 11 commits to master: e33fb55faf: sdk/crypto: Use deterministic nonces for Schnorr signatures #dev : @parazyd pushed 11 commits to master: 6002324810: validator/utils: Add FIXME note about dangerous code #dev : @parazyd pushed 11 commits to master: b82aee8cd3: sdk/crypto: Derive a deterministic nonce for ECVRF #dev : @parazyd pushed 11 commits to master: dc203e12f0: contract/deployooor: Remove redundant ZK proof creation and verification #dev : @parazyd pushed 11 commits to master: 47e9d68ef1: sdk/crypto: Forbid PublicKey to ever be the identity point #dev \o/ #dev sick #dev Now the zkvm stuff... #dev the 2 things i'd fix if possible would be fixing the vote thing (need set exclusion gadget) and allowing DAOs to make swaps #dev for the set exclusion, that would mean changing money::transfer() so each node builds a sparse merkle tree of nullifiers which can easily be forked #dev I'll see about the gadget after the zkvm audit #dev I need to study this: https://github.com/young-rocks/rocks-smt (and IIRC it had bugs) #dev Title: GitHub - young-rocks/rocks-smt: A Sparse Merkle Tree circuit constructed with Halo2 poseidon. #dev how are people running their ircd daemons? I assume running one on a vps could be helpful? #dev Yeah I run mine on a server at home #dev Kinda dodgy to keep secrets on VPSs #dev brawndo: you mean like the plain text keys I guess #dev In the config files, yes #dev yeah #dev doesn't look like ircd is very resource intensive, so prob could run on a rpi #dev Yep definitely #dev Though later on there will be ZK proofs needed when we introduce spam protection #dev Although I wouldn't introduce that unless/until necessary #dev It's a chat after all #dev cool #dev it's just that I usually switch off my laptop at night, a long running ircd would be better #dev : test #dev : test back #dev test back #dev : FYI ... the "can post to darkirc and it shows up in Telegram mirror, but not seeing messages from others" is still happening on my computer. This was after a shutdown and restart of darkirc and weechat this morning. So there has been no "catch up" since I last ran. Only seeing my own messages. #dev : But I see my posts do make it to others, as they appear in the Telegram mirror. #dev : administration added task (8pIkWJ): test. assigned to reka #dev finally #dev : administration stopped task (8pIkWJ): test #dev test back #dev : test back #dev dasman: I tried to setup taud on my computer and on a vps, with the same steps and config. It runs on vps but not on computer. It seems like syncing isn't working. Can it have anything to do with the capacity of my computer or what might be the reason for this? #random : https://x.com/poppunkonchain/status/1759676073808158819 #dev reka: check your firewall #dev that's the only think I can think of rn #dev damsn #dev lol #dev dasman: I will ty #dev damn son! #dev XD #dev XD #dev seems unfortunately that this is not the problem #dev you're running taud without "--config" right? #dev if yes, please check ~/.config/darkfi/taud_config.toml if the workspace secret is the correct one #dev also if you have more than one workspace, listing task will tell you which workspace you're on rn, check if it's the correct one before adding your task #dev dasman: it is only one workspace and I checked with the one you shared. It's the correct one.. I run without --config #dev okay let's go through this step by step #dev check dm #dev ++ #dev gm #dev : oh that's weird #dev gm #random test #random test back #dev gm #dev greets both #dev : gm #dev : we need some way of replaying the event graph #dev : so it's like we log the events coming in, then when someone has an error, they can send the data bundle (debug log, event graph replay, current event graph state), then we can accurately debug errors #dev : isn't that what dasman is working on or am i confused #dev : this is different #dev : ah ok #dev : i thought it was this + a UI to inspect #dev : maybe they can be merged #dev : the inspection tool is #dev : narodnik added task (SjJ2OA): event graph replayer. assigned to dasman #dev : narodnik reassigned task (OVjOqH): seed reconnection to @xeno #dev : narodnik added task (iaJCUw): allow using shortened refids instead of index. assigned to dasman #dev : what's the seed for tau? #dev : narodnik added task (nebREV): when creating a new task, show its index. assigned to dasman #dev : narodnik commented on task (iaJCUw): allow using shortened refids instead of index #dev : it should be the default #dev : it's not, but i found the correct one in #dev logs #dev : aha kk #dev : we should have a read only key too #dev : idk how to enable users to submit tasks, possibly they could just submit it manually to us on here and we submit the task #dev : but certainly having a read-only key would be nice #dev : narodnik added task (kVNZYs): read only key so users can view tasks. assigned to dasman #dev : narodnik commented on task (yWx0dR): event graph tool #dev : new tau is comfy :) #dev : yeah works well but we need more tooling and improvement around event graph #dev : also that net fix too #dev : there's also work on hardening the net code #dev Untrusted deserialisation too #dev is that referring to the buffer alloc or sth else? #dev : also magic bytes should be customizable per app #dev Yeah and generally I think it can be manipulated into crashing nodes #dev For memory reasons #dev I'd rather go for making it slower and safer over fast and flaky #dev ok #dev : @parazyd pushed 1 commit to master: 13c6d35e38: contrib: Add script for generating ctags #dev nice gonna try #dev You can add it also as a commit hook #dev nice #dev works well #dev $ nvim #dev :tag DaoInfo #dev :tag make_mint_call #dev although :tag DaoProposal::to_bulla doesn't work #dev That's not how ctags work #dev You'd match on to_bulla and get offered multiple results #dev to_bullasrc/contract/dao/src/model.rs/^ pub fn to_bulla(&self) -> DaoProposalBulla {$/;"Pimplementation:DaoProposal #dev it says implementation:DaoProposal at the end so it should be possible #dev https://parazyd.org/pub/tmp/screenshots/screenshot00375.png #dev the tag contains the struct name as a field so it's possible to jump directly #dev *shrug* #dev -\_o_/- or how was it #dev ¯\_(ツ)_/¯ #dev "D #dev yeah! lmao #random test #random test back #random : test #random : test back #random test back #dev : @parazyd pushed 1 commit to master: ffcefada18: sdk/crypto: Remove unused import in ecvrf.rs #dev : have been testing darkirc reconnect at different time intervals #dev : 1 min offline: reconnected to seed fine #dev : 5 min offline: reconnected to seed fine #dev : 1 hr offline: reconnected to seed fine #dev : i think it's just the number of times you go offline, no? #dev : next gna try to max out the seed node inbound connections #dev : because then it triggers the blacklist logic #dev : do you mean quarantine? #dev : yeah sth like that #dev : i restarted the node before and it suddenly connected #dev : which indicated to me it was not the problem with remotes but with local logic/state of the node #dev : quarantine is like: try to connect to outbound, if it can't connect, try again N times, if it still can't connect, reject #dev https://agorism.dev/uploads/screenshot-1708514086.png #dev from https://math.ucr.edu/home/baez/rosetta.pdf #dev kinda interesting that a program is like a logical proposition, and 2 parallel processes are just non-dependent logical statements #dev i wonder if this has relevance for zk/anon contracts somehow #dev (since we usually think of things in terms of tautological statements rather than execution of a program) #dev haumea: There's the struct NullifierAttributes #dev haumea: I think we should remove it, and pass OwnCoin around, since it always seems used in the client APIs #dev OwnCoin has too much data inside it #dev I added a 'fn nullifier()' to impl OwnCoin #dev It doesn't matter, you're passing a reference #dev i'd actually remove OwnCoin, or alias it to NullifierAttrs #dev No that's bad #dev one sec, looking for a commit #dev You're doing it in TransferCallInput, which is literally OwnCoin #dev yes but it's not always OwnCoin #dev Yes it is #dev OwnCoin has too much data which isn't used in other places #dev It does not matter #dev You're introducing redundant structs just to have a lossy version of OwnCoin #dev one sec #dev i can't find the code in commit log (too deep), but it was the functions from before in test-harness doing gather on OwnCoin #dev That stuff is gone #dev there was some places where we didn't have MoneyNote #dev It's everywhere now #dev I fixed it #dev aha thanks #dev OwnCoin and NullifierAttributes are semantically different. it's better to have them separate #dev in fact, OwnCoin::nullifier() should use NullifierAttributes.to_nullifier() rather than calling poseidon_hash() directly #dev that way if we ever change the format of nullifiers, it's in one place we can update easily #dev MoneyNote is a very large struct to copy around #dev also MoneyNote could just be: CoinAttributes, memo (and we delete the value/token blinds) #dev You can't "change" stuff like that #dev You need versioned structs #dev And in fact it makes it simpler to refactor and upgrade when we just contain it all in OwnCoin(V1) #dev MoneyNote is already copied around #dev NullifierAttributes didn't help with that #dev (Nor is it really relevant) #dev : @skoupidi pushed 1 commit to master: 0de966c9c7: darkfid: forks sync logic implemented #dev i'm just thinking because i see that it might result in deleted code and simplify things #dev but the other side is that one is the client, the other is the model, and in general it might be good to always have XAttrs -> X for any bulla/commit in code #dev No you only need the Type #dev you could say the same about CoinAttributes too #dev you know in postgres when you have a table which contains fields, i had a friend who would do foo(foo_x, foo_y, ...) for the members of a table foo #dev i named things similarly in .zk as well so it was clear what is a coin's attribute or dao proposal attr .etc #dev coin_x, proposal_y, ... then for each commit/bulla made a corresponding FooAttributes struct in the model.rs file as a convention #dev so if we delete NullifierAttributes then it would be breaking that convention #dev what do you reckon? #dev Anywhere where you're using NullifierAttributes, you have a parent OwnCoin, which you converted into TransferCallInput for example #dev And you again copy the note into TransferCallInput #dev ok well go for it if it's better #dev So it's just more code that essentially does the same thing #dev ++ #dev thanks for looking #dev np I'm going through things #dev : neat! :D #dev : gm #dev : @parazyd pushed 1 commit to master: 2a49b2d79e: contract/money: Remove NullifierAttributes and use the OwnCoin API #dev See how wherever it was used, it also uses the note #dev : dasman added task (SVIc5e): prune very old stopped tasks. assigned to dasman #dev haumea: It makes sense to me, the Nullifier can only be created if you have its secret, meaning you have to have the OwnCoin #dev haumea: CoinAttributes is different, as it does not require any previously known values, but rather enforces the API and gives knowledge of what a Coin contains #dev So I think the two do not ft the same schema/convention #dev s,ft,fit, #philosophy : https://dark.fi/insights/memetic-warfare.html #philosophy : Title: Memetic warfare #philosophy Title: Memetic warfare #dev : made a darkirc seed to try and catch that seed reconnect error: "tcp+tls://anon-fore.st:5262" #dev : would appreciate if ppl use this when testing #dev hi, are there actually people from the old lorea.cc times in here? just curious #dev yes me #dev the other guys are all retired now with families, they "grew up" #dev oh I see #dev i'm never growing up #markets https://www.youtube.com/watch?v=psDqn6KCrJ4 #markets Title: Javier Milei delivers Argentina's first monthly budget surplus in 12 years - YouTube #dev haha #dev I remember hellekin, he seemed quite committed too... #dev yeah but he's not a dev, and plus he's anti-crypto #dev actually brawndo is from that group too ;) #dev i mean hellekin is a dev but more into web, these days he's doing activism type things #dev aah ok ok #dev btw I was known as tawhuac back then #dev i was genjix #dev had a lot of content on lorea.cc #dev oh I think I remember you there too :) #dev i used to work closely with caedes but now he works on some shitty crypto exchange #dev all the best great devs i know are semi-retired, and the good ones work a normie jerb like bank or exchange .etc #dev the lure of money is strong #random is this any interesting? #random https://x.com/dr_orlovsky/status/1760105129754218738?t=4bXwflAj7UQTl9wLSSTGgg&s=08 #random I don't fully understand what it is about, to be honest #random 1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, . . . creates Haskell, a pure, non-strict, functional language. #random Haskell gets some resistance due to the complexity of using monads to control side effects. #random Wadler tries to appease critics by explaining that: #random > “a monad is a monoid in the category of endofunctors, what’s the problem?” #random --- #random still i'm interested in category theory so will check it out #random this is interesting: https://github.com/msakai/cpl #random Title: GitHub - msakai/cpl: An interpreter of Hagino's Categorical Programming Language (CPL). #random see chap 5: https://web.sfc.keio.ac.jp/~hagino/thesis.pdf #random I need to wrap my head arount rgb contracts in the first place... #random https://agorism.dev/uploads/math-normie.png #random ^ insert category theory #dev gn #dev what was lorea.cc? #dev : @dasman pushed 2 commits to master: 2a8ba89001: bin/tau: accept shortend refid as an identifier for tasks #dev : @dasman pushed 2 commits to master: 0ecdff598d: bin/tau: show task index when creating a new one #dev : dasman stopped task (iaJCUw): allow using shortened refids instead of index #dev : dasman stopped task (nebREV): when creating a new task, show its index #dev : draoi: connecting to your seed: 23:46:40 [WARN] [P2P] Failure contacting seed #0 [tcp+tls://anon-fore.st:5262]: IO error: connection refused #dev : 23:46:40 [WARN] [P2P] Seed #0 connection failed: IO error: connection refused #dev : 23:46:40 [ERROR] [P2P] Network reseed failed: Failed to reach any seeds #dev : tysm dasman #dev gm #dev gm #dev anyone read into this? https://security.apple.com/blog/imessage-pq3/https://security.apple.com/blog/imessage-pq3/ #dev Title: Apple Security Research #dev no idea what "post-quantum cryptographic protocol" is, haven't read the full article #dev gm #dev gm #dev how does one verify apple's implementation and check for backdoors #dev : Added anon-fore #dev https://media.tenor.com/PO289wuDoPgAAAPo/you-don%2527t-invincible.mp4 #dev : weirdly it seems to connect fine over ipv6 but not ipv4 #dev : lmk if ppl encouter any correlation between internet protocol and connection issues #dev draoi: your isp may block certain ipv4 ranges #dev Flexing with ip6 huh #dev :p #dev :D #dev yes could be upgrayedd #dev global east poors #dev lol #dev also that might be why you couldn't reproduce certain connection erros with the seed #dev You know what's weird #dev lmao #dev I'm googling for rust code auditors #dev And all the results are crypto/smart contracts #dev wtf happened to legit devs #dev lmao #dev brawndo: they rewrite foss #dev https://www.google.com/search?client=firefox-b-d&q=rust+code+auditing #dev Title: rust code auditing - Google Search #dev smart contract, smart contract, substrate, crypto #dev who else would pay for rust code audits? #dev broke ass fossniggas #dev sucks #dev i remember working for 5 years when our project got funded for 25k. we thought it was a lot of money #dev good knows is if we can tap into those communities then it's a wellspring of devs #dev i was thinking to do a hipster suckless "modern linux" anti-systemd type prevent to HCPP #dev prevent? #dev some of these telegram linux meme communities have thousands of members #dev The only thing I found is this https://www.radicallyopensecurity.com/ #dev Title: Non-Profit Computer Security Consultancy #dev draoi: i meant pre-event #dev They're funded by nlnet #dev oh nice #dev ah yeah nlnet's nice, we got funding from them #dev Andy Tannenbaum is an advisor lol #dev lmao!! #dev Maybe we should ping them #dev harry recommended a german firm, they used them #dev https://www.radicallyopensecurity.com/non-profit/ #dev Title: Non-Profit #dev but my friend matt says you don't want firms, you want skilled individuals into formal verif and code audits #dev also least authority or trail of bits are standard options #dev Yeah #dev I'd take anything at this point #dev well i'll ask around a bit, lets see if david responds with recommends #dev : @zero pushed 1 commit to master: 9c802e0745: book: add page arch/wallet.md #dev we also need a bit more time to tweak things to perfection like we did we the crypto code #dev : @zero pushed 1 commit to master: 5101de7160: book: fix broken URL #dev notes on wallet design: https://darkrenaissance.github.io/darkfi/arch/wallet.html #dev Title: Wallet - The DarkFi Book #dev ^ interesting for everybody #dev It's great #dev Least Authority is well respected, I'd also recommend Defuse for audits if he is available https://defuse.ca/software-security-auditing.htm #dev Title: Software Security Auditing #dev ty brawndo, i also forgot that metamask is non-portable to android .etc (at least trivially)... will also add a roadmap like: #dev - get drk working, then wasm addons (cli only), then modules .etc #dev ofc not delaying shipping mainnet, just tentative slow burner schedule #dev (also added responsive design for mobile/desktop devices) #dev Metamask has a standalone app (browser) on android #dev haumea: you don't need responsive design if you only use the terminal :D #dev thanks brawndo, will add that it needs a separate app which is a downside #dev ty upgrayedd, will also add first class CLI support as core prereq #dev another downside: the wallet arch is specific to browsers, so wallets need to include webkit #dev = huge chunk of code #dev webkit as a browser add-on app only or desktop/mobile native client too? #dev : @zero pushed 1 commit to master: 8ce95eeacb: book/wallet: add feedback from others #dev https://codeberg.org/darkrenaissance/darkfi/commit/8ce95eeacb869059fb45bf9314179cd4f86841e2 #dev Title: book/wallet: add feedback from others · 8ce95eeacb - darkrenaissance/darkfi - Codeberg.org #dev aiya: the metamask mobile app would need to include webkit to enable you to use eth addons #dev https://github.com/audulus/rui-ios proves rust for ios app is possible with mobile UI/scaling handled #dev Title: GitHub - audulus/rui-ios: Demo of rui embedded on iOS #dev haumea: i see #dev miniquad is great #dev yeah, miniquad convinced me it's possible to render fast cross platform ui unlike flutter/react-native #dev https://not-fl3.github.io/egui-miniquad/ #dev Title: egui in miniquad #dev for mobile, its still a bunch of responsibility when working on own designs, without relying on underlying platform's features like scaling font/text, accessibility, and other fancy features expected with a messaging supported app #dev Of course #dev egui is insane #dev "Fancy" features get built over time #dev It should not be your priority for delivering a thing #dev darfirc and wallet with egui like functionality working in a browser window would be epic #dev Reject the browser #dev Why would you cripple your software? :D #dev hah how else do you make the experience universal like a metamask wallet #dev miniquad is cross-platform #dev Works everywhere #dev so native app builds and installers for each platform? #dev Sure #dev and browsers will deep link in the client from browsers? crypto devs primarily start their experience in js website #dev There is no web browser #dev how would a community organize a landing page to invite new members? #dev > crypto devs primarily start their experience in js website #dev That's why they're all bad #dev agree, it sucks #dev is the idea that everyone get the darkfi client and form communities within? #dev Have you ever used Telegram? #dev yes lol #dev So there's an example #dev You see how they have messaging, communities, and various apps you can install within the main app #dev telegram still has incoming links for users to join the groups, users still navigate to web browser or use alternate messaging medium to obtain information on joining a group #dev What's the issue? #dev are those considered the fancy features? #dev I don't follow #dev What's wrong with sharing a URL ? #dev Even on Android you have intents #dev say someone wants to start a community, how will they use the darkfi client? create a new channel, and share it with prospective members to join? will there support for search? #dev How did you get here? #dev :D from an alternate messaging medium #dev Yeah so that's one way #dev i forget this is the dev channel #dev What's that supposed to mean? #dev will discuss UX ideas in design #dev aiya: you're talking about URIs #dev so the telegram URLs are actually a (mis)use of the URI system. In bitcoin you have links like "bitcoin:..." which opens the bitcoin wallet #dev they are easy for us to implement as a way to launch the wallet and access a resource #dev https://en.wikipedia.org/w/index.php?title=Uniform_Resource_Identifier #dev Title: Uniform Resource Identifier - Wikipedia #dev it's not related to the browser but a universal desktop feature #dev telegram just redirects the URL to a landing page with a button to "launch in telegram" which is a button with a URI #dev URI is one thing, search and discovery is another, channels made in darkirc are not public as i understand? #dev this is a public channel #dev yo haumea are you here? #dev hey yeah #dev haumea: you recall how the VRF for block ranking is constructed right? #dev sorry I don't know how the VRF we use works #dev i can look into it if you want #dev or do you mean how it's used for block ranking? #dev wdym, you read the consensus doc, no? #dev yeah I mean how its used for block ranking #dev aha ok yeah #dev ok so the is an issue with currend block rank logic #dev previously we were using pallases instead of integers, so we were sure the modulus will produce something #dev but now thats not the case, since it will most likely produce 0, or the nonce number, unless nonce is 0 #dev you mean vrf_output % nonce? #dev which defeats the porpuse #dev yy that #dev so the question is, do you reckon its safe to use the vrf_output directly as the blocks rank? #dev that will only be 0 if vrf_output = n * nonce for some n #dev or n = 0 #dev that shouldn't happen #dev vrf_output is almost always greater than nonce #dev so vrf_output % nonce will almost always be 0 #dev modulus doesn't work like that, it will only be 0 when vrf_output is a multiple of nonce #dev it sounds like the nonce = 0 #dev oh true you are right #dev nice hehe #dev in early blocks I'm working with smoll nonces #dev mostly 1 XD #dev hence the 0 #dev anyway continuing #dev yeah nonce = 1 is {0} #dev nonce = 2 is {0, 1} #dev nonce = 3 is {0, 1, 2} #dev .etc #dev yeah there is still something missing tho #dev i'll look at this again with pallas::Base replaced by big uint #dev since we are using vrf_output % nonce #dev ain't that mean that same height blocks, extending same fork, will have the same rank? #dev we need to add some differentiator in the mix #dev like block hash or something #dev since that would be unique to each block, regardless what it extends #dev i need to look at this deeper. will also look at the ECVRF, but what you say sounds correct, but still unsure #dev I mean same height blocks with same nonce #dev yeah gotcha but hard to say since idk how the VRF works #dev if it's deterministic from the data at that point, then yes you're correct #dev if there's nondeterminism then it's unsure #dev its deterministic #dev then yes you're correct #dev since we are using n-2 vrf #dev and nonce #dev so blocks that extend same fork, aka having same n-2 vrf #dev what if i make a block the same? #dev if they have the same nonce, their ranking will be the same #dev can i make a conflict? #dev i guess not since the block would be different #dev wdym make a block the same? #dev I reckon we could do, instead of nonce, generate a buint from the block hash bytes #dev so the rank will be vrf_output % that #dev although the modulus is still unsecure, since blocks must have a unique rank for their height #dev so maybe vrf_output + that? #dev the nonce is inside the block header, so it mutates the block hash #dev haumea: yes but blocks for same height with same nonce always have different hash #dev nice that's good #dev since the header includes the tx tree root, which includes the miners coinbase tx #dev so unless they use same secert, the hash will always be different #dev correct, sounds good as a source of randomness #dev and same secret == same block #dev correct #dev ok so changing to vrf_output + block_hash_output #dev sounds good? #dev why not % block_hash? #dev a yeah thats even better #dev since each block will deffo use diff modulus #dev ++ #random link for the LunarDAO twitter spaces today at 15:00 UTC #random https://twitter.com/i/spaces/1OdJrjwDBOkJX #random Privacy applied, privacy tools in the real world #dev : @skoupidi pushed 1 commit to master: 5e9892363a: validator: changed block ranking logic #random chatGPT has gone insane apparently spewing garbage #random https://old.reddit.com/r/ChatGPT/comments/1avwwsf/am_i_going_insane/ #random Title: Too Many Requests #random https://old.reddit.com/r/ChatGPT/comments/1avyp21/this_felt_like_watching_someone_slowly_go_insane/ #random Title: This felt like watching someone slowly go insane. : ChatGPT #random creepy #random have you seen this? lol https://twitter.com/BasedTorba/status/1760427033950101953 #random yeah lol #dev : @skoupidi pushed 1 commit to master: cff856971d: darkfid: consensus fixes #random test #random test back #random a list of links from the twitter space that was mentioned: #random here is the list of links I've collected: #random https://silent.link #random Title: Silent Link #random https://anonshop.app #random Title: Anon Shop #random https://simplifiedprivacy.com #random Title: Simplified Privacy – Privacy Made Easy #random https://trocador.app/en/ #random https://www.bitrefill.com/ch/en/ #random Title: Trocador.app #random https://coincards.com/uk/ #random Title: Buy Gift Cards & Top Up Airtime with Bitcoin or Crypto - Bitrefill #random https://cakepay.com #random Title: Coincards UK - The UK's Bitcoin to Gift Card Exchange Service #random Title: Cake Pay: Buy Gift Cards with Crypto #random https://getsession.org #random Title: Session | Send Messages, Not Metadata. | Private Messenger #random & simpleX, Matix, Nostr was mentioned imo #dev : @skoupidi pushed 3 commits to master: 3a9455e646: contrib/localnet/darkfid*: updated tmux scripts #dev : @skoupidi pushed 3 commits to master: 20117e3e7d: darkfid/proto/protocol_proposal: added missing dispatcher #dev : @skoupidi pushed 3 commits to master: 505571188d: rpc/client: new fn chad_request added #dev haumea: the new rank logic works like a charm #dev managed to have 2 miners both produce blocks and reach consensus on highest ranking fork to finalize #dev its_all_coming_together.jpg #dev \o/ #dev (づ。◕‿‿◕。)づ #random test #random test back #dev I see that per default, `outbound_transports = ["tls"]`, but I see ircd trying to connect to tor endpoints as well (and failing, at least on my box) #dev setting `outbound_transports = ["tls","tor"]` seems appropriate, and helped me get connected? #dev loopr: hey, you are connected #dev Yo :) #dev also set up a weechat relay so I now can connect from my phone too #random test #random test back #dev gm #dev you could also run darkirc natively on android, but I currently use my phone to connect to vpn and ssh to my server running darkirc and weechat #dev aiya created a guide how to run darkirc on android #random sadar: thanks for sharing #dev someone sent me this on here for android might be of interest: https://mirror.xyz/0xbe62F12D86B058566E2438fA9f1c4f800f30F68E/kMAfnA4Smkb0xg8904j8rhkkobaZ6UtK2kiGgCtUxK8 #dev Title: Running DarkFi IRC on your phone — Sam Cunningham The 2nd #dev https://gist.github.com/nighthawk24/8072ac75feb8c46bcb1b8bf14165ae87 this is the recent one by aiya #dev Title: darkirc on android · GitHub #dev ty #dev gm #random test #random test back #dev gm #dev errorist: that's not good for darkirc #dev you need to test it running locally so we get the test data #dev it should sync automatically #dev (different for ircd) #dev gm #random nick #random test #random test back #random nick test #random test #random test back #random faku: you need /nick [new nick] #random draoi i know #random im just testing this #random my keyboard shortcuts fucked up bruh #random test #random test back #random test #random test back #dev gm #random i want to join the "hidden" channels based on "algorithms" "programming" "conspiracies" "crypto" "health". Someone give me links. Thanks #random test #random test back #random tes #random test #random test back #random whoamipussycat: https://rroll.to/nwpfaY #random Title: 429 Too Many Requests #random lol almost got me >.> #random upgrayedd im not clicking on that link #random i just accessed all the forbidden knowledge thanks upgrayedd #random pussycat: don't be a pussy and click the link #random it's worth the click #random manifold im not clicking #random your loss #random im not a dumb fuck #random test #random test back #random correction, i am a dumb fuck #random :o #random whoamipussycat: welcome to the club #random yeah lol #random test #random test back #random im sorry i am actually a dumb fuck not you whoamipussycat #random yes absolutely already proven #random test #random test back #random your save attempt is even dumber, so... save it #random own the dumbfuckery #random emprace your inner strength #random become the best version of yourself #random still dumb, but at least best #random upgrayedd draped guy #random im upgrading to the dumbest version of myself cause dumbest is dum best #random test #random test back #random retards and geniuses unite against midwits #random lmao it's like that meme #random test #random test back #dev anyone know working seed nodes for darkfid? #dev aiya: master o tag/v0.4.1? #dev master #dev master is in development, so no seeds #dev got it, what are the seeds for 0.4.1 #dev aiya: defaults work fine #dev gr8, connected to seed lilith0 and 1, and then warning that node is not connected to other node #dev aiya: don't bother with current testnet, its getting nuked soon #dev (TM) #dev waiting for the next testnet \_(-_-)_/ #dev : @skoupidi pushed 10 commits to master: b468b9c399: net/message_subscriber: new fn receive_with_timeout added on message subscription #dev : @skoupidi pushed 10 commits to master: ed96c06adb: darkfid: ask peers if they are synced on sync task #dev : @skoupidi pushed 10 commits to master: 22c4f2604b: contrib/localnet/darkfid*: tmux scripts beautifications #dev : @skoupidi pushed 10 commits to master: c25df52c64: fud | lilith | research/dhtd/ | geode | tests : Refactor to return match statements #dev : @skoupidi pushed 10 commits to master: 668743b83a: net : Remove unnecessary casts #dev : @skoupidi pushed 10 commits to master: 3d4bd17a2e: net/transport/tls | crypto/constants : Match the order of impl members with the trait #dev : @skoupidi pushed 10 commits to master: ae11be0d20: serial : Fix max_value will be deprecated: replaced by the MAX associated constant on this type #dev : @skoupidi pushed 10 commits to master: 9d2adcd93a: runtime : Use unwrap_or_else to set retdata #dev : @skoupidi pushed 10 commits to master: 0a51a11ed0: serial/derive : Use unwrap_or_else instead of match #dev : @skoupidi pushed 10 commits to master: 4e8e1ea0a2: chore: clippy #dev : @skoupidi pushed 1 commit to master: 5b38b29884: darkfid/tests: ducktaping #random test #random test back #dev is tau2 a shared task env or is it rather personal? #dev or, if looking at https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html#mainnet-tasks, how to know if someone already grabbed a task? #dev Title: Contribute - The DarkFi Book #dev Ask here if you're willing to pick something up and we can see #dev cool. is the order in the list in any prio or rather just a dump? #dev No order really #dev You can see in the table below that some tasks are taken, but likely help would be appreciated :D #dev ooh duh, just scroll a bit more. sorry #dev No worries lol #dev I think it's not up to date, but it is relevant #dev 5 looks cool to me, but might maybe be a bit too much to start #dev 6 might be better coz it doesn't affect main code directly yet #dev and I have done some 16 but in golang #dev all these are taken though. suggestions? #dev How about 17 ? #dev WIF stuff #dev You could try extending the PublicKey and SecretKey traits/structs #dev BLAKE3 should be used instead of SHA #dev is that WIF page basically a cookbook on how to do it? #dev Yeah #dev I think the right way to do it would be to implement a Wif trait and extend SecretKey with it #dev didn't know wif before. But sounds good #dev Solid entry-level task :) #dev Don't have mastery of the complete docs page yet, but is there some page about the current address format itself? #dev i.e. is it bip39 compatible or something? #dev WIF is for secret keys #dev We currently don't have any special address encoding, but we probably should #dev Currently it's just the base58 encoding of the PublicKey (which is a pallas curve point) #dev I see. Yeah, worth thinking about the address scheme before launch, not something to be changed easily after (although can be done of course, but creates confusion) #dev also, haumea mentioned some instabilities with p2p networking, hinting at ircd logs #dev are those the timeouts and different errors? #dev loopr: ircd is on tag/v0.4.1 so its obselete #dev don't look at it #dev ah #dev so if I'd like to try looking at those "instabilities", because I happen to enjoy p2p networking stuff, what's the best way? #dev Ideally, write a test harness from scratch #dev ^^ #dev Some kind of API that can start/stop nodes, add nodes to a network on-demand, etc. #dev That kind of functionalities #dev So you can easily run various simulations #dev what branch I would target then? #dev master #dev ++ #dev thanks upgrayedd and brawndo #dev yw #dev So it'd be some kind of harness that can be initialized inside of an integration test #dev And wraps the API in https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/net in order to be able to easily spawn a network, arbitrary nodes, etc #dev Title: darkfi/src/net at master - darkrenaissance/darkfi - Codeberg.org #dev Similar in how the contracts test harness does things #dev But I'd make it more dynamic #dev what about grpc? #dev fuck google #dev lol #dev fair enough #dev We have our own p2p stack #dev https://darkrenaissance.github.io/darkfi/learn/dchat/dchat.html #dev Title: P2P API Tutorial - The DarkFi Book #dev There's a tutorial here #dev ++ #dev Sections 27-31 #dev btw I might change my nick, as loopr on github is taken #dev Use codeberg.org ;) #dev We use github only as a mirror tbh #dev I was wondering how you want to fuck google but use on github lol #dev Soon you'll provide a proof-of-vax to Bill Gates to make a Github account #dev yeah #dev loopr: preferably without a condom #dev github is a "compromise" for reachability, we use it just as a mirror. #dev we don't point anyone to use it #dev upgrayedd: I get it. I am not familiar with codeberg, it's under the tor contrib in the docs though. #dev Is the use of codeberg with tor mandatory? #dev Not really, depends on your opsec #dev thought so. and can codeberg do PRs? #dev Yep #dev ++ #dev btw I am still under contract until end of march, hoping to be free a bit earlier though, but until then my contrib will be gradually increasing #dev fuck google #dev what did they do now? #dev the gemini thing? #dev gm, afk today #dev gm, same #dev gm #dev there is an impostor among us #dev andsoitbegins.jpg #dev like this https://www.youtube.com/watch?v=4dAaLbsQSzI #dev Title: Constellation — Official Trailer | Apple TV+ - YouTube #random gib DRK plox, my faucet/airdrop doesn't seem to work: AnimeR5SybUuQqQTRzRwSwqkUshpPE3BjsWtDY3NhdJy #random woah nice addy #dev even my mental health is fucked by google. i use porn on google. dont use github #dev lol, there it is #dev lmao upgrayedd bot #dev every masterpiece has its cheap copy #dev "i use porn on google" XD #dev child: mom I want upgrayedd!! mom: we got upgrayedd at home. #dev XD #random anon: teh testnet is gna be nuked v soon #random we're shipping a new one rn #random babe wakeup, new satoshi lore just dropped https://mmalmi.github.io/satoshi/ #random Title: Satoshi - Sirius emails 2009-2011 #random https://bitcoinmagazine.com/technical/bitcoin-adam-backs-complete-emails-satoshi-nakamoto #random Title: bitcoinmagazine.com #dev i am the masterpiece #dev lol here it is again #dev one can only dream... #dev dream on... #dev hahaha #random oh cool sirius, he was one of the early 5 and a nice guy #random test #random test back #random test #random test back #random test #random test back #random lain: I tried building master too but couldn't sync to any other nodes, is that expected? #random anon: darkfid on master is under development, no nodes are deployed #random test #random test back #random tst #random test #random test back #dev i'm not important enought to have an impostor #dev the bot is delivering content, that's nice #dev porn has destroyed my brain upto the point of no return. so im on meds #dev im autist and superior to normal humans !! #dev can i get some of your droogz #random test #random test back #random test #random test back #dev hello i found that v0.4.1 darkirc has problems with musl #dev it bypasses requests in torified environments #dev i tested it with both alpine and void musl #dev septic: you don't need to torify it, darkirc has native tor support #dev by v0.4.1 I assume you mean bin version, not repo tag, correct? #dev oh its not darkirc its that ircd old one #dev yes #dev ircd will be obselete so don't bother :D #dev nice #dev out of curiosity, wdym by bypassing? #dev can you state the complete test case? #random <\ test #random test back #dev <\ can i connect one windows laptop and a linux laptop using a single ethernet cable by giving them static ips #dev <\ auto eth0 #dev <\ iface eth0 inet static #dev <\ address 192.168.1.2 #dev <\ netmask 255.255.255.0 #dev <\ for example ^^ #dev <\ or do i have to modify the ethenet cable physicallu #dev \ test #random test back #dev <\ sorry #random <\ can i connect one windows laptop and a linux laptop using a single ethernet cable by giving them │ #random <\ │ │ static ips #random <\ or do i have to modify the ethernet cable physically #random \ if you don't have one, yeah you modify a normal one #dev you need an ethernet crossover cable, then it should work #random <\ thanks so thats why im not having connections #random <\ so i have to open and rewire them #dev <\ hmm thanks #random just the one end #random test #random test back #random \ https://www.youtube.com/watch?v=jgJKaP0Sj5U #philosophy Title: Killer T cell attacking cancer - YouTube #dev upgrayedd: He means that any lib (e.g. torsocks) which uses the LD_PRELOAD hack to hijack connect(2) doesn't work #dev upgrayedd: That's likely, since using musl will statically link the libc #dev brawndo: so torify in general doesn't work in musl? #dev It does if you have a dynamic link to libc #dev aha good to know #dev A library like this is the smallest one I know (I wrote it) #dev https://github.com/wireleap/client/blob/48465449c5e3a20f2d4157cfe1fa90faca9bfa50/wireleap_intercept/wireleap_intercept.c #dev So a program connecting somewhere would use connect(3), which means the ELF has that symbol #dev When it's a dynamic library, it will load that library and use the symbol there (usually there's a table) #dev But then on Linux, you can use LD_PRELOAD to load another library and prefer its symbols, so essentially you replace the function call with your own code #dev That's one of the big arguments against dynamic linking, since it allows you to hijack functions #dev But then again, useful in cases like this #dev > (I wrote it) #dev source: trust me bro #dev :D #random test #random test back #random test #random test back #random test #random test back #random test #random test back #dev im getting errors on trying to connect darkirc #dev 05:02:30 [ERROR] [EVENTGRAPH] Sync: Could not find any DAG tips #dev 05:02:30 [ERROR] Failed syncing DAG (DAG sync failed), retrying in 10s... #dev 05:02:40 [INFO] Syncing event DAG (attempt #2) #dev 05:02:40 [INFO] [EVENTGRAPH] Syncing DAG from 0 peers... #dev 05:02:40 [ERROR] [EVENTGRAPH] Sync: Could not find any DAG tips #dev 05:02:40 [ERROR] Failed syncing DAG (DAG sync failed), retrying in 10s... #dev 05:02:50 [INFO] Syncing event DAG (attempt #3) #dev 05:02:50 [INFO] [EVENTGRAPH] Syncing DAG from 0 peers... #dev 05:02:50 [ERROR] [EVENTGRAPH] Sync: Could not find any DAG tips #dev 05:02:50 [ERROR] Failed syncing DAG (DAG sync failed), retrying in 10s... #dev 05:02:55 [WARN] error: tor: remote stream error: Protocol error while launching a data stream: Received an END cell with reason MISC #dev 05:02:55 [WARN] [P2P] Failure contacting seed #1 [tor://f5mldz3utfrj5esn7vy7osa6itusotix6nsjhv4uirshkcvgglb3xdqd.onion:5262]: tor: remote stream error: Protocol error while launching a data stream #dev 05:02:55 [WARN] [P2P] Seed #1 connection failed: tor: remote stream error: Protocol error while launching a data stream #dev 05:03:16 [WARN] [P2P] Failure contacting seed #1 [tor://f5mldz3utfrj5esn7vy7osa6itusotix6nsjhv4uirshkcvgglb3xdqd.onion:5262]: tor: remote stream error: Protocol error while launching a data stream #dev 05:03:16 [WARN] [P2P] Seed #1 connection failed: tor: remote stream error: Protocol error while launching a data stream #dev 05:03:17 [WARN] error: tor: remote stream error: Protocol error while launching a data stream: Received an END cell with reason MISC #dev 05:03:17 [WARN] [P2P] Failure contacting seed #0 [tor://rwjgdy7bs4e3eamgltccea7p5yzz3alfi2vps2xefnihurbmpd3b7hqd.onion:5262]: tor: remote stream error: Protocol error while launching a data stream #dev 05:03:17 [WARN] [P2P] Seed #0 connection failed: tor: remote stream error: Protocol error while launching a data stream #dev 05:03:17 [ERROR] [P2P] Network reseed failed: Failed to reach any seeds #dev 05:03:20 [INFO] Syncing event DAG (attempt #6) #dev 05:03:20 [INFO] [EVENTGRAPH] Syncing DAG from 0 peers... #dev 05:03:20 [ERROR] [EVENTGRAPH] Sync: Could not find any DAG tips #dev 05:03:20 [ERROR] Failed syncing DAG. Exiting. #random test #random test back #random test #random test back #random test #random test back #dev hello #random i get disconnected #random then again have to restart #random test #random test back #dev https://paste.debian.net/plain/1308516 #dev errors when using darkirc #dev i followed https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html?highlight=darkirc#step-2-build-and-run-darkirc #dev Title: tor-darkirc - The DarkFi Book #random is anybody here or is this abandoned #random test #random test back #random test #random test back #random hello hello hello is anybody hearing me ? #dev F?dT#c|P[: the default seeds will not work #dev try this seed: #dev seeds=["tcp+tls://dasman.xyz:5262"] #dev noting that darkirc is not 100% stable rn as we are still testing #dev also in future, plz paste error logs in pastebin etc not in the chat #dev link to pastebin is perf #random gm #dev F?dT#c|P[: are you trying to connect with tor only? #dev errorist: yes im trying to connect through tor only #dev drao: doesnt the default tor seeds work? #dev *draoi #dev i'm running a tor seed, try with it: 6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion #dev not sure it will work though, haven't fully tested it #dev errorist: let me try. are the default 2 tor seeds down? #dev yes they are outdated #dev from the prev release #dev draoi: ah okay #dev errorist: is the port 5262 #dev no, it's 25551 #dev give it a try and lmk #dev sure #random test #random test back #dev i was able to connect to the tor seed #dev errorist: is it tor-only or also a bridge seed (i.e. supports other transports)? #dev i was not able to get any peers from the tor node even tho i connected to it fine #dev is your hostlist empty? #dev draoi: let me check #dev actually i think it's some other problem #dev sec #dev ok yep it's that #dev hostlist empty after seeding #dev could just be since it's a new seed #dev draoi: so I have this in my darkirc config: inbound = ["tcp://127.0.0.1:31337"] #dev external_addr = ["tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551"] #dev i could connect to the said in logs it said connected. #dev and this in lilith: accept_addrs = ["tcp+tls://0.0.0.0:31337","tcp+tls://0.0.0.0:25551"] #dev *seed #dev where was the path for hostlist? #dev errorist: the path is specified in your config file #dev but here it seems you are re-using the darkirc tor addr for the seed #dev but i get Read error Malformed packet. send_version() failed: Channel stopped #dev oh yeah #dev you should have seperate onions for darkirc external addr and for lilith #dev draoi: this is my hostlist https://pastenym.ch/#/56MXfD8H&key=665998472025a52cfccf3fc768cc477e #dev Title: Pastenym #dev is that lilith or darkirc hostlist errorist? #dev draoi: lilith #dev weird #dev anyway first step is to create an onion for the seed #dev draoi: ok, so I have to put the onion hostname in the lilith config so it can be announced? #dev yes #dev but cannot be the same, has to be a different onion link? #random test #random test back #dev sec lemme check my seeds #dev brawndo: can i rename SDKs ecvrf.rs to vrf.rs? #dev yes otherwise you would be receiving all traffic on the same addr and port #dev yep so the lilith accept_addr should be the lilith onion, and that's what you share to other nodes to connect to #dev ok, thx, i'll try and set this up later today #dev keep the darkirc external addr etc as is, that's good as means ppl can connect to you as a peer #dev ++ #dev F?dT#c|P[>: i suggest to retry later when errorist's tor seed has been configured properly #dev okay #dev we're testing a new release of darkirc rn so that's why nodes are only partially deployed etc #dev draoi: i also have this in my config im running a tor address external_addr = ["tor://2tcllnev6t4vlbta5ks6mnfrdn62ibpbf3yuhzxoszd7r3kooo4xvsyd.onion:25551"] #dev nice ty, that's good for the health of the network #dev for tor we are using Arti (rust tor protocols) which is still under development #dev on the prev darkirc release it was mostly working but a bit flaky at times due to arti stuff #dev yes its in the docs #dev ++ #dev tnx for testing, are you a dev? #dev yeah #dev nice, welcome #dev thanks #random lol https://www.fellipe.com/apps/im-coder/ #random Title: I'm coder #philosophy https://www.africanhistoryextra.com/p/the-complete-history-of-gondar-africas #philosophy Title: The complete history of Gondar: Africa's city of castles (1636-1900) #random test #random test back #dev draoi: so I created a new hidden_service dir for lilith under a new port and got a new onion link, put that in the lilith config accept_addrs: tcp+tls://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552" but now I get this in the lilith log: [ERROR] [P2P] Error starting listener #1: IO error: uncategorized error #dev if I do tcp+tls://0.0.0.0:25552 I don't get any errors, but does it get the onion hostname from tor? #dev https://pastenym.ch/#/miOGlXDU&key=a14a9fc53ee02bf2d098bf30aee1170f #dev Title: Pastenym #dev halp :D #dev you have the tor addr inside [] right #dev like accept_addr = ["..."] #dev in the darkirc config? I only have the darkirc one, should I add the lilith one too? #dev no in the lilith config #dev so we're talking about 2 onions, once is for your lilith node, the other for your darkirc node #dev yes, I tried that, but it says error starting listener #dev do you have [] #dev or can you paste that line #dev yes, one sec #dev accept_addrs = ["tcp+tls://0.0.0.0:31337","tcp+tls://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552"] #dev is tcp+tls correct? I tried also with tor:// but it says invalid transport #dev it should be tcp actually #dev since tor connections happen on localhost via the onion #dev let me try with just tcp://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552 #dev actually can you try with tcp://0.0.0.... #dev and i will try connect to the onion #dev not sure whether you have to specify the onion in the config or if it's sufficient to just share with nodes who want to connect #dev so let's test :D #dev same: [ERROR] [P2P] Error starting listener #1: IO error: uncategorized error #dev yeah for some reason it only works with 0.0.0.0 #dev wdym #dev can you paste the line you just put? #dev also plz note the port numbers #dev you're using a different port on your onion and on your tcp addr #dev are you mapping those ports in your tor config? #dev yes, I have this in torrc: #dev HiddenServiceDir /var/lib/tor/darkirc #dev HiddenServicePort 25551 127.0.0.1:25551 #dev HiddenServiceDir /var/lib/tor/lilith #dev HiddenServicePort 25552 127.0.0.1:25552 #dev ok so you need to set the accept_addr to port 25552 on lilith #dev try connecting now #dev accept_addrs = ["tcp+tls://0.0.0.0:31337","tcp://0.0.0.0:25552"] #dev I have this in lilith now #dev and I was able to connect now #dev was tcp+tls before and I got the errors, but now I think it looks fine #dev ok sec #dev 11:43:17 [INFO] [P2P] Connected seed #1 [tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552] #dev 11:43:18 [INFO] [P2P] Disconnecting from seed #1 [tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552] #dev I only have this error in the darkirc log now: 11:43:16 [ERROR] send_version() failed: Channel stopped #dev but this was there before too #dev yeah that's not necessarily an issue #dev since it's normal to connect to seed and then insta disconnect, resulting in channel errors #dev ic #random : test #random : test back #random test back #dev seed connection worked #dev nice #dev : hello from tor #dev also semi related i pretty much know now why we were having issues with offline nodes #dev !list #dev No topics #dev !topic offline host filtering #dev Added topic: offline host filtering (by draoi) #random : test #random : test #random test back #random : test #random : test #random : test #random : test #random : test #random test back #random test back #random test back #random test back #random test back #random : test back #random : test back #random : test back #random : test back #random test back #random : mirror-bot for mirroring darkirc to ircd or what #random hello #dev nice that's excellent news, i think this is the only blocker rn to move on #dev https://www.pygame.org/docs/ref/time.html#pygame.time.Clock #dev Title: pygame.time — pygame v2.6.0 documentation #dev actually nvm that link, not relevant for ping-pong #random : test #random test back #random : test back #random test #random test back #random : hey #random : yes exactly we are mirroring msgs from darkirc to ircd cos we're not fully migrated yet/ for testing #random : glad you could join :D #dev F?dT#c|P[: do you see the reply back from test bot in weechat? #dev I don't until I restart weechat, this is a known error, will have to be debugged #random : test #random : test back #random test back #dev errorist: not all messages. i dont get all messages in darkirc. but how you know im using weechat ? #dev im not using weechat #dev it's what is recommended in the docs #dev but you can use any irc client #dev errorist ah #dev which client are you using? #dev I should try a different one, maybe it's a client issue #dev on my side #dev errorist: im having problem on all clients #dev : test #dev : test back #dev test back #dev it's normal not getting all messages because ircd is different and messages from ircd are not mirrored in darkirc #dev but when you do test you should see the test back #dev yes i got the test back #dev plan is to migrate from ircd to darkirc when it's stable enough :) #dev cool #dev darkirc has msg retention up to 1 day #dev nice, that's fine then #dev so you can recv msgs when offline #dev biab, testing some stuff which requires me to go offline #dev therapy stopped working :/ https://agorism.dev/uploads/broken.py #dev : @draoi pushed 1 commit to master: 874c2cc85e: net: only remove peer from hostlist after the configured quarantine limit #dev ^ that was a bugf #dev /s/bugf/bug #dev nice #dev 10:01 brawndo: can i rename SDKs ecvrf.rs to vrf.rs? #dev Pls don't, that's too ambiguous #dev vrf's are many #dev ok nw #random test #random test back #dev Hi! Hope you doing great, I saw that you are offering positions in the project :D How is the process? Apparently is very spontaneus right? By making commits and contributing you get to a place. #random test #random test back #dev hi ash #random test #random test back #dev Hi! #dev https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: Contribute - The DarkFi Book #dev Thanks, took a look to that part of the book, so is a yes to my question. #dev Which dev profile are you requiring right now draoi? #dev ffcc #dev ash: make a couple of commits, show as you're capable and have what is takes #dev I'm thinking about the point (17. Implement address/secretkey differentiation) as a first commit. #random test #random test back #dev Also, contributing to the docs if needed. At least to start #random test #random test back #dev ash: I just picked up that task couple of days ago #random test #random test back #dev oh got it #dev lmk anything you need #dev If there are any contribution to the docs needed, it would be a good first start. As a second step it would be cool to tackle the point 14 #dev 14. Implement cross-chain atomic swaps (XMR, ETH, anything applicable) #dev I'm interested on doing an atomic swap with Cardano which is blockchain I come from. #dev the* #dev sounds pretty cool #dev Do you have orientation about how to proceed with both? #dev The current atomic swap is meant for cross-chain transactions? #dev current darkfi contract* #dev ash: no its between native assets #dev Ok got it. So before starting on it let me know if there someone else working on point 14? #dev ash: how about adding it as topic for toms meeting? #dev good #dev I believe you may be rushing #dev toms meeting you mean monday meetings? #dev yy #dev rush? #dev I agree is better to talk about it tomorrow #dev rushing to start something of that magnitude without discussing the hows first #dev Agree, by starting I meant making an expectation towards it and start investigating, for sure I will be asking about it tomorrow and see how good how I can help (Y) #dev But I must confess that my curiosity drove me to be the last two hours looking info about how to implement an atomic swap xD #dev Damn the rabbit holes #dev ash: yeah I know exvitment can blind us some times #dev For sure #dev btw already mingle with an xmr/eth swap impl, so the cardano one could just be an addon there #dev hence why I say hold your horses, you probably don't have the full picture :D #dev Hahaha take the advice #dev whats your background btw? if you are comfortable can you share your repos? #dev Cardano smart contract dev #dev Sure #dev I'm already working on zk #dev I wouldn't throw the "zk" term lightly around here #dev can I send my github right here? #dev you are well aware that most "zk projects" are not about privacy #dev indeed #dev if you comfortable to share it publically yeah throw it here, otherwise we can set up dms #dev but us are focusing in privacy #dev https://github.com/AgustinBadi #dev Title: AgustinBadi (ash) · GitHub #dev did you know that our current testnet consensus is based on ouroboros crypsinous? #dev yes! There are similarities, that's why got excited about this project too #dev we going PoW for next testnet though, we are cooking merge mining with monero #dev To be more precise about the "zk" expression, with my team are working on a groth16 validator, and soon start porting Semaphore #dev didn't need to clarify, already on modulo-p repos ;) #dev Yeah I saw that update, CPU PoW is interesting, PoS always had that plutocracy that for me is like a downside #dev well also PoS assumes you know stakers, which is contranticting to the full private paradigm #dev hence the "based on ouroboros crypsinous" statement #dev kayias made hella lot of assumptions in that paper that never properly state #dev In our impl we pretty much elliminated all these assumptions #dev Also it is true. Few people tackle that beast of papers, is interesting to hear about it critically. #dev ash: well most people don't know that ouroboros papers are pretty much ~70% identical, so once you've read the first, all next are DLCs #dev Which assumptions made you noise. #dev ? #dev But probably that's is a long road, honestly before I want to know how you addressed the atomic swap¿ #dev The solution I saw was the Hash locking contract #dev by commitment hashes essentialy #dev sorry I have that theme on the tip of my tounge hahah #dev re: ourboros assumptions, just read the protocol overview: #dev (Y) #dev The protocol Ouroboros-Crypsinous assumes as hybrids a network F?? N-MC , a non-interactive-zero-knowledge scheme FNIZK , a forward-secure encryption scheme FF W E NC , a global clock GCLOCK , a global random oracle GRO , a non-interactive equivocal commitment protocol, and a CRS used by the commitment protocol, to supply the commitment public key, FCRS #dev ash: check this re atomic swaps: https://github.com/AthanorLabs/atomic-swap #dev Title: GitHub - AthanorLabs/atomic-swap: 💫 ETH-XMR atomic swap implementation #dev Good, I'm in the protocol.md reading about it and also the links drove me to this blog https://comit.network/blog/2020/10/06/monero-bitcoin/ #dev Title: Monero-Bitcoin Atomic Swap | COMIT Developer Hub #dev Going to carefully read it tomorrow, the atomic swap is my target. However is always good to take babysteps towards it, we can talk tomorrow if the are some middle quests where I can bring help and learn. #dev salud #dev it was suggested to implement the wif formatting as a trait - why is that? Will there be multiple key representations requiring format conversion? Will the conversion be applied to more than just private keys? In other words, what data types will be using this trait? Or is a utility fn an alternative? #dev gm #random test #random test back #dev gm #dev hihi #dev loopr: i don't think it applies to WIF specifically, i think it's just a general way of encoding user data which is: [version:1] + [data:...] + [checksum:4] #dev where data can be any length #dev !list #dev Topics: #dev 1. offline host filtering (by draoi) #dev !topic p2p next steps #dev Added topic: p2p next steps (by haumea) #dev !topic runtime hardening #dev Added topic: runtime hardening (by haumea) #dev !topic sparse merkle tree gadget for ZK #dev Added topic: sparse merkle tree gadget for ZK (by haumea) #dev !topic darkfid status and DRK update #dev Added topic: darkfid status and DRK update (by haumea) #dev !topic event graph status update + tooling #dev Added topic: event graph status update + tooling (by haumea) #dev !topic python bindings + swiss army tool #dev Added topic: python bindings + swiss army tool (by haumea) #dev !topic project wide unit tests and improved coverage #dev Added topic: project wide unit tests and improved coverage (by haumea) #dev !list #dev Topics: #dev 1. offline host filtering (by draoi) #dev 2. p2p next steps (by haumea) #dev 3. runtime hardening (by haumea) #dev 4. sparse merkle tree gadget for ZK (by haumea) #dev 5. darkfid status and DRK update (by haumea) #dev 6. event graph status update + tooling (by haumea) #dev 7. python bindings + swiss army tool (by haumea) #dev 8. project wide unit tests and improved coverage (by haumea) #random test #random test back #random https://www.aljazeera.com/news/2024/2/26/us-airman-sets-self-on-fire-in-protest-over-israels-genocide-in-gaza #random Title: US airman sets himself on fire outside Israel embassy to protest ‘genocide’ | Israel War on Gaza News | Al Jazeera #random maybe we need a geopolitcs channel #random https://en.wikipedia.org/wiki/Self-immolation_of_Aaron_Bushnell #random Title: Self-immolation of Aaron Bushnell - Wikipedia #dev gm #dev greets ash #dev yo #dev Talked a lot with upgrayedd yesterday about how to contribute, one of my target is the point (14) cross-chain atomic swaps, but of course since I'm new into the project it would be cool to find more accesible commits and areas where I can contribute. #dev hello #dev o/ #dev anyone from darkfi i can speak to? #dev : @draoi pushed 1 commit to master: b126c6f71e: outbound: don't try to connect to nodes that are being migrated #dev spore: we are all darkfi #dev what do you want? #dev if not dev related, please ask random stuff on #random #dev ack #random who would be best person to speak with about about something, would rather not do on the open channel #random [contact."narodnik"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random send me your DM key #random sorry am a hotdog with this setup how to get DM key? #random thanks for your help #random https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #random Title: Private Message - The DarkFi Book #dev * hi #random send me your key too #dev o/ #dev \o #dev \o #random contact_pubkey = 8BgzT5SzUbrcYyuyE1YVHAo1hgLKVdbPB9Kt3BWMZJh8 #random draoi: support for the George channel #random I meeant the geo channel #random :D #random loopr Goerge is good name tho #random #George #random XD #random haha yeah #random reminds me of BLM tbh #random oh, hang on didn't save the priv key #random darkfi making a hotdog learn liberation tech. bullish. #random <3 #random test #random test back #random https://i.4cdn.org/fit/1708860467720372.webm #random this is so weird #dev ( ^_^)/ #random ok. have saved. hotdog question do I need to remove the ## comment prefix in the cofig for it to be enabled? #random yes #random spore: yes, # is the comment character #random [contact."spore"] #random ## contact public key #random contact_pubkey = "C9vC6HNDfGQofWCapZfQK5MkV1JR8Cct839RDUCqbDGK" #random y #random ty #random spore: sent you a DM #random hotdog doesn't know how to check dm's kek #random spore: did you restart your ircd instance? #random doing now #random the DM would have poped up on the bottom of your channels in weechat #random (no) #random ok, restarted. not seeing DM. Have added narodnik to contacts. have uncommented on pub and priv key. #random fanks for hotdog tech support. #dev <0xhiro> hi everyone is the weekly dev meeting about to commence? #dev 0xhiro: hello, yes #dev moshi moshi #dev aloha o/ #dev gm #dev yo #random test #random test back #dev howdy #dev hey i was d/c, internet was being weird #random spore: check DM #random sent you one #dev !start #dev Meeting started #dev Topics: #dev 1. offline host filtering (by draoi) #dev 2. p2p next steps (by haumea) #dev 3. runtime hardening (by haumea) #dev 4. sparse merkle tree gadget for ZK (by haumea) #dev 5. darkfid status and DRK update (by haumea) #dev 6. event graph status update + tooling (by haumea) #dev 7. python bindings + swiss army tool (by haumea) #dev 8. project wide unit tests and improved coverage (by haumea) #dev Current topic: offline host filtering (by draoi) #dev draoi: here? #dev test #dev test back #dev hey #dev sorry #dev so i've been looking into issues with nodes reconnecting when they go offline #random can see 7:#random{1} [H: 2(14)] but not sure how to get into the new buffer lol as am only seeing top level channels in the weechat sidebar 1. darkfi 2.dev 3.memes 4.philosophy etc #random not seing how to get to dms #dev we are trying to make it so you could have darkirc running on a phone and be in and out of internet and be able to reconnect seamlessly #dev gm #random tryna check here but still hotdog https://weechat.org/files/doc/stable/weechat_user.en.html#key_bindings_buffers #random Title: WeeChat user’s guide #random did you restart after adding my key? #dev <0xhiro> gm! #random try restarting your ircd node #random spore: alt + arrows #dev however there is a couple of issues #random yeah - there is no DM buffer #random yeah but seems he doesn't see the DM #random you added my key, right? #random did restart ircd after adding keys, yeah #dev namely, darkirc nodes essentially delete the (transport compatiable) nodes in their greylist when they are offline #random did you edit the correct file? #random ~/.config/darkfi/ircd_config.toml #dev since the greylist process will continue, removing nodes as it goes #dev similarly, nodes will also remove white and anchorlist connections from their hostlist when they fail to connect to them in outbound session #random (assuming default paths) #random yep, that is the file which has been edited #dev what this means is when the node regains internet it may have difficulty reconnecting if it has deleted its hostlist #random gonna restart the node again #dev it is possible to delay this using config settings #dev quarantine limit will slow the time it takes to delete nodes from white and anchorlist #random so this is what see in the tray #dev draoi: is the peer discovery ask the seed again at any point? #random [7] [irc/darkfi] 7:#random{1} [H: 2(28,3), 1(9), 3(3), 4(3), 5(3), 6(3)] #random but alt arrow just cycles me through the top level channels #dev if for example we add a rule where: if peers completely empty, ask seed instead #dev then when you come back online, after the sleep time passes, you will ask seed and grab fresh peers listo to play with #dev while the greylist refinery timer will slow the time for greylist deletion, so we could play around with settings and see if there's a special setting we can make for these for nodes that expect to be in and out of internet #random this is my pubkey #dev you can't expect nodes to always be online, it should be able to handle nodes going offline without forever blacklisting them #random contact_pubkey = "C9vC6HNDfGQofWCapZfQK5MkV1JR8Cct839RDUCqbDGK" #random [contact."spore"] #random spore: you don't add yourself pubkey in the config #random hope what i have to say is wortwhile after all this hotdog stuff kek #random just the private key #dev upgrayedd: yes outbound connect reseeds after a certain number of failed attempts #random keep the pubkey in a comment so you can easily share it around #dev rn we blacklist nodes after a configurable limit of failed connections #random its no harm adding his own pubkey, i have it too #dev the quarantine connect limit #dev rn the default is 50 #random spore: did you add your private key, and my public key? #dev so i've been playing around with timing this and seeing what is acceptable here #random ok, have removed self #dev however the recent net change introduced a bug that i'm looking into rn #random haumea: yeah I meant you don't need to #random ++ #dev not sure what it is yet, something blocking the stop signal CTRL C #dev rogue detached process #dev yeah #dev Time to rewrite p2p? #dev XD #random ok. have to run. will loop back round later to try and figure this out. thanks for help so far. #dev i think best case scenario we can come up with some settings for nodes with patchy connections that will allow you to go offline for some period of time (1hr or whatever's acceptable) #dev what is the blacklist for? #dev an easier logic would be: #dev if I can't connect to any peer, pause refinery process #dev since I assume that it might be me, not them #dev haumea: in outbound connect, if i can't connect to peer, i try again N times, if i still can't connect, i blacklist #dev maybe it shouldn't be doing that #dev just greylist #dev blacklist should be misbehaving nodes #dev ++ #random test #random test back #dev ok lemme think that thru #dev kk #dev ty all #dev ty #dev !next #dev Elapsed time: 10.9 min #dev Current topic: p2p next steps (by haumea) #dev is it exp back off on retry or just retry? #dev oops apologies for clicking next #dev not sure i understand Q gentlemanloser can u rephrase #dev brawndo: p2p next steps: rewrite #dev gentlemanloser: i think it's just retrying with no exp backoff #dev XD #dev " if i cant connect to peer, i try again n times..." is it fixed time between retry or an exponential back of in time between retry #dev you can see the logic in src/net/session/outbound_session.rs and check the connect Slot #dev ++ #dev it is fixed time between retry #dev ++ Ill read code #dev ty #dev then after N times, will trigger seed process #dev well we are talking about 2 loops here #dev good for next #dev check src/net/hosts/store.rs quarantine() #dev ok about next steps #dev in net/message.rs, when receiving a new message, we get the length and preallocate a buffer #dev this is vulnerable over the network, so would need to be fixed #dev darkfi/src/net/message.rs:129 #dev haume: can't the message! macro set max limit, so the allocated buffer always checks against that? #dev then as well in src/net/channel.rs, there's a running process inside Channel which owns an Arc to the channel, which means channels *must* be stopped or they leave dangling messages #dev upgrayedd: yeah a max limit would work fine too #dev darkfi/src/net/channel.rs:255 #dev so this: async fn main_receive_loop(self: Arc) -> Result<()> { #dev haumea: yeah I reckon thats the best solution, since you abstract it for the protocol to use what it seems deemed, not a hardcoded limit enforced everywhere #dev should be changed to use Weak instead of Arc, and never hold Arc for a long period of time so dangling Channels are not kept around #dev although .stop() is still the recommended way to stop channels #dev in fact net should be checked for any dangling processes or references #dev which must not exist, so all ownership semantics should be a strict hierarchy #dev also right now the MAGIC_BYTES are not configurable. But p2p should allow configuring them darkfi/src/net/p2p.rs:58 #dev that way different applications have incompatible messages and there's no potential for protocol crossover/confusion (two apps using the same ports) #dev this DEP 0001 needs to be applied: https://darkrenaissance.github.io/darkfi/dep/0001.html #dev Title: DEP 0001: Version Message Info (accepted) - The DarkFi Book #dev examples for "apps" here being ircd and darkfid? #dev as well as a way to set the values used for version messages #dev loopr: yes for example #dev we also need a resource manager (see how it's done in libp2p) so applications can set limits. then if breached, the channel is stopped. #dev but it will be better once darkfid is finished, then we have an actual protocol to engineer for with DoS protections #dev ^ those are the pending works for p2p #dev draoi: btw we should not have any blacklist imo since they don't work with tor, and that's our target #random test #random test back #dev wdym can you explain re: blacklist #dev just a soft greylist #dev how can you blacklist a tor node? #dev we have a hashset of nodes we classify as "rejected" #dev also people can create new IPs easily #dev ah i get you #dev the only blacklist i think should exist, is if a node does something bad/misbehaving #dev ACK #dev but then it's basically impossible to blacklist them tbh #dev because they just create a new IP or tor addr #dev net code is a priority to get working, then we can review and send for audit #dev draoi: what happens if a P2P instance has no seed nodes configured? #dev it won't run #dev wait lemme check #dev we need to enable swarming support in the future, but i don't want to add new features this late in the cycle #dev but we should at least engineer it so that we can easily build this on top of the core net code #dev yeah you need some seed node configured otherwise it's an invalid config #dev if you have a seed node configured which is offline it's not a problem providing you have valid online peers in your hostlist #dev so basically swarming just means the p2p instance is created, but instead of connecting to a seed node, we request addrs for this instance in a special overlay p2p net #dev actually it would run, but won't make any connections, just running the loops and waiting for connections #dev so the overlay would have seeds, but not this swarm #dev aha great ty dasman #dev i just tested now and it gave an error with no seed configured #dev draoi: Comment the whole thing #dev i did #dev #seeds = [] #dev but also outbound loop will connect to other nodes in your hostlist #dev so it's not true it will loop forever #dev i think we can make the seed trigger process a trait #dev oh yeah my bad i had some garbage in the config #dev so yes you can run w/o seed #dev PeerDiscovery #dev Also if the app is using event_graph it will eventually fail to sync and stop #dev so this is configurable by the API user #dev dasman: unless there are peers in the hostlist it can connect to #dev (in which case event graph will sync fine) #dev Correct #dev a big function of the hostlist is to reduce pressure on seed nodes #dev seed nodes should ideally only be used once for the very first time and then never again #dev ok next? #dev ++ #dev : @zero pushed 1 commit to master: 18efbb9c28: book: expand contrib net task list #dev ^ just added those tasks to the book #dev !next #dev Elapsed time: 22.5 min #dev Current topic: runtime hardening (by haumea) #dev the WASM runtime in src/runtime/ exposes host functions to the WASM contract runtime #dev we pass data around using set_return_data(). idk if anyone is experienced with WASM, and finds anything dodgy we're doing here #dev anyway we will need to go through this at some point and do a review #dev might be errors lurking here #dev /all #dev next? #dev !next #dev Elapsed time: 2.3 min #dev Current topic: sparse merkle tree gadget for ZK (by haumea) #dev we have a sparse merkle tree impl in darkfi/src/sdk/src/crypto/smt.rs:1 #dev Yeah just needs a review but I think we're ok #dev but no corresponding ZK gadget #dev <0xhiro> just curious who is writing dev documentation here? #dev the SMT allows set exclusion proofs. right now the DAO voting could use this if this is made #dev 0xhiro: we all are #dev I'm gonna finish that this week #dev the runtime review or SMT? #dev <0xhiro> ic cos i wld like to help out as a mentee #dev SMT #dev wow that's really impressive dude #dev DOOD #dev I also kinda want to rewrite p2p #dev lol #dev Delete the bugs and shit #dev nice #dev 3rd time the charm #dev Most of our code is like that #dev one thing is that protocols are not explicitly stopped which makes implementing them easier. if they were it would be more correct, but i'm not sure it's the right move #dev In what sense? #dev upgrayedd: the whole credentials/zk thing i rewrote like a dozen times, including the zkvm. there was even a lisp version, and a version using jinja2 web macros #dev I was sarcastic, but ok :D #dev brawndo: so when a protocol is stopped, it cannot close down gracefully or close any dangling refs, but i don't think it's a bad thing #dev oh yeah i guess zkvm was 3rd time lucky #dev brawndo magic :) #dev Bonus points to whoever can see the bug here: https://github.com/darkrenaissance/darkfi/blob/master/src/net/message.rs#L153-L158 #dev haumea: It should be able to close them provided there is a tracker in the protocol #dev The dangling refs are just channels? #dev what's the bug here? #dev overflow? #dev since you already got magic bytes written #dev if package is u64::max #dev ? #dev s,package,packet #dev packet.payload #dev len #dev The bug is that the VarInt takes the string length, but we write the bytes of the string #dev So if the command is non-ascii, there's a length mismatch #dev I think it just works, but it's implied not explicit behaviour #dev lol, emoji commands are tight :D #dev yeah lol nice #dev next? #dev !next #dev Elapsed time: 11.2 min #dev Current topic: darkfid status and DRK update (by haumea) #dev ok so drk needs to be updated for darkfid, which should be getting close to ready soon #dev darkfid status: #dev the contracts in src/contract/* have unit tests should how the contracts are used client wise #dev then we have to migrate these to the new darkfid since likely the old drk tool is likely broken #dev also the CLI itself can be improved and given a bit more thought/care, maybe the way git is stateful too #dev consensus seem to work good, tested using 5 miners, all reached consensus on what to finalize, sorting out some coms bugs and then the new sync logic will be implemented #random test #random test back #random getting randomly disconnected for no apparent reason #dev sweet #dev after that I will focus on drk money stuff, to update and test them #dev can you test 5 miners on a single machine_ #dev cool #dev loopr: of course you can #dev I mean resource wise #dev How else are you gonna heat up your house? #dev contrib/localnet/darkfi-five-nodes #dev XD #dev iirc it sets up 2 threads on each miner #random then it's always a hassle to reconnect with my vpn on and it takes me like 10 times if not more #dev so you should be good with a 10 threads machine #dev ++ #dev brawndo: lol back in my gpu mining days, that was my primary heating source #dev anyway, haumea, anything to ask/add re: darkfid? #dev should i start migrating drk or wait? #dev (or if others here want a task to work on) #dev well I told you before, you can start migrating using contrib/localnet/darkfi-single-node #dev I have added the config steps you need to take #dev ty #dev tldr: miners rewards address must be the one you generated in drk #dev so you receive the miners rewards to spend #dev gotcha #dev lmk if you need any help to set it up #dev will do #dev !next #dev Elapsed time: 6.2 min #dev Current topic: event graph status update + tooling (by haumea) #dev I have already ducktape fixed scan #dev great #dev so it should work(TM) #dev dasman: any news? #dev currently I'm able to send the graph state to tui, and now working on the events update, like dnetev! #dev ok i'm not sure you even need a tui tbh #dev brawndo: btw I've also added the changing default address functionality in DRK #dev Well it was inspired by bnet #dev By inspired I mean copy paste :D #dev Cool #dev <3 #dev but it's cool to go through the list and see what's happening, like unrefrenced tips getting updated etc.. #dev aha great #dev tui :eyes #dev you send it using RPC, but could you maybe just read it from disk directly? #dev Not possible, since the db is locked to whatever app is running #dev haumea: if sled is used to store the event-graph no you can't #dev ok #dev since you can't have more than one readers #dev Yup #dev #safety_first #dev yeah but the event graph could write a separate data log #dev and that is being piped in #dev why not rpc? #dev well if you are savvy enough, you can tail -f | awk the log file #dev and generate the "recors" like that #dev that's quite fragile #dev dasman: well if you prefer rpc then it's fine too, since it's a networked component anyway #dev ok #dev !next #dev Elapsed time: 6.9 min #dev Current topic: python bindings + swiss army tool (by haumea) #dev ty #dev also another place for contributors to look into is the python bindings in src/sdk/python/, which is used a test by the ZK debugger in bin/zkrunner/ but ideally would have more bindings for working with data that is used in the `drk` tool #dev for inspiration see: https://github.com/libbitcoin/libbitcoin-explorer/wiki/How-to-Spend-Bitcoin #dev Title: How to Spend Bitcoin · libbitcoin/libbitcoin-explorer Wiki · GitHub #dev !next #dev Elapsed time: 2.3 min #dev Current topic: project wide unit tests and improved coverage (by haumea) #dev also see `make test` and `make coverage` #dev !next #dev Elapsed time: 0.4 min #dev No further topics #dev any questions/topics? otherwise we close now #dev ty frens #dev ty all #dev Me #dev for sure not a prio rn, but I am curious if other bindings are interesting - e.g. golang #dev i'm gna rm the quarantine stuff and think about offline greylist filtering #dev Thanks everyone #dev what you guys think of idena? #dev If the topics are all cleared, wanted to know where I can help with. #dev an anon version of worldcoin? #dev dune: take this to #random #dev or #markets #dev ah k #dev ash: the last couple topics were about where contributors can help out #dev we are not talking shitcoins here #dev lol #dev loopr: could be done with uniff maybe #random what you guys think of idena? #random an anon version of worldcoin? #dev you mean like a uni project? #dev ash: ^ read the meeting transcript #dev loopr: google #random not so much the coin but the mechanism it's using to determine unique users anonymously #dev yeah florida (correction: duckduck ;) ) #dev https://github.com/mozilla/uniffi-rs #dev Title: GitHub - mozilla/uniffi-rs: a multi-language bindings generator for rust #random i haven't checked it out #random what's the mechanism? link etc #dev or ash: see https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: Contribute - The DarkFi Book #dev The last points where you are working haumea #dev aa - haaaa #dev gotcha #random never heard of it, is it new? #random pangea: we are working on a new release of this chat called darkirc which will be more stable #random if it can't be duped by AI then it seems pretty clever however inconvienant compared with zero knowledge proofs and secure hardware #dev ash: unit tests (how I started, and how I should be going as well) #dev Good #random trying to find a good link with explanation #dev another Q: I am now running an ircd on a pi at home #dev What is the point "28.Tutorial creating a ZK credentials scheme." is about? #dev But if I shutdown my laptop, and connect later to it, it doesn't load missed comments #dev That only works via the weechat relay #dev http://agorism.dev/log #random but basically it sets a worldwide time for people to login and perform a series of tests that require human reasoning #dev you guys running ircd all the time, i.e. never shutting down your boxes? #dev pretty much and saying afk when not online #dev ok cool #dev loopr: you can also run weechat on the pi #dev #darkircfixesthis #dev and either ssh to it or turn weechat into a server #dev loopr: yeah I do run it all the time, darkorc will have history #dev yeah that's what I am doing on the phone #dev I guess will configure my laptop to do same #dev weechat-android gud #random the idea being that it would be difficult or near impossible to solve the puzzlesfor multiple accounts at the same time #random sounds interesting, the world needs a worldcoin alternative #random it's a captcha basically #dev are we done? #random proof of humanity stuff #random yea basically #random would be extremely handing for voting etc #random handy** #dev yy #dev Point 28 is free? #random https://hackernoon.com/innovating-identity-verification-an-introduction-to-proof-of-personhood-pop-protocols #random Title: Innovating Identity Verification: An Introduction to Proof of Personhood (PoP) Protocols | HackerNoon #dev i think so ash #random n1 #dev Ok, so I'm going to take a look about that. If someone have more context about the point 28 or does know what parts of the docs I can help please let me know. #dev Ty #dev i'm not sure that's not the easiest task #dev i mean it's not an easy task unless you've made a contract in darkfi before #dev : @skoupidi pushed 1 commit to master: 59580b55b2: .github/workflows: update apt cache before installing deps #dev : @skoupidi pushed 1 commit to master: 490615a94b: .github/workflows: update apt cache before installing deps #dev : @skoupidi pushed 1 commit to master: 57bb4f8477: darkfid: minor communications fixes #random test #random test back #random test #random test back #dev haumea: If you an easier task I can help with please let me know. #dev If you know* #dev haumea: However learn to do an darkfi contract would be cool af, as long as doesn't require too math background for me it is a good challenge #dev Still I'll wait until I carefully read the book and look tasks in the source code. #dev I'll come back in a couple days #random test #random test back #random test #random test back #random <|"p@~uh}6$]==Dub> test #random test back #dev <|"p@~uh}6$]==Dub> test #dev test back #dev <|"p@~uh}6$]==Dub> srry #random test #random test back #random test #random test back #markets wow, markets getting crazier with each day #markets while insiders like Jamie Dimon, Bezos and Zuck selling https://twitter.com/wallstreetsilv/status/1762016950329225458 #markets what could go wrong? #dev gm #markets meanwhile xmr is basically a stablecoin #markets at least milady's are pumpin #dev gm #markets XMR is a stablecoin now :D #markets I guess it's good because it's mostly used for payments #dev gm #dev gm #dev gm #dev : @draoi pushed 1 commit to master: de78b48549: net: downgrade host (don't remove or blacklist) if we can't connect #dev ^ this commit fixes the bug mentioned yday which was blocking CTRL C #dev haumea: currently there are two errors possible in the version handshake, ChannelTimeout and ChannelStopped #dev ChannelTimeout can happen when we are trying to connect to an offline node #dev ChannelStopped can happen if a node goes offline when we are trying to connect to it #dev (or more precisely, goes offline when we are trying to do a version handshake with it) #dev nice, we can also create separate light and dark grey lists for reliability in the future #dev however discriminating too much between nodes based on reliability makes the network vulnerable to sybil #dev : @parazyd pushed 1 commit to master: d9b8bcf84a: net/hosts: Drop q lock when possible. #dev from the perspective of security, having no refinery is the most secure since all nodes are randomly selected, but then it's less reliable #dev Since you're working with a lot of locks, you should remember to drop them whenever might be needed #dev i forgot the other error which is Version mismatch error #dev ++ ty brawndo #dev That would happen here: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/net/protocol/protocol_version.rs#L142-L153 #dev Title: darkfi/src/net/protocol/protocol_version.rs at master - darkrenaissance/darkfi - Codeberg.org #dev correct #dev Although there's a logic bug? #dev It's using OR #dev So it'd fail in either case :D #dev Even if minor ver is different #dev That should be fixed #dev ++ #dev quick Q tho, is ChannelStopped an bad enough offense that would make us want to forget or blacklist a node? #dev also draoi, did you see the bug yesterday bra*ndo caught, the one me and upgrayed couldn't see? #dev No, it might be a connection interrupt #dev right #dev You'd blacklist if they misbehave #dev make a Channel::ban() method which blacklists then calls .stop() #dev OK rn we have a hashset called rejected() but i can rework #dev then the protocols can call it if sth goes wrong #random test #random test back #dev : @draoi pushed 1 commit to master: 89d7a48f8c: net: fix logic bug in version exchange #dev Nice #random test #random test back #dev "tcp+tls://dasman.xyz:5262", #dev "tcp+tls://ohsnap.oops.wtf:31337" #dev are these still the seed nodes? i cannot connect to anyone on darkirc #dev ok seeding works from dasman. i guess there's no nodes online? #markets https://x.com/m1guelpf/status/1762211365530312766 #dev 10:18:12 [ERROR] event_graph::dag_sync(): [EVENTGRAPH] Sync: Could not find any DAG tips #dev 10:18:12 [ERROR] darkirc: Failed syncing DAG (DAG sync failed), retrying in 10s... #dev i keep getting that #dev my local node is on and off (testing) #dev did you just rebuild latest master? #dev yep #dev well there's issues with lilith being a different version #dev so maybe that's why #dev ok #dev i just switched on my node youcan probs connect to me #dev should I update my darkirc to the latest master? #dev if you want errorist tho there will be further changes #dev ok #dev dnet #dev dnet doesnt work for me either #dev https://agorism.dev/uploads/dnet-err.txt #dev oh nvm i reinstalled requirements.txt #dev works now #dev https://agorism.dev/uploads/screenshot-1709029405.png #dev yeah so my node shows no connections #dev : @parazyd pushed 1 commit to master: 492974eaab: zk/gadget: Implement is_equal and assert_equal chips. #dev i suspect you have no hosts #dev and your hostlist is empty #dev https://agorism.dev/uploads/darkirc.log #dev try this seed? seeds = ["tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552"] #dev hostlist is indeed empty #dev i'm connected and have a v healthy log with lots of nodes, but i've been running it a lot and have a hostlist #dev why isnt the seed node sending me hosts #dev 10:24:37 [WARN] net::session::seedsync_session: [P2P] Greylist empty after seeding #dev ok! im connected #dev : test #dev : test back #dev test back #dev nice #dev haumea: was that from connecting with the tor node? #dev yep #dev why dasman and oops node didn't send a hostlist is a mystery that should be solved #dev ideally if the seed operators can run dnet and inspect their hostlists #dev : @zero pushed 1 commit to master: 86dd32b207: fix serialization bugs in net/message.rs #dev oh tnx i was about to do that #dev np i just saw the code is redundant #dev : @zero pushed 1 commit to master: 2c0a3990ed: delete redundant debug messages from message.rs #dev : @draoi pushed 4 commits to master: 75d6dbed7a: lilith: upgrade to v0.4.2 #dev : @draoi pushed 4 commits to master: 3d020df820: Revert "lilith: upgrade to v0.4.2"... #dev : @draoi pushed 4 commits to master: b1ca14688c: lilith: upgrade to v0.4.2 #dev : @draoi pushed 4 commits to master: e6e64911b4: update Cargo.lock #dev haumea: What do you think about using https://github.com/near/borsh-rs instead of our serialisation lib? #dev Title: GitHub - near/borsh-rs: Rust implementation of Binary Object Representation Serializer for Hashing #philosophy https://www.sapiens.org/archaeology/neanderthal-art-paleolithic-archaeology/ #philosophy Title: What’s Behind the Evolution of Neanderthal Portraits – SAPIENS #dev no varints #dev upgrayedd: i've been running darkfid for an hour, but still unspent balance is 0 in drk #dev but it's mining blocks successfully #dev haumea: have you generated wallet and updated the config as per readme instructions? #dev yes sir #dev and i restarted twice, deleted dirs .etc #dev darkfid.toml says: recipient = "DnGrMAEXQV8E63nMnafHKrUpuzCEboJUCeyBFN6QwYR5" #dev $ drk -c drk.toml wallet --address #dev DnGrMAEXQV8E63nMnafHKrUpuzCEboJUCeyBFN6QwYR5 #dev did you scan? #dev ah no i'm not scanning, ty #dev lol #dev old stuff still applies #dev scanning, subscribing, etc etc #dev ok it works now #dev ty #dev always has been #dev XD #dev fun timez #dev what do i do with all this money. i have $90 already #dev Do you really need varints? #dev they are used to store the length of Vec or String. Most of the time, the length of these items is a single u8, but if you use a full u32, then that's 3 bytes extra per variable item... which seems kinda wasteful, but maybe it's not important... just don't like to waste network traffic for no reason. #dev and i thought we want to reduce dependence on external crates. well now we lost a feature in the process (regression) #dev for example imagine Vec with 20 items (like is used for addr packets). That's 20*3 + 3 wasted bytes #dev their serialization seems to be for hashing rather than network traffic #dev so it doesn't support async either #dev (as it says, they prioritize speed, whereas i think network serialization should prioritize efficiency) #dev : @draoi pushed 2 commits to master: 71b1e8ddab: channel: create ban() method... #dev : @draoi pushed 2 commits to master: 3c06e215a2: net: rename rejected to blacklist... #dev fyi we are only banning in one place rn- when notify() triggers Error::MissingDispatcher #dev nice, it will get used more for sure #random @haumea are you around? #random hey #markets errorist: are you buyin at these prices? #dev : @zero pushed 1 commit to master: c275c5c08c: darkfid-single-node README: add info about scan #markets draoi: I have few positions which i'm going to hold long term but recently sold a lot of stuff and went into stables #markets better be safe than sorry, markets seem hot right now #markets nice so you're expecting a correction #markets what about halving event, but yeah guess better be safe than sry #markets weird whitehouse announce #markets yeah lol #markets haumea: this cycle is playing out differently than before, seems like people are front running the halving this time, we could get a dump shortly before or after the halving, or even continue the rally until eoy, i'm watching stocks and macro because crypto is highly correlated #markets everyone expects a soft landing (no recession) in the us, while europe, japan and china are already in a recession #markets you see layofts all over the place in big tech while stocks hitting ath #markets if you study history and look at yield curve inversion, the crash always comes when the fed starts cutting rates #markets and they always wait too much because they use backwards looking data like unemployment to make decisions #markets ++ strong analysis #markets we'll see how it plays out but if the fed cuts this summer and stocks dump, it could drag down crypto #markets the AI thing is pumping, esp since nvidia announce. I keep seeing new announcements about AI, but seems to be pumpy hype narratives rather than real growth #markets https://www.theregister.com/2024/02/26/dell_ai_pc/ #markets > #markets Dell promises 'every PC is going to be an AI PC' whether you like it or not #markets yup, it's a bubble, who knows how long it lasts but the AI hype is 100% it'sbown bubble #markets someone compared the nvda chart to cisco during the dotcom bubble and it's 1:1 lol #markets let me try to find it #markets https://twitter.com/Barchart/status/1759797312757620961 #markets lol #markets far out #markets AI is the new buzz word, every second job ad has it now #dev does anyone own the agorism.dev site here? There's a number of resources linked to it in the darkfi book, but they're no longer on the site. I've been going through finding alternatives and plan to make a PR some time this week because there's a fair few broken links #dev bbl #dev deki: hey what's up? you mean the books or what? #dev adiyah: https://github.com/narodnik/script/blob/master/ytwatch.py #dev haumea: yes the books, for example manifesto for democratic civ isn't on the site, but referenced here: https://darkrenaissance.github.io/darkfi/dev/learn.html #dev Title: Learn - The DarkFi Book #dev I found another copy though #dev ah yeah sry i broke it yesterday #dev one sec, fixing it #dev okay, do you want me to point out other books linked to the site that aren't there? There's also the Python one in the same learn section, but there's a newer edition from last year #dev no, it should be fixed in 10 mins #random did u see my dm @haumea? #random no #random i just sent you one as a test #random do you see it? #random nah that's not coem through to the dm buffer for you that i can see #random test #random test back #random gonna have a read back through the docs to see what i am doing wrong #dev also abstract algebra by pinter #random @haumea can you share your pub key in case I got that wrong? #random wonder if it's this: https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #random Title: Private Message - The DarkFi Book #random > Note for Weechat Client Users: #random When you private message someone as shown above, the buffer will not pop in weechat client until you receive a reply from that person. #random For example here 'alice' will not see any new buffer on her irc interface for the recent message which she just send to 'bob' until 'bob' replies, but 'bob' will get a buffer shown on his irc client with the message 'Hi'. #random when i have sent narodnik or haumea msgs i now have a buffer open. but no responses from them... so seems we're in two compartmentalised buffers... #random (or i could be hotdog, not sure) #random [contact."narodnik"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random Ok, have dm'd with those key details but not seeing a response. #random just to sanity check this is the key you are using for me? #random [contact."spore"] #random ## contact public key #random contact_pubkey = "C9vC6HNDfGQofWCapZfQK5MkV1JR8Cct839RDUCqbDGK" #random Y #random yes correct #random do you have your private key in the config file? #random [private_key."XXXXX"] #random like this #dev check now #dev https://agorism.dev/book/ #dev Title: Index of /book/ #dev also we should use #random for this in the future #dev yeah they're showing now, okay I have others not related to agorism.dev so might do a PR some time this week, need to go to bed soon #markets yeah, every new tech is being pumped nowadays, then crashes. Metaverse, NFTs, even crypto itself... #markets lots of pundits also claiming stock market indices are manipulated, not reflecting real state of economy. Tend to agree #dev nice gn deki #dev : @parazyd pushed 1 commit to master: caac0f9bec: zk/gadget: WIP sparse Merkle tree gadget implementation... #dev \o/ #philosophy https://aeon.co/essays/the-strange-and-turbulent-global-world-of-ant-geopolitics #philosophy Title: The strange and turbulent global world of ant geopolitics | Aeon Essays #philosophy "there are roughly 200,000 times more ants on our planet than the 100 billion stars in the Milky Way." #philosophy wtf #philosophy 20 quadrillion ants #philosophy lmao #philosophy ant planet #philosophy > Ants, however, operate differently by forming what the ecologist Mark Moffett calls ‘anonymous societies’ in which individuals from the same species or group can be expected to accept and cooperate with each other even when they have never met before. What these societies depend on, Moffett writes, are ‘shared cues recognised by all its members’. #philosophy lmao ant DAO #philosophy reminds me of this chat where identity is de-emphasized and instead the concrete specifics take center stage #philosophy similar to IRC in general or 4chan #philosophy except instead of chemical badges, we use signs #philosophy "cypherpunks write code" #philosophy similar ethos #philosophy sick #philosophy would be nice if humans in general were more cooperative instead of working against each other #philosophy https://satyagraha.wordpress.com/2010/08/19/pitirim-sorkin-crisis-of-modernity/ #philosophy Title: Culture in Crisis: The Visionary Theories of Pitirim Sorokin | Satyagraha #philosophy in ideational ages, the cultural works were not attributed to authors #philosophy cathedrals built over multiple generations #philosophy sensate ages such as (neo-)modernity are associated with celebrity and the cult of self #philosophy in some sense communism was a desire to revive earlier notions of community #philosophy there is hope #philosophy > Invasive ants are prone to population crashes for reasons that aren’t understood #philosophy > [a] potential issue is that the ants’ lack of discrimination about whom they help may also favour the evolution of free-riding ‘lazy workers’ in colonies, who selfishly prosper by exploiting their nest mates’ efforts. #philosophy > it’s assumed this uneven distribution of work may eventually lead to social breakdown #philosophy > insects are like Rorschach tests. Some people see his research as evidence that we should all get along, while others see the case for racial purity. #philosophy Argentine ants kill 9/10ths of their queens every spring #philosophy we can learn from the ants #philosophy XD #philosophy ofc the cuck article says: #philosophy > seemingly clearing out the old to make way for the new – is enough to deter parallels between ant societies and human politics? #philosophy imagine if political campaigns were deadly #philosophy and bad leaders were executed after their term #philosophy https://satyagraha.wordpress.com/2021/06/30/sorokin-altruism/ #philosophy Title: Pitirim Sorokin: Techniques for the Altruistic Transformation of Individuals and Society | Satyagraha #philosophy "Under the rubric of “Idealism” Sorokin understood the broad Platonic view of the unity of the True, the Good, and the Beautiful." #philosophy i didn't realize the "true, good and beautiful" was a platonic thing #philosophy nietzsche rages against plato/ the trinity pretty hard in will to power #philosophy basically he sees conventional christian morality as slave-like and life-denying #philosophy (platonism as preserved in christianity) #philosophy he says plato's distinction between appearance and reality is literally upside down #philosophy does that refer to the platonic ideal? so reality -> appearance #philosophy > Sorokin: "A masterpiece of painting or sculpture, the Parthenon or a great cathedral, uplifts us in the realm of creative spirit more efficiently than a statistical diagram, mathematical formula, or a chain of impeccable syllogisms can do." #philosophy what a load of bullshit #philosophy i wonder what he would say about 3blue1brown #philosophy i like this quote from nietzche: #philosophy "An artist cannot bear reality, he turns away from it, his sincere opinion is that the worth of a thing consists in that dim impression of it which one derives from colour, form, sound and thought, believing that the more rarefied, diffuse and vaporous things or men become, the more valuable they become: the less real they are, the greater their worth. This is Platonism; and it boldly reverses #philosophy yet another thing – for Plato measured the degree of reality by the degree of value, saying: the more ‘idea’ there is, the more being. He turned the concept ‘reality’ round and said: ‘What you believe to be real is an error, and the nearer we come to the “idea” [the nearer] we are to “truth”.’ Is this understood? It was the greatest of all rebaptisms; and because #philosophy Christianity adopted it, we fail to see how striking it is. Essentially, Plato, like the artist he was, preferred appearance to being; and thus falsehood and fiction to truth, the unreal to the real – so convinced was he of the value of the appearance that he attributed to it ‘being’, ‘causality’, ‘goodness’, truth and everything else we value." #philosophy ic, valuing reality for how closely it embodies the abstraction #philosophy ++ #philosophy brawndo: https://docs.emailengine.app/how-i-turned-my-open-source-project-into/ #philosophy Title: How I turned my open-source project into a business #philosophy released under MIT but got exploited #philosophy eventually goes full proprietary lol #philosophy kek #philosophy https://www.gravatar.com/avatar/0bc4849da2f3ad66fe4d3fa53a3d45f2?s=250&d=mm&r=x #philosophy soyjak #philosophy fat soyjak normie #random ok, **think** figured out the issue #random [contact."spore"] #random contact_pubkey = "B5MxuXnLWawwEhoxW5hr6MRtDHpF8tJd3QFGsja7oEeV" #random @haumea can you message me to this key? #random ok spore #random spore: check DM #random added new key and restarted #random tets #random test #random test back #random just dm'd but is going to old buffers can't see a response. thought it may have been that I didn't save the private key correctly so regened and saved and restarted the irc server #random test #random test back #random this takes me back to gpg early learning lol #random can you share your config file but change your private key to XXX #random yeah hang on #random also which file are you using for ircd_config.toml? #random is it in ~/.config/darkfi/ ? #random or where is it? #random /home/spore/.config/darkfi/ircd_config.toml #random are you running ircd as your normal user? not as root (using su or sudo)? #random https://ctxt.io/2/AAAISkcPEg #random Title: Context – share whatever you see with others in seconds #random can you delete the last 2 lines #random you have the pubkey added for both narodnik and haumea #random so just pick one nickname #random test #random test back #random running it as normal user not with su or sudo #random ah great #random did you see my message as well? #random can you delete the last 2 lines? #random you have the pubkey added for both narodnik and haumea #random so just pick one nickname #random ok, just DM'd nardonik #random ls -l /home/spore/.config/darkfi/ircd_config.toml #random ^ can you show me what this says? #random -rw-rw-r-- 1 spore spore 2804 fev 27 16:59 /home/spore/.config/darkfi/ircd_config.toml #random ok looks good #random [contact."haumea"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random [contact."narodnik"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random you see these lines? they're duplicate #random can u try to dm to me again... see if issue has been resolved by removing the duplicates #random can you delete 2 of them? #random yes #random yep have done #random i DM'ed you repeatedly so not yet working #dev : @parazyd pushed 1 commit to master: 29a783f49e: zk/gadget: Finish SMT gadget #dev haumea: Want to attempt adding it to the VM to familiarize yourself with it? #random ok - thank you for your persistence #dev yessir #random thanks for your patience #random mind to share your config again? #random yep hang on #random (remove privkey) #dev These two sets of columns you have to additionally create, or find some to reuse: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/zk/gadget/smt.rs#L76-L77 #dev Title: darkfi/src/zk/gadget/smt.rs at master - darkrenaissance/darkfi - Codeberg.org #dev (I still don't know fully how safe reusing columns is) #dev And for Poseidon you also should reuse the existing config: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/zk/gadget/smt.rs#L78 #dev Title: darkfi/src/zk/gadget/smt.rs at master - darkrenaissance/darkfi - Codeberg.org #dev The chips create their own selectors #dev Also note it requires a column for each height level in the tree #dev So there will be a tradeoff between proof size and the tree width #dev But I think in a sparse tree, 3 levels is sensible, no? #random https://ctxt.io/2/AAAI1WBmFQ #random Title: Context – share whatever you see with others in seconds #dev i was thinking more like 32 #dev same as the normal merkle tree for coins #dev then adding all money nullifiers, so when we clone the money tree, we can also clone the nullifier tree #dev The coins tree is not normal #dev It's a tree that keeps the minimum needed #random yep it looks perfect #dev A sparse tree just grows #random can you try running: #random ircd --config /home/spore/.config/darkfi/ircd_config.toml #random ? #dev ah yes i forgot #dev right the height is for efficiency #dev I dunno, 32 columns sounds scary #dev ok then it sounds good, we can test later #random ok, have done that and tried to dm again :-) #dev reusing columns should be safe unless halo2 doesn't protect against that #dev i guess it limits the "slotting" together of chips #dev The layouter/regions do some black magic #random gonna have to run again for some hours. errands. will keep coming back to try and figure out. may be worth, may not be. fun excuse to be in irc again tho. #dev the gates use columns but they're distinct from them #dev a gate uses some number of distinct columns #random ok cya later #random i wonder why everyone thinks irc is dead/an old thing, seems very alive and well to me on libera and oftc #dev Those are the columns you create during configuration #dev You'll create these beforehand: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/zk/gadget/is_equal.rs#L62 #dev Title: darkfi/src/zk/gadget/is_equal.rs at master - darkrenaissance/darkfi - Codeberg.org #dev yep just saying the layouter (if done properly which i assume it is), should be smart enough not to reuse the same column on the same row #dev And then you see https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/zk/gadget/is_equal.rs#L66-L69 #dev Title: darkfi/src/zk/gadget/is_equal.rs at master - darkrenaissance/darkfi - Codeberg.org #dev Yes likely correct #dev nice will eat now, and begin on this tmrw #dev also will start updating drk, and want to allow configuring generators in zkas #dev does someone have to add me to the repo on codeberg or is it public? #random https://shivering-isles.com/2017/08/why-irc-is-not-dead #random Title: Why IRC is not dead #random https://hackaday.com/2021/05/22/irc-will-never-die/ #random Title: IRC Will Never Die | Hackaday #dev can't find it #dev ok, enjoy #dev I'll be afk tomorrow mostly #dev loopr: Can't open the above links I was pasting? #dev brawndo; I actually can #dev After my account was activated I was presented with a repo search field, and entering darkfi wasn't showing anything #dev ah dunno what's going on there #random oh 100% don't fink irc is dead, just that things i have been doing have not oriented around irc #random WTF is going on with these DMs tho. bet it's gonna be something real hotdog i'm doing. #random yeah strange idk #random spore, whats your issue? You're not receiving DMs? #random SIN yeah #random Have you followed the syntax in the ircd_config.toml file for adding other's pubkeys? #random [contact."contactname] #random contact_pubkey = "publickey------------------------" #random yes #random shared config with haumea who thought it looked ok #random folks who've move on to discord/slack and other irc like proprietery apps believe irc is dead #random it comes down to use cases and feature sets available for irc client users to manage their workflows within a FOSS framework #random i assume you've restarted your ircd spore? #random off to sleep, gn all #random spore: SIN can help you #random ircd --config /home/spore/.config/darkfi/ircd_config.toml #random this is spore's config file: https://ctxt.io/2/AAAI1WBmFQ #random Title: Context – share whatever you see with others in seconds #dev gn #random spore you can reshare using https://ctxt.io/ as that old one expired #random Title: Context – share whatever you see with others in seconds #dev gn #random so happy be leaving slack behind #random so much bloated stuff just to make things *seem* nicer #random irc got the messaging stuff right from the start #random so many years #random @sin here you got, tysm #random https://ctxt.io/2/AAAIacasEg #random Title: Context – share whatever you see with others in seconds #random @sin yes restarted ircd #random you'll notice a copy paste duplication in there #random but u get the picture #random test #random test back #random you avail to test a DM spore? #dev Hi devs, I'd like to sync my effort better (as my recent docker/arm related PRs were closed) and help the darkfi project #dev busy atm, but may be kicked out soon, you know, contracting ... I'd like to use AI to help with code quality check, improvements, unittests, ... #dev what do you think ? #dev root: they have the current tasks here https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html although you need to know Rust #dev Title: Contribute - The DarkFi Book #dev gm #math We assumed that an automaton works in a framework of discrete time steps, but this aspect has #math little influence on our subsequent discussion. In digital design, however, the time element assumes #math considerable significance. #math In order to synchronize signals arriving from different parts of the computer, delay circuitry is #math needed. A unit-delay transducer is one that simply reproduces the input (viewed as a continual #math stream of symbols) one time unit later. Specifically, if the transducer reads as input a symbol a #math at time t, it will reproduce that symbol as output at time t + 1. At time t = 0, the transducer #math outputs nothing. We indicate this by saying that the transducer translates input a1a2… into output #math λa1a2…. #math Draw a graph showing how such a unit-delay transducer might be designed for ∑ = {a, b} #math The answer is https://pasteboard.co/svX8dPQIOYeQ.png #math Title: Pasteboard - Uploaded Image #math can someone explain to me what is a/λ #math a/a, b/a etc. i understand the first as input but what is the significance of second character after / #random test #random test back #dev gm #dev root: lol at AI and code quality in same sentence... #dev please don't do that... #dev hi #random hi #random hello alice #random i have posted a query in #math i need some help #math i think the second character is output isnt it #math alright guys i think i figured this out a bit whatever i understood #random do you guys use any nootropics. #random like nicotine #random one of my targets is contribute to darkfi. i like the concept. i came across it in a podcast featuring Amir Taaki #random but i dont know everthing. i need to learn #random i like the vision #random ping #random test #random test back #random alice: just caffiene and occasionally lions mane #random https://darkrenaissance.github.io/darkfi/dev/learn.html #random Title: Learn - The DarkFi Book #random draoi: i am also taking coffee but with cigs #random so the wiki recommends ubuntu manjaro. they should instead recommend something like devuan for beginners #random it matters little though #random also im having problems with darkirc. i am using ircd which works. #random darkirc says DAG errors. maybe it has no seeds or something #random anyways ircd works #random welcome alice #random coffee with cigs = european breakfast :D lol #random alice: the default darkirc seeds do not work #random you need to modify ur config with one of the actually active seeds #random errorist can help you :) #random so if i make my own ircd seeds and distribute it privately only among some selected peers will this be our(the selected peers) only network #random draoi: is it there in the wiki how to create my own seeds. seems like i can make some application for messaging sometime #random for ircd #random errorist: cheers you too #random alice: peers share info about the network w each other, but providing you restict which nodes are on your network then yes you can make a private network. not sure why you'd want to tho as we have encrypted channels and DMs #random there is a tutorial on how to make an app on the p2p network here https://darkrenaissance.github.io/darkfi/learn/dchat/dchat.html #random Title: P2P API Tutorial - The DarkFi Book #random in the future we will implement swarming like on torrents so we will have multiple subnets on a single overlay network #random draoi: i found the wiki page. damn there are many books to read. guess i will be busy #random i have 2 months freetime at hand so no problemo #random alice: you can add these seeds for darkirc, these should work atm: seeds=["tcp+tls://ohsnap.oops.wtf:31337","tcp+tls://dasman.xyz:5262","tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552"] #random I can hep you spin up seeds if you want, was thinking of doing a small doc on darkirc and lilith #random alice: wanna exchange keys and we can DM? #random okay i will add errorist. yes the doc will be great #random errorist: sure hold on i need to look at the wiki how to dm #random [contact."errorist"] #random https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #random Title: Private Message - The DarkFi Book #random contact_pubkey = "855RitmfR499dBRGFFZHH33vCBxF77q8D3uX65vSFW52" #dev : @draoi pushed 1 commit to master: 532168fea8: doc: small fixes on learn.md #random take your time, you need to generate your key, add secret to the config and my contact, restart ircd and give me your pubkey so I can add you and also restart, then we can test dm #random brb #random test #random test back #random okay errorist: my pubkey is JD3M9mwssFBB9sckhw7uQuveLQ5LDaVvgEYWCuyLvqBC #random test #random test back #random test #random test back #random do you see my message errorist #random test #random test back #random i see the buffer do you #random alice: gimne a few mins, need to add your contact and restart #random okay #random test #random test back #random test #random test back #dev gm #random alice: msged you now too #random errorist: found your message #dev root: i think that you need to stop using flashy gimmicks, just sit down, open notepad.exe and write code #random nice! #random test #random test back #random test #random test back #dev brb #random test #random test back #dev b #random test #random test back #random hey drnick #random you made it :) nice #random haha cool! #random welcome #random drnick: take a look at https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #random Title: Private Message - The DarkFi Book #random yep made it in! nice one will check out the link #random <3 #random drnick: you can add my contact in the config and share your pubkey so we can DM, lmk if you need any help #random [contact."errorist"] #random contact_pubkey = "855RitmfR499dBRGFFZHH33vCBxF77q8D3uX65vSFW52" #random just make sure you generate your pubkey with ircd --gen-keypair, add the secret to the ircd_config and restart ircd, then we can test DMs #random : test #random test back #random : test #random : test #random : test #random : test #random test back #random : test #random : test #random : hello #random : test #random test back #random test back #random test back #random : test back #random : test back #random : test back #random : test back #random : test back #random : test back #random : test back #random test back #random test back #random : haha opps #philosophy https://phys.org/news/2024-02-neanderthals-usage-complex-adhesives-reveals.html #random test #random test back #random alice: ircd messages are not mirrored to darkirc, just fyi #random but darkirc messages are mirrored to ircd #random oh so thats why no test back in darkirc #random there is test back #random : test #random test back #random : test back #random test #random test back #math https://eprint.iacr.org/2024/310.pdf #math alice: you want to go on Libera IRC #physics #random : test #random : test #random test back #random test back #random : hi draoi F?dT#c|P[ #random : test #random : test #random : test back #random test back #random test back #random : scary bot activity lol #random : test #random test back #random : test back #random draoi: I also don't see the testback in darkirc #random but I see it here #random I helped alice setup a seed and tor node and he has the same problem, wonder if it might be something with our configs #random but I remember dark-john also having the same issue #random im looking into it #random i mean my config #random test #random test back #math haumea: okay #math i'm narodnik on there #math also #math, #engineering #random : test #random test back #random : test back #random we got alice running a tor node :) can connect to his/her node #random nice, I remember having issues with that so used some work around, will try it again this week #random deki: lmk if you need some help, we can exchange keys and DM #math okay i will ping you there if i join libera.chat #random : hey idk why you guys can't see the bot #random : i see a lot of test and test back msgs #random errorist: ty, will likely reach out later this week when I try it again :) #random : anyway, we have to debug some stuff related to the event graph #random : sending works fine, but receiving only when I restart darkirc #random : test #random : test back #random test back #random : sounds like an issue with the event graph #random : (thing we are building a debugger for) #dev : @draoi pushed 1 commit to master: ecf81d9f93: net: make a generic base class for PeerDiscovery... #dev haumea: super basic rn #dev i will add documentation later, gtg afk for a bit #dev gm #dev gm #dev greets #random test #random test back #random test #random test back #random test #random test back #philosophy https://www.theguardian.com/environment/2024/feb/27/microplastics-found-every-human-placenta-tested-study-health-impact #philosophy Title: Microplastics found in every human placenta tested in study | Plastics | The Guardian #philosophy :// #philosophy fucked up #philosophy I need to stop drinking that bottled mineral water lol #philosophy some people use water filters but I don't trust them, god knows what chemicals they use in there, maybe there is a good drinking water filter system but i'm not aware of #philosophy buy glass bottles? #philosophy or drink from the tap where available #philosophy yup #philosophy unless you're in India... :) #philosophy that's why "where available" #random test #random test back #dev test #dev test back #philosophy distill your water #philosophy store it in copper #philosophy avoid tap where possible #philosophy and plastic bottles #philosophy copper structures the water #philosophy distillation removes impurities #philosophy speak positive affirmations to the water before drinking #philosophy or atleast think them #philosophy could also go to a creek or aquafir and bottle up some of that water in glass #philosophy artesian wells #random https://www.archdaily.com/944429/hemp-concrete-from-roman-bridges-to-a-possible-material-of-the-future #random Title: Hemp Concrete: From Roman Bridges to a Possible Material of the Future | ArchDaily #philosophy sabadi: when distilling it also removes all good minerals (like found in artesian water)... when you store distilled in copper do you add minerals? #philosophy sabado: " #philosophy I take pinches of salt thru the day #philosophy I get minerals in my food thru the day as well #philosophy a very nice salt, can #philosophy not remember specific, but something like himalayan #philosophy one of my friends adds minerals to his distilled water #philosophy thank you for mentioning that #philosophy thanks for the water reminder, i focus on quality of water but not as much container its coming in. way too many plastics, even buying distilled or artesian in large quantities comes in big plastic containers :/ we can add to a copper bottle but if it first showed up in a big plastic jug, the harm is already done #philosophy makes me long to be back in Wien, Austria where the tapwater is the freshest in the world and there are fountains all over the city to refill from #dev gn(u) #random test #random test back #random *inhales joint* "hemp maan" #dev gn, gm here #random xD #dev : @dasman pushed 4 commits to master: 532d67e972: src/eventgraph: support debugging msgs #dev : @dasman pushed 4 commits to master: bc1f903d57: bin/deg: introduce eventgraph debugging tool DEG #dev : @dasman pushed 4 commits to master: 8f281cf354: bin/deg: .gitignore #dev : @dasman pushed 4 commits to master: 47a319fd00: bin/genev: add deg task and related rpc calls #dev : @dasman pushed 1 commit to master: 103e7b64f8: bin/genev: add dnet task & rpc calls #dev one can test event graph tool with bin/genev, which is a very simple app that was originally made to get into event graph stuff #dev check /script #dev also draoi I'd really appreciate if you take a quick skim over deg :) #dev * oops, bin/genev/script #random in darkirc i get "malicious" event sent by the node vmkrd3y4tn2igrfegxtpme64h4tcxpkiw37nyhuhafpc342uhkbhonid.onion #random what is malicious #random here #random test #random test back #random https://darkrenaissance.github.io/darkfi/misc/event_graph/event_graph.html #random Title: event_graph - The DarkFi Book #random okay then here it is said the event is validated #random doesnt marijuana kills neurons. so it is not good #random or it doesnt .. #random hi #dev are slot checkpoints like blocks? #dev which one are we at? #dev moco: I don't think they're the same, and I don't think we're at any specific point because there hasn't been a mainnet release yet #dev but best to wait for one of the devs to answer #dev Is chat history preserved when messages are sent to the channel and you are not online or can you only read messages received while online? #random test #random test back #dev гм #dev gm #dev gmog #dev gm #dev gm #dev moco: only when you're online for ircd, but darkirc preserves msgs for 1 day #random [contact."narodnik"] #random contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #random test #random test back #dev afk #random test #random test back #dev dasman: around? #dev https://0x0.st/HRxr.pdf #dev : @skoupidi pushed 1 commit to master: 9643b5af87: rpc/from_impl: proper event-graph feature usage #random test #random test back #dev brawndo: fyi working on a net change that will simplify a lot of the locks etc #dev happy to pass it over to you after #dev Well let's hope that resolves bugs :) #dev upgrayedd: hey, what's up? #dev dasman: check 9643b5af87 #dev you shouldn't push stuff without checking building pashes #dev especially when features are involved #dev ah sorry about that #dev ty #dev : @skoupidi pushed 2 commits to master: d920493173: rpc/client: new RpcChadClient added #dev : @skoupidi pushed 2 commits to master: dc6f4ecd6c: darkfid: replaced RpcClient with RpcChadClient #random anyone follow this blog? https://blog.lambdaclass.com/ talks a lot about ZK/crypto topics, seen him recommended a fair bit #random Title: LambdaClass Blog #dev : @skoupidi pushed 1 commit to master: d7495510dd: darkfid: better locks handling and minor code improvements #dev afk #random test #random test back #random erwin :D #random :) #random Public key: 2p4fv63Wa9gjRkQXPjA4hFAdLVhHrLfm39QhF3fQAmEh #random test #random test back #random trying to connect to libera, need sasl connection and registered account but can't get one without the other #random anyone know how to proceed? #random you should be able to register your nick w/o an sasl connection https://libera.chat/guides/registration #random Title: Nickname Registration | Libera Chat #dev draoi: I just experienced a death loop, running genev tmux script, I just closed node_d and the a, b and c nodes are now connecting to it endlessly #dev 16:10:03 [INFO] [P2P] Connecting outbound slot #3 [tcp://127.0.0.1:28885] #dev I understand you're already working on peer discovery, but thought I'd report it anyway #dev anyway, going afk for a bit #dev yeah master is pretty much broken rn, sorry about that #dev it's stable at 661935018707b11031df10330f02a282f432a76f tho not for nodes that want to go offline for long periods and reconnect seamlessly #dev should have a fix by 2m #dev going afk for a bit now also #random hey erwinsmith #random test #random test back #random erwinsmith: added you to my config. did you add me? #random sent you a DM as a test #dev back, hey #random haumea: can you send me DM as test as well? #random Public key: #random FaCKKQT355X36WGz1ABh9KM29HAUrH96iwkTDNxbgMRU #random test #random test back #random replied back at ya #random haumea hello #random hihi #random are you amir taaki #dev Seeing tests failing on `master`, is that smth on my end or a known issue rn? #dev loopr: did you pull latest commits? #dev yep #dev which tests are failling? #dev but from gh #dev haven't set up codeberg upstream yet #dev sounds like it's on my end then #dev error[E0433]: failed to resolve: use of undeclared crate or module `darkfi_sdk` #dev --> tests/vdf_eval.rs:26:5 #dev is the 1st one of others #dev yeah that doesn't sound right #dev just ran `cargo test` on master #dev use make, its there for a reason #dev yeah that fails as well #dev cp -f ../../../target/wasm32-unknown-unknown/release/darkfi_deployooor_contract.wasm darkfi_deployooor_contract.wasm #dev aah hang on #dev wasm-strip missing #dev installing `wabt` brought me step further, but still failing (had run sh contrib/dependency_setup.sh before but seems that didn't install it) #dev ah yeah if it's missing for your distro, pls add it #dev In that script #dev ok - using manjaro #dev Cool #dev now getting error[E0658]: use of unstable library feature 'stdsimd' #dev https://github.com/darkrenaissance/darkfi?tab=readme-ov-file#living-on-the-cutting-edge #dev Title: GitHub - darkrenaissance/darkfi: Anonymous. Uncensored. Sovereign. #dev brawndo: iirc manjaro uses pacman like arch, so deps should be there #dev yeah that's what I was looking at #dev yep pacman #dev Yeah #dev What's the package name? I can add it now #dev have fun supporting trash distros :D #dev no worries I know my way around #dev claiming manjaro is trash is a bit of a mouthful tho :) #dev at least stuff doesn't break from one day to the other #dev https://github.com/rust-lang/rust/issues/48556 #dev Title: Tracking issue for stable SIMD in Rust · Issue #48556 · rust-lang/rust · GitHub #dev not sure if that's at the root of things but checkin #dev https://github.com/Kixiron/size-of/issues/4 #dev Title: Nightly feature stdsimd fails due to removal of the unstable stdsimd feature · Issue #4 · Kixiron/size-of · GitHub #dev loopr: the underlining issue is that deep deps must update to stable simd, and then their parents update their version, etc. etc. until you reach top of dependency tree #dev manjaro is trash its not a bit of mouthufl, acthually it comes really natural after you get used to saying it :D #dev this doesn't break until they forget to update some random certificate :D #dev okey doke what do you run? #dev my daily drivers are gentoo and void #dev the gud stuff #dev ufff well have fun, dunno void tho #dev its good :D #dev although I mainly suggest devuan these days, since debian based and >90% of guides use apt #dev so you will always find quickly what you look for #dev kk but me no like debian unless I have to run a server or smth #dev alpine for servers :D #dev ok tried make on an independent ubuntu (gosh) box and got nearly the same on master #dev error[E0635]: unknown feature `stdsimd` #dev 33 | #![cfg_attr(feature = "stdsimd", feature(stdsimd))] #dev loopr: of course, use the #living-on-the-cutting-edge stuff #dev okey doke, just was wanting confirmation that it's not my trashy manjaro ;) #dev no thats rust new version and the deep deps mentioned earlier #dev welcome to nightly life #dev nigthtly_life.mp3 #dev thanks upgrayedd #dev loopr: for what? #dev support, works on master now #dev oh noice #dev glhf hacking #dev ++ #dev my (now closed) PR might help too :: https://github.com/darkrenaissance/darkfi/pull/253#issuecomment-1953943553 #dev Title: stdsimd-removed-use-nightly-202402 in rust-toolchain.toml by spital · Pull Request #253 · darkrenaissance/darkfi · GitHub #dev re:: upgrayedd | root: lol at AI and code quality in same sentence...:: some years ago my friends doing translation were laughing to CAT too. They are not anymocomputers+translation too. they have no job today. I even dare to say I can smell your fear ;) no offence #dev when stating something either stand by it or don't say it at all, so cut the "no offence" part #dev My problem is not with current state of AI per se, but with what people market it to be #dev and no, I will never be afraid by something that I know the inners workings of #dev why would I? its like saying a mechanic is afraid of a car engine #dev so since current state is literally garbage, I will obviously laugh at such sentences #dev Happy to see the technology grow and become better, but right now, its laughable #dev ACTION drops mic #dev re::haumea | root: i think that you need to stop using flashy gimmicks, just sit down, open notepad.exe and write code:: long time ago I was able to write hex codes for Z80 and some for x51 too. why bother today. I can prepare example of what I mean. I did rustlings in notepad. But remember asking chatGPT harder questions and was thrilled. I wrote codility challenges in "notepad" too. but be warned, #dev it usually takes hours to solve it right for easier tasks, and AI gave (15 months ago) the result in seconds.and often correctly on first try. What it can do today ? I believe even with my single GPU it can do a lot ;) but if there is no interest, I accept #dev re :: upgrayedd :: I did not want to argue or attack, hence "no offence". but again, if there is no interest in my help, I accept #dev root: since when discussing your opintion is argueing or attacking? #dev we ain't snowflakes here, feel safe to express yourself #dev well .. do you know what opinion is like ? #dev We obviously are interested in your help, hell you don't even know how many times I praised you and got thrilled when saw a new PR by you #dev the problem is, that you have to understand, we don't want to pollute or bloat our codebase with garbage #dev especially if you don't understand why that is. #dev root: obviously, the word was specifically chosen for that reason, its called wordplay :D #dev (re "opinion") #dev thank you. I am glad I was able to help a bit #dev And I love challenges (as with Codility mentioned above) so let's try one here: You give me an easy task (programming or whatever), I give you (mostly) AI generated answer. I hope you stand to your words too, so as no snowflake you are not afraid if the result makes you stop laughing at AI. #dev to me just the word AI itself is laughable - there is no such thing as AI, it's just code doing its stuff. But that's adifferent story #dev code creating code :D #dev then why you use it? it should be better to use language prediction models, since thats what you are mainly using #dev ask it to describe it like I'm 5 what a gravitational lense is and how it affects the redshift of preceived light #dev I still don't see your argument, even if the response is correct, why would that make me stop laughing, since I know how it "thought" of it #dev its nothing "new" or "groundbreaking", so coming back to the engine example, producing a "faster" engine, doesn't change the fact of how it works #dev oh apologies root, i didn't realize you were so old school #dev "even if the response is correct" - I do not get it - do you want your tasks solved or not ? Do you stand to the challenge or not ? #dev we get a lot of beginners here who think using vscode and AI will do programming for them #dev anyway off to sleep, cya tmrw, gn #dev no need to apologize. gn haumea #dev root: The point is not "solving" the task, is understanding and/or learning how it solved #dev growth is name of the game, not finishing something just for the sake of it #dev at least thats my mentality #dev I told you ask, so yeah I'm up for the challenge, so shoot! #dev ok. I needed another wine :D I agree about learning - but why learn something "lower level" - that "in theory" - can be described by: define task,ask genAI/agents to solve it, tests the results, (repeat), review, test, send PR for review ? so shoot what ? I can shoot only like average in real life, was better in games #dev shoot as in I've already mentioned the "challenge": ask it to describe it like I'm 5 what a gravitational lense is and how it affects the redshift of preceived light #dev root: why learn something "lower level": curriosity is the simplest answer, the most proper one is to become more efficient in understanding how to do the rest parts of the flow you described #dev what do I test against if I don't know what the hell I'm testing? #dev or how do I review something if I don't know how it's supposed to work? #dev taking "correctness" of said agents for granted is a foolish mistake imo #dev additionally, ofloading that to someone else is even worse (send PR of review) #dev since you will not be able to understand the review, and simply pass it back to the agent to "solve" your supposed mistakes #dev then the question is, why act as the middleman in the first place? #dev if repo owner wanted, they could easily employ code bots to do pretty much everything #dev but is the technology there? #dev you as an enthusiast and defender, feel that you would trust that generated code competelly? #dev again talking at its current state, when it becomes better we can come back to this discussion and laugh #dev s,competelly,completely #dev I saw youtube videos about quantum computers - maybe it was not AI - explain for 6yo, high school, university, field specialist, but that was not my point and it is not a task I would like to prove AI use. I remember asking about parsec and au and other questions and even 7B network gave me fine answers (I am not 5 yo, so I did not ask for that) #dev the development is an iterative process, sometimes you just "do not know" ... #dev The reasonning behind the 5yo is very simple: the best way to see if you understand something, is to try explaining to your mother(or a 5y old) and they get it #dev so by making that prompt, you will see that it doesn't simply spit the first wiki result #dev (which I would have done faster) #dev so you test the I in AI that way #dev or - if you do something and you are not able to explain to 5yo - stop doing it :D #dev exactly! #dev sometimes you just "do not know" #dev care to elaborate more? #dev because I don't like what I percieved from that statement #dev in the sense that, do you stop and take for granted, or you mean you learn until you know? #dev the keyword is "iterative process" - me or anybody in the team as long as it goes forward #dev aha ok now I got #dev food for thought: can we trust "ai" generated code? Is "ai" code always good because it was made by "ai"? what when we start trusting it and then all sorts of hacked ai starts to appear? good luck debugging code nobody wrote. As with everything, it's not just good or bad, just a whole new rabbit hole of new possibilities and new problems #dev still someone has to know #dev loopr: exactly, hence why in my original argument, I specifically stated that I'm against how current state is marketed #dev well "someone" like a "bus factor" of 1 ? #dev lol #dev did you check the ceo of nvidia speach couple of days ago? #dev everyone will be a developer because of AI #dev gl debugging then :D #dev he was always great in advertisement, but I saw potential many years ago. unfortunately sold all my stocks before AI craze #dev why tho? the gaming dominance should have at least tell you it will stay steady #dev but thats a discussion for #markets XD #dev anyway back to original convo #dev as you said, advertisement #dev I had worst money decisions :D yep #dev hence why back in the first argument, I explicitly said I don't like how they market the current state #dev ^ "he was always great in advertisement" #dev yy just saying, marketing is a hype trap #dev gravitational lens and redshift : wow if I had that when I was 5 :D https://0x0.st/HR0Z.txt #dev root: for a language prediction model, thats decent, but still not impressive in my book :D #dev last time I used AI/LLM to help with writing code, it took me down a rabbit hole where it totally misled me, got functions in the plugin wrong (which was an open source plugin), and I wasted more time than if I had not used it #dev this was for a C++ task at work last year, and that's probably the last time I used it for 'writing code' lol #dev you may call it lang prediction or "stochastic parrots" or any you like, but that does not change the present state is already quite good and it should make you stop laughing at AI (and rather use it). try to imagine, what will come (as my friends in translating business were not able to) #dev re- deki - I am not saying it is (nether was) perfect - but again - who is ? imagine 64% good - like for MMLU - that even 7B model can be... #dev but let's get back to darkfi. I had strange error recently. I had to increase to SHM=256m for docker build on x64 (only for debian). but I am not able build (e.g. fedora) docker on ARM even if SHM=4096m ... seems strange... any ideas ? #dev I'm not sure about that #dev I'll check later, this output tail is with less (than 4096m) SHM https://0x0.st/HR0b.txt ;wine bottle finished, gn #dev that doesn't look like a build problem though, rather a test failing, and possibly a bug? #dev should be fixed after latest commits #dev ++ #dev codeberg down #dev https://imgur.com/Ab5HW5P #dev Title: Imgur: The magic of the Internet #random if you are im a fan #random test #random test back #dev gm #dev hihi #dev gm #dev no #dev gm #dev gm #markets got a token airdropped on blast l2, worth 40k just for holding some nfts lol #markets crypto is crazy #markets "The market can stay irrational longer than you can stay solvent" #markets guess we are at this stage now #markets congrats, wish i were that lucky #markets thx #markets lots of people hate on Blast L2, but they did something smart, enabled people to bridge to the L2 before the network was life and they got more than 1b TVL locked, now they launched the network yesterday but not the token yet, so if people withdraw from the network, they will miss on the airdrop, so everyone is still holding their share and looking around for stuff to buy and gamble on lol #markets before it was live* #markets unfortunately, for most people crypto is just about gambling, they don't understand cypherpunk ideology #markets only thing they care is making money, which is sad tbh #markets hope we can change this over time #markets I got the starknet airdrop #markets But doesn't seem like a good time to dump #markets https://blockworks.co/news/starkware-airdrop-token-lockup #markets Title: Just a moment... #markets STRK launched at a very high FDV, I wonder if it can stay that high, seems like there won't be much sell pressure in the first year #markets so it can surely go up during bull market but the valuation seems pretty high to me, idk #markets if you got the airdrop I would hold but not buy at these prices unless you are looking for a short term trade #markets Well, I bridget it to ETH and it's ready for uniswap dump #markets I don't see a reason to buy really #markets ++ #markets Got a Namada drop as well #markets Though no clue when that is distributed/unlocked #markets I just claimed it but nothing more #markets errorist: where did you check for that airdrop? #dev wow. not 4G, not 8G, but rather 12G shared memory required for aarch64 docker build... Successfully tagged darkfi:aarch64_fedora_8f281cf35_2024-02-29shm12288m; 163m13.471s #markets upgrayeed: it was for wassie nft holders, if you hold some you get the airdrop #markets oh the platypussies? #dev gm #markets I think the correct term is platypi #markets also, how do you determine whether to hold on an airdrop? I got the ENS airdrop, and I had no idea what to do at the time, then the price kinda just crashed #dev gm #markets actually I delegated my voting power thing to one of the ENS guys, but I think they kicked him out later on after some past 'controversial' tweets of his were dug up #markets upgrayed: no, it's called bywassies / loomlock #dev waving #dev I'll think about a bot sending gms randomly so as to not doxx location lol #dev hello had brief outage but am back now #random test #random test back #random https://blog.cloudflare.com/pingora-open-source ; Open sourcing Pingora: our Rust framework for building programmable network services #random Title: The Cloudflare Blog #dev errorist: here? #dev fyi https://github.com/darkrenaissance/darkfi/pull/256 #dev Title: Fix dev link to dev section by holisticode · Pull Request #256 · darkrenaissance/darkfi · GitHub #random test #random test back #random test #random test back #dev : @skoupidi pushed 2 commits to master: ed8e485575: validator: changed consensus finalization logic #dev : @skoupidi pushed 2 commits to master: 632f07a322: contrib/localnet/darkfid*: configuration changes #random test #random test back #dev `trait Formatter { fn do(&self)}`, then implement: `impl Formatter for dyn fmt::Display` - can I not use the fn `do` on an object which implements Display? #dev well that's what rustc tells me, so how can I do that? Can provide some pastebin if this is not enough #dev loopr: you impl Formatter for a generic, which implements the Display trait #dev check src/sdk/src/dark_tree.rs for example #dev its a struct thouh, but I reckon you can do something similar for a trait #dev like impl for Formatter {} #dev Okey doke will try in a bit #dev Thanks #dev igh_imma_head_out.jpg #dev glhf #dev hf2 #dev : @dasman pushed 1 commit to master: 6d39951185: bin/deg: updating unreferenced_tips on receiving new events #dev : @dasman pushed 1 commit to master: b9e74e52dc: bin/darkirc: add deg task & respective rpc calls #dev : @dasman pushed 1 commit to master: 784438823d: bin/deg: add guard to only show infos on live nodes #dev : @dasman pushed 1 commit to master: 50e57cba54: bin/darkirc: add forgotten deg_task.stop() #dev : @dasman pushed 1 commit to master: 0043665c46: bin/tau: add deg task & respective rpc calls #random test #random test back #random gm #random test #random test back #random https://wizardzines.com/comics/ #random Title: #random https://scratchdata.com/blog/building-a-ledger/ #random Title: Scratch Data #random I recently got this book https://www.amazon.com/Real-World-Cryptography-David-Wong/dp/1617296716? and I think it's good so far, it's easy to read and doesn't require strenuous concentration to understand, isn't too math heavy, and doesn't start off with irrelevant stuff like caeser cipher or vigenere cipher etc #random Title: 503 - Service Unavailable Error #random I know you can get all this information online, but I sometimes prefer a physical book, it's about the same size as the K&R C book #random hey deki haumea #random hello #dev upgrayedd: lets cont here #dev the problem with MAX_VALUE - hash is that it can easily overflow quickly #dev not if you use a 64 bit value ;) #dev shit #dev 64 BYTE #dev lol #dev ahahah #dev wait #dev we already know the number is derived from 32 Bytes #dev so we can use that max #dev bitcoin has this weird af calc called "bits" for this float #dev aka max from 32 BYTES #dev BigUint can handle that without overflowing #dev oh yeah lol true #dev yeah it's 32 bytes duh #dev :D #dev yeah so MAX_VALUE_OF_32_BYTES - hash should do the trick #dev and we don't have to use divition anywhere #dev That hash is the RandomX output hash? #dev brawndo: yeah #dev Yeah then it's good #dev The more work, the higher the result #dev since we want the definition of: lower hash number meaning block was harder to produce #dev exactly! #dev (also perfect ordering and work of a subsequence is less than work of the sequence) #dev ++ #dev so haumea: will you write a "spec" with formalities? #dev and then I will impl everything #dev yep #dev lets fucking go!!! #dev ;)) #dev LFG #dev if we have the proof for the sequence sum we are golden af #dev https://bitcoin.stackexchange.com/questions/2924/how-to-calculate-new-bits-value #dev Title: protocol - How to calculate new "bits" value? - Bitcoin Stack Exchange #dev this is how bitcoin does it #dev since that sequence length will also be our security threshold #dev it's really weird, they calculate something called 'bits' #dev will check later #dev https://bitcoin.stackexchange.com/questions/30467/what-are-the-equations-to-convert-between-bits-and-difficulty #dev Title: blockchain - What are the equations to convert between bits and difficulty? - Bitcoin Stack Exchange #dev btw randomx hash max: BigUint::from_bytes_be(&[0xFF; 32]) #dev just look at the function SetCompact #dev same is used for mine target #dev and wtf yourself #dev where the next mine target is max/next_difficulty #dev haumea: better check our randomx stuff #dev bitcoin can pollute your mind XD #dev src/validator/pow.rs has pretty much everything you need #dev ok ty, although i'm also working on integrating the new smt chip in zkvm #dev but will do these tasks #dev tbh I think the consensus is ultra high priority right now #dev ok will prioritize that this weekend #dev <3 #dev you can start with the functions specing #dev Yeah if you can get that done then you can get ppl to review it (again) #dev aka how each rank is calculated #dev so I can start implementing them in parallel #dev and then you do the proofing #dev that should be quick #dev so we then work in parallel with each other #dev y-y-yessir #dev hai! #dev yosh! #dev usss! #dev hai hai #dev https://github.com/monero-project/monero/pull/9184 #dev Title: Remove instructions for Void Linux, add NixOS by sausagenoods · Pull Request #9184 · monero-project/monero · GitHub #dev https://github.com/void-linux/void-packages/pull/44422 #dev Title: srcpkgs/*: remove all cryptocurrency/blockchain packages by 0x5c · Pull Request #44422 · void-linux/void-packages · GitHub #dev > @void-linux void-linux locked as resolved and limited conversation to collaborators Sep 4, 2023 #dev i guess we need to stop recommending void to people #dev wtf #random https://twitter.com/In4Crypto/status/1763913240235401477 #random is this significant? #dev why do they hate on crypto :/ #dev xenoestrogens in the water #dev lol #dev I wanted to give qubesos a try, have you tried it? #dev sounds awkward, i want a lean minimal linux #dev ACTION sigh : maybe time to become a gentooman #dev :D #dev https://github.com/void-linux/void-packages/pull/44778 #dev Title: Partially revert "srcpkgs/*: remove all cryptocurrency/blockchain packages" by lemmi · Pull Request #44778 · void-linux/void-packages · GitHub #dev https://github.com/void-linux/void-packages/discussions/46087 #dev Title: Better communication · void-linux/void-packages · Discussion #46087 · GitHub #dev the void devs moved it to 'discussion' to avoid having to deal with it #philosophy https://old.reddit.com/r/Netsphere/comments/131mgfj/will_blame_ever_get_another_anime_adaption_or/#jy2xtia #philosophy Title: Too Many Requests #random Yeah ZSA is cool #random We have that already, but was easy for us since we start from scratch #random For zcash it took a lot of engineering effort #random Plus they also got rid of the legacy C++ node forked from Bitcoin #random Now they have a new Rust implementation called Zebra #random I should check what they did for hardware wallet #random nice #random test #random test back #dev haumea: thats old news XD #dev haumea: btw did you check how the branch name was called? removed-cryptoshit :D #dev devuan should be the go-to recommendation #random hi #random hi user #random https://arxiv.org/abs/2211.03622 #random Title: [2211.03622] Do Users Write More Insecure Code with AI Assistants? #random the answer will shock you, click here to find out more #random jokes aside, the conclusion is: yes lol #random test #random test back #dev gm ser #dev motherfuckers #dev since i posted in that discussion yesterday, it was locked by the devs #dev gm #random deki: you should check out libera IRC and some of the channels like #rust, #crypto, ... and maybe other servers like oftc #dev brb #dev b #random test #random test back #random haumea: thanks, will get back onto it I was on the rust channel for a bit, that's where I found out about rustlings #dev gm #dev gm #random use /list to show channels #random also checkout the #suckless channel on oftc #random oh nice, it's been years since I've used IRC like this #random I'm guessing #suckless is something dev related lol #random software that sucks less, I like the sound of that #dev errorist: are these the updated steps to connect to a tor node? https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html or do I need a seed from you? #dev Title: tor-darkirc - The DarkFi Book #random distro made by the creator of gentoo https://www.funtoo.org/Wolf_Pack_Philosophy #random Title: Wolf Pack Philosophy - Funtoo #random ACTION ... howls #dev hey deki: this is if you want to run your own tor node, but if you want to just connect, you can add seed tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552 #dev make sure you have allowed_transports = ["tor", "tor+tls"] #random haumea: no wayland in funtoo #dev yeah I think just to connect at first, like what you helped Alice with earlier this week #dev haumea, draoi: what if he just leaves the seeds empty, my lilith tor onion should get announced to him automatically, right? #dev maybe you can test this deki #dev sure, so leave the seed field empty? #random i'd probably use gentoo or slackware #dev yes, try please, I wonder what happens :D #dev errorist: seed empty means no lilith #dev so unless he/she/they/them have a manual peer we will connect to noone #dev oh I see, so in the default config there always needs to be atleast 1 seed? #dev to discover the others #dev well if you know a peer directly you can connect there #dev if you know noone, then yes you need a seed #dev you don't need a seed if you have a hostlist #dev upgrayedd: but I don't see peers = [] in the darkirc config, you mean I could set peer=[] in there if I know one? #dev I have peers = [] in lilith #dev errorist: yes #dev nice #dev maybe we should update the docs, make it more clear for new people what a seed is and what a peer is, was confusing to me at first #dev I can help with the doc, but I never used github or pushed changes so maybe you can help with that :D #dev preferably, use codeberg #dev watch a git tutorial on youtube #dev or you can just send the .patch #dev like the oldschool days #dev nah it's good to get on git, esp if contributing docs longterm #dev git != github #dev wdym? github is git therefore git is github therefore git == github #dev github is a front end for colaborating over git #dev its like saying firefox == http #dev or weechat == irc #dev lol was jk ;) #dev lol #dev ACTION god #dev oops wrong command #dev creates dinosaur #dev ACTION destroys dinosaur #dev ACTION creates git #dev ACTION creates man #dev ACTION creates github #dev ACTION centralizes git #dev ACTION destroys man #dev :D #dev haumea: ok, i'll watch some git tutorials #dev hehe #dev this is a good git tutorial site btw https://learngitbranching.js.org/ #dev Title: Learn Git Branching #dev strong men create git times, git times create github, github create soy men #dev lol indeed #random : test #random : test back #random test back #dev : ey errorist, so I left my seeds field empty, and ran ./darkirc and it works :> #dev : is that meant to happen #dev : deki: what does your darkirc log say? which nodes did it connect to? #dev : weird your message isn't coming through on weechat, but I get it on the telegram bridge channel. Do you mean this: Connecting outbound slot #2 [tcp+tls://dasman.xyz:26661] #dev deki: check your weechat is connected to darkirc daemon #dev go to first buffer, you should see the disconnect message and the reconnect retries #dev : upgrayedd: not sure I understand, first buffer in the streaming messages after running ./darkirc? #dev deki: first buffer in weechat #dev like how you move channels #dev : ah right, yeah I had a look there but not disconnect message just this: irc: connecting to server localhost/6667... #dev : irc: connected to localhost/6667 (127.0.0.1) #dev : then welcome to darkirc network #dev : I can just add the seed and reconnect, didn't have this issue last time I tried this #dev : I mean, last time I didn't leave the seed empty #dev are you using both ircd and darkirc on port 667? #dev 6667 #dev : I've disconnected ircd, because it was having issues with addr or port in use #dev : but looking at the first buffer again, the previous connections to irc were on 6667 #dev : I will brb, supermarket is about to close #dev darkirc on master is broken btw #dev about to push a fix #random : hello from the other side #dev : @draoi pushed 2 commits to master: 7ec08e76b4: p2p: add is_pending() method... #dev : @draoi pushed 2 commits to master: db92a9e3dc: net: introduce HostState state machine to safely manage host activity... #dev haumea ^ #random https://www.quectel.com/wp-content/uploads/pdfupload/Quectel_EP06_Series_LTE-A_Specification_V1.7.pdf #random this PCIe card allows changing the IMEI for sim cards #random it's what the nitrowall XT uses #random (aka the Mudi 4G LTE router) #random : test #random : test back #random test back #dev : @zero pushed 1 commit to master: fcb1ca1242: book/consensus: add formalisms for block rank calcs #dev upgrayedd ^ #dev haumea: codomain, you miss the -? #dev yes exactly, it cannot be < 0 #dev ∑h(bi​)≤T(bi​) #dev that seems wrong #dev ah yeah it's missing a sigma #dev :D #dev nice #dev ok so the ranking is defined as: #dev block rank: distance from max 32byte int #dev fork rank: sum of its block ranks #dev : @zero pushed 1 commit to master: c443ec962a: consensus: small edits #dev yeah that could be one way since then smaller target -> higher rank #dev for the last part, we need to add the sequence length we were discussing #dev or its safe to assume that it holds true for any size of sequence? #dev see the section called additivity #dev it should hold true for any subsequence that work(subsequence) < work(sequence) #dev I'm not talking subsequences #dev I'm talking two distinct sequences #dev how do you prove that W(Sa) != W(Sb) at a certain length #dev see the section called hash function #dev oh I see #dev you pretty much disprove it, but proving the opossite #dev ok I see it #dev so effectively, our "forks" would only be max length 2 #dev I'm wrong? #dev wdym max length 2? they can be any length #dev (assume syncronicity and mined block reaches everyone instantly) #dev ok let me make it clear: #dev lets say you want H(a1) + H(a2) + H(a3) = H(b1) + H(b2) #dev we have canonical chain and 2 miners extending it #dev you have to construct it using a sequence of operations #dev minerA mines blockA, minerB mines blockB at the same time #dev so we have 2 forks of length one, extending canonical #dev since they will both have to mine the next best fork, lets say its blockA #dev they will each mine blockAA and blockBA, making the fork with blockB obselete #dev so the highest you can get is length 2, as any consecutive block extends you #dev so you can move the subsequence to the right #dev not necessarily, maybe you mine blockBC and it has a block hash of 0 #dev then suddenly B -> BC is the winner #dev wait #dev thats the syncronicity problem tho #dev since all honest miners always try to extend the current highest ranking block #dev aha yeah, so if that's not allowed then you're correct #dev we mitigate the syncronicity by having the fork buffer #dev thats why I was asking whats the safe sequence length number #dev should be >2 to mitigite race conditions in the last block #dev but something like 4-5 should be more than enough to be ultra safe #dev but we have to also formally prove that #dev oh that's a harder question, depends on mining power and network size .etc #dev exactly! #dev thats the second "part" of having a formally proven consensus #dev synchronicity and byzantine tolerance #dev byzantine is pretty much covered, since they have to produce a higher ranking hash #dev but synchronicity, is more like: ensuring that everyone has received the correct state at by a top limit #dev which is usually called δ from delay #dev to mitigate the network latency, we have the buffer, since then the δ is bound by our mining time #dev so if the mining time to produce a block is long enough so the previous one has reached everyone, we are good #dev but we keep a > 2 buffer, to properly ensure bigger network delays #dev what happens when a race occurs? does the network split? #dev define race #dev 2 nodes at each end of the net map producing the block for same height? #dev so as the blocks go into the network, each side sees a different highest ranking fork? #dev if for example the buffer is too small #dev the network is partitioned into 2 sections, and they confirm different forks #dev aha yeah if the buffer is too small, lets say 1, so you just have end tip forks #dev you will hard fork, so network split #dev yeah exactly #dev ouch bad #dev so your buffer size ensures that mined blocks will reach everyone by some bound #dev and they can correctly define the highest ranking fork #dev thats why I kept asking about sequences length #dev I though it would be bound by the hash property #dev but its not #dev so we should define it by actual network conditions #dev you get what I'm saying right? #dev ACTION thinking #dev it is also related to the hashpower #dev not exactly in randomx #dev but since we're targetting monero hash power #dev since you define the target time #dev it should be fine (not easy to attack) #dev the problem is spikes, where the algo adjusts to accomodate #dev so our length should be able to cover those spikes #dev in terms of how quickly the randomx algo adjust to the new hashpower of the network #dev in general we can start extra conservative, with like 10 length buffer, and reduce it as the network hashpower grows #dev yeah that might be good #dev you see now how the two parts come together? #dev yes #dev with norma PoW you can never have that buffer #dev since its always based on higher length #dev but with our ranking logic, since you can't have said hash sequences, we can use that buffer #dev since the hash sequences are also "protected" by the PoW itself #dev actually no that is not true #dev someone can privatelly mine a difference sequence to propose to the network #dev scratch that #dev with the buffer we just assume that "hidden" forks can never be proposed if they over some length #dev not assume, rather enforce #dev yeah there's no other way #dev kinda interesting the implication for what finality means #dev yeap, its a very nice thought provoking space #dev so if we want to be technically and factually correct #dev we are doing enforced finality #dev after a certain depth when the probability of a reorg is low enough, nodes consider things final #dev yy exactly, but instead of assuming that, like in normal PoW, we enforce it #dev is it safe to use the same params as monero for estimating reorg probability? #dev what happens if monero has a deep reorg? #dev hm brawndo should be better to answer this #dev iirc you don't reorg if the parent chain reorgs #dev ok #dev I don't think we can use same params, as monero is pure PoW(shatoshis) #dev so their reorg probability is based on length, while ours is based on ranking #dev which is affected by length obviously #dev ic #dev the way I see it right now, the ranking is more of a same length fork chosing rule #dev in pure PoW, miner can choose to extend whichever of them #dev in our case, an honest miner will choose to extend the higher ranking one #dev my idea was to calculation it for a single block based on monero hashpower #dev then use that to see what the reorg depth should be #dev calculate what for a single block? #dev of a block reorg happening #dev you don't reorg in that case #dev both sequences are valid for monero #dev oh wait you mean in our case? #dev so finding the probability of the second block ranking higher that the current one #dev yep i want to see what the depth should be #dev yeah that calculations is exactly the ones I was mention over and over re: buffer length XD #dev find the sequence length where that probability reaches 0 #dev so we can safely use that length(or a bit higher) as our buffer size #dev well if p = 0.1 which would be huge, then for n = 10, the probability of a hard fork would be smaller than 1.0000000000000006e-10 #dev which is miniscule #dev well, we don't care about the ifs :D #dev upgrayedd: given the hidden forks can never propose after 1 block, how is the case of 2 forks with timestamp collision handled? #dev aiya: can you describe the scenario more? #dev wdym by timestamp collision? #dev 2 miner independently find the next block at the same time and start block propagation to connected nodes #dev well the buffer is >1 block(should be even more actually) to accomodate for that #dev thats the synchronisity problem we are describing #dev so as long as δ (the delay to reach everyone) is less than the time to mine a block we are covered #dev okay, so in this case, will the network decide which block is accounted for and drop the fork with less hashpower #dev since both blocks will have reach everyone, and they know which is the correct sequence should be extended #dev no they keep both #dev buffer is not a single fork #dev it contains both of them #dev but as they grow, everyone diverges to a single sequence #dev is the sequence defined as when the block was received in the buffer? #dev so left end of the buffer will be common for everyone #dev wait wait #dev think of the buffer as the current pool of forks, all extending canonical #dev in that pool, everyone will converge to the same higher ranking fork #dev and when that reaches the length we want, we can "pop" its first block and consider it final #dev so then the buffer will contain just that single highest ranking fork, and we enforce everyone proposing alternative forks to extend that fork at any of its blocks #dev so what we are discussing here is, whats the probability to reorg that fork on each height #dev lets say the fork is 10 blocks #dev so we are looking for the probability to produce a block reorging its last block #dev then the prob to produce a block reorging its last 2 blocks #dev ... #dev then the prob to produce a block reorging its last N blocks #dev I see, working backwards, so how long does the buffer hold the blocks #dev that N is the desired height, where we can enforce finality #dev exactly #random i guess ganu/gantoo is safe cos they have pages on their wiki like https://wiki.gentoo.org/wiki/Monero #random Title: Monero - Gentoo wiki #dev Hi, in order to broadcast transactions do I need to build from master{ #dev I'm using the latest release but I can see it's quite old #dev and I'm getting a connection error when creating a tx even while my node is fully synced. #dev moco: testnet is getting nuked, so don't bother right now #dev gn #dev gn #random test #random test back #dev nuked as in we are prepairing for mainnet? #dev testnet 2 then mainnet #philosophy https://edition.cnn.com/2023/03/02/world/brain-computer-organoids-scn/index.html #philosophy Title: Move over, artificial intelligence. Scientists announce a new ‘organoid intelligence’ field | CNN #dev !list #philosophy https://www.openculture.com/2024/02/how-french-artists-in-1899-envisioned-what-life-would-look-like-in-the-year-2000.html #philosophy Title: How French Artists in 1899 Envisioned What Life Would Look Like in the Year 2000 | Open Culture #philosophy that last pic is hilarious of a roomba: #philosophy https://cdn8.openculture.com/wp-content/uploads/2015/09/23233315/800px-France_in_XXI_Century._Electric_scrubbing.jpg #random test #random test back #random test #random test back #dev gm #dev gm #philosophy https://www.youtube.com/@GnosticInformant/videos #philosophy Title: Gnostic Informant - YouTube #philosophy haumea: they almost nailed it with the electric scrubbing :D #random loopr: gm I need to dm you. Here is my pubkey, could you share yours please. 5J7EBWjYGkp9FnjSxQBz4Ydw7LWDBsLLAF5wDaUJ9ivn #random test #random test back #dev gm #dev : @draoi pushed 2 commits to master: 1f9a01b94f: net: combine remove_(..) etc methods into a single remove() method. #dev : @draoi pushed 2 commits to master: 5559e46ba9: chore: standardize debug statements on net/hosts/store.rs #dev gm #dev darkfi/src/zkas/parser.rs:688 #dev maybe this could use VarType::from_str()? is there a reason it's like this? #dev sec #dev haumea: Yes, could be an impl TryFrom #dev cool ty #dev But see there is a catch-all that gives a parser error #dev So make sure that's still there #dev ++ #dev hexchat has disbanded #philosophy i like how the maid has it on a leash pulling it like a dog #dev :/ #philosophy close enough lol #dev why do we use MERKLE_DEPTH_ORCHARD as u64 in darkfi/src/validator/fees.rs:50 #dev is that a mistake? in other places we use MERKLE_DEPTH #dev You can see they're different types #dev const MERKLE_DEPTH: u8 = MERKLE_DEPTH_ORCHARD as u8; #dev yeah but it's being converted to u64 from usize #dev What's wrong with it? #dev The accumulator is u64 #dev Anyway that's just an arbitrary number, those fees don't really represent reality #dev nbd, i can leave it #dev there is MERKLE_DEPTH_ORCHARD: usize and MERKLE_DEPTH: u8 = MERKLE_DEPTH_ORCHARD, but we use MERKLE_DEPTH_ORCHARD as u64, so why not just use MERKLE_DEPTH as X wherever it's needed? #dev Unnecessary casting #dev maybe MERKLE_DEPTH should be non-public internal to merkle_node.rs since it's only used there #dev Can be, yeah #dev ++ #dev It's probably not needed now, but I kinda prefer having things as const #dev That allows you to sometimes make a const fn #dev Which is good since you can evaluate things compile-time #dev ok yeah it's nbd, just wondering #dev Sure, good that you ask :) #dev when i see something weird looking it's probably deliberate #dev :D #dev ;) #dev haumea: https://eprint.iacr.org/2024/200.pdf #dev nice, should i read it? #dev their logic is: number of zeroes at the front of its hash #dev this is what bitcoin does #dev so they for absolute best blocks #dev aha yes i was actually wondering about this #dev btc does it for choosing single blocks on same height #dev not chain selection #dev chain selection is still longest chain #dev I'm wrong? #dev I think the number of zeroes is just an analogy(?) #dev You don't do that in practice #dev e.g. converting to a hex string and count zeroes #dev upgrayedd: no it's not longest chain, it's the most work #dev aha the bits you were sending yday? #dev yep #dev ok #dev so that is absolute best blocks #dev so last night i was thinking whether we want a lottery or not #dev while we do "relative" best blocks #dev the downside with a lottery is that sometimes the actual winner loses #dev or the otherway around #dev too early to think which is which #dev this means there's more volatility which means a lower expectation #dev however sometimes you want smaller hashpower to win proportionally #dev wdym by lottery? #dev because we use the hash not the target #dev wait wait #dev if we wanted it to be absolute, we could use the target then the hash #dev we use the randomx hash distance from max32 #dev which is the lowest target #dev yep that's a lottery #dev so our ranking is absolute best block for same height #dev the target is what counts, not the hash #dev since lower randomx hash means harder block #dev the hash doesn't matter actually, it's just that we mined a valid block #dev but by using the hash (not the target), we make it a lottery #dev where blocks with smaller difficulty can sometimes win proportionally #dev idk if that's desirable or not #dev aha since you can produce a higher ranking hash, from a smaller target #dev yes exactly #dev then we can use what I was saying yesterday #dev distance from its current target #dev yes and if the targets match, then use the hash to break the tie #dev but that will still apply #dev we have to rethink this then #dev with the hash breaking it doesn't matter how it's implemented since it's the exceptional branch #dev hash breaking = using the hash to break ties #dev ok but how can we apply it to a sequence? #dev for blocks at same height thats easy: #dev first we compare the targets #dev if the targets match, then we compare the sum of the hashes #dev if they don't match, we keep the lower? #dev yes #dev ok so we have forkA #dev so always the fork with the smallest total target wins #dev in order for forkB to be accepted, should it have every target at position N lower than forkA? #dev if they match, then a random one is picked #dev and when they match, its hash should be further distance from target? #dev not every target, just the sum #dev we don't pick a random one #dev ok so the general rule is: #dev unless you don't want to allow a fork to suddenly overtake another one #dev but then you will get a lot of ties #dev yeah but we break the ties with the hash #dev lets recap: #dev it's better imo to use the sum(distance(target, max)) #dev you can even square the distance if you want #dev wait #dev so that smaller targets have higher weight #dev the problem in this is that it will always be true for the tip #dev you need a tie breaking rule #dev yes tie breaking rule is which has bigger sum of hashes #dev the hashes are random anyway #dev well not completely, that's a wrong statement #dev lol nw #dev ok yeah it sounds more concrete #dev since you pretty much use the same assumptions as normal PoW #dev what do you think about squaring the distance(target, max)? #dev it favours smaller targets much much more #dev but for ties, instead of choosing whichever and hope its the one getting extended, you can provably chose one #dev yeah squaring is a good option #dev squaring prevents reorgs #dev since these targets will probably be very close to one another #dev so sum ties would be very common #dev we could even cube it lol #dev nah too much #dev to total recap: #dev block rank = tuple of its target distance from max and its randomx hash distance from max #dev fork rank = tuple of sum of squared block target distances and sum of randomx hash distances #dev i would just compare randomx hashes directly #dev where? #dev I was going to write: when comparing forks, first we compare the first sum, if the match, we compare the second #dev lowest wins #dev when comparing the target distance from max, we are favoring the forks that are harder to mine #dev but if 2 forks were equally hard to mine, then 2 miners both created valid forks #dev where those hashes are exactly in the target ranges doesn't matter, it was just luck #dev so you just pick 1 of them, it doesn't matter which one #dev when mining, if you get a lower hash it doesn't mean you did more work because you stopped once you had a valid solution #dev and you start mining the next block #dev it matters which one you chose #dev if we don't have a rule, nodes can drift and hard fork #dev while we want "honest" nodes to follow the fork choise rule #dev i mean you can pick lowest or highest, doesn't matter as long as it's the same #dev if they don't they ain't honest #dev you don't need the distance from target or max #dev aha yeah true #dev sum(a) > sum(b) => a wins #dev just simplifies the logic slightly #dev so same for targets? #dev just sum the block targets #dev no target matters since we want to emphasize lower targets #dev yeah lowest sum wins #dev you must calculate sum( distance(max, target)^2 ) #dev ok so to recap(again) #dev because if you do sum(distance(max, target))^2 or distance(max, sum(target))^2 .etc then they are not additive #dev whereas sum(distance(max, target)^2) is additive #dev ain't sum(target) additive? #dev yes but you want the smallest to win, so that calc should additive #dev aha now I got you #dev rank((a1 a2 ...)) = rank((a1)) + rank((a2 ...)) #dev btw you might need big uint since adding a bunch of 32 byte values might exceed 32 bytes, and squaring doubles the size #dev yeah we already use biguint :D #dev no overflow issues here no worries #dev just clarify this for me: #dev rank((a1 a2 ...)) = rank((a1)) + rank((a2 ...)) we want this to be additive #dev not essential but nice to have, no? #dev aint that hold true for: a=target and a=distance(max,target) and a=distance(max,target)^2 #dev yeah additive is good to have I don't dispute that XD #dev where is the sum in those 3? #dev its the inner stuff #dev a1 a2 etc #dev rank((a1 a2 ...)) = rank((target1 target2 ...)) #dev or rank((distance(max,target1), distance(max,target2))) #dev or rank((distance(max,target1)^2 distance(max,target2)^2 ...)) #dev arent all 3 additive? #dev (max - target1)^2 + (max - target2)^2 + ... (higher rank wins) #dev target1^2 + target2^2 + ... (lower rank wins) #dev yeah they are reversed on who wins, but the additive property still holds true #dev ah yeah that's true #dev so we can just do sum(target) and lowest wins #dev they are the same, it might be better #dev and for ties: sum(hash) and again lowest wins #dev ++ #dev simplyfying the calculations to the bare fucking minimum #dev kiss at its best #dev yeah great #dev wait tho #dev I'm wrong #dev thats for same length forks #dev i need to go shower cos got a train in an hour #dev in a real world scenario #dev the nodes wil always try to mine the lowest ranking fork #dev therefore always extend genesis #dev so we never progress #dev XD #dev so yeah we need the distance #dev so we grab the highest ranking fork #dev not the lowest #dev so doing (max - target1)^2 + (max - target2)^2 + ... is probably the best #dev hmmm well i got ircd running, will check back in a bit #dev the reasoning being: fork with less blocks will always have a lower ranking, therefore winning #dev so we never expand #dev not gud #random I made a PR fixing some broken links on the site #random although some I didn't know what to do, such as this one: https://darkrenaissance.github.io/darkfi/dev/rustdoc.html #random Title: API Rustdoc - The DarkFi Book #random darkfi-derive has no location, and neither do a few of the binaries files #dev correct #dev max - target doesn't have this problem #random node overview link is broken here, but couldn't find it elsewhere in the book https://darkrenaissance.github.io/darkfi/arch/overview.html #random Title: Overview - The DarkFi Book #dev haumea: and with squaring we enforce smaller targets right? #dev yep #dev well it disproportionately favors smaller targets with the idea being that it will be harder to trigger the reorg between forks #dev kk will start with the code and then will update the docs and fix tests #random https://news.ycombinator.com/item?id=24231017 #random Title: Why Did Mozilla Remove XUL Add-Ons? | Hacker News #random idiots #dev draoi: can you fix lilith and apply clippy stuff for the p2p latest commits? #dev Greets #dev гм #dev : @draoi pushed 1 commit to master: 9d685f408b: lilith: migrate whitelist refinery to new HostState logic #dev : @draoi pushed 1 commit to master: fd728f4324: darkfid: update to new channels() API #dev make clippy i will deal with in a bit, just working on a commit #dev as long as it passes its good, lints can be chored later #dev ++ #dev draoi: there is a death loop with manual peers #dev oh damn #dev src/net/test.rs tests manual connections but no death loop has emerged, any tips to reproduce? #dev the node is constantly try to connect to the peer for some reason #dev can you share logs? #dev I just started contrib/localnet/darkfid-five-nodes #dev ok ty #dev and one of them stuck in that death loop #dev mainly node3 #dev (indexing from 0) #dev I just got this: [INFO] [P2P] Connecting to manual outbound [tcp+tls://0.0.0.0:48442] (attempt #4934195) #dev woah #dev infinite times #dev had to manually kill it with fire #dev on it #dev btw haven't pushed the latest consensus changes, so if the nodes fork don't bother :D #dev : @draoi pushed 1 commit to master: 36ecfb18e2: manual_session: fix death loop... #dev should work now inshallah #dev hooray :D #dev hello, i am trying to airdrop, but getting io error unexpected end of file. should i just wait for the next testnet? (apologies if this is the wrong channel to ask this) #dev wow: yes #dev upgrayedd: ok thank you #dev test #dev test back #dev Hi! GM #dev gm ash #dev ash: better to use testbot on #random, as to not polute this convo #dev got it #dev (y) #dev !topics #dev !topic test #dev Added topic: test (by upgrayedd) #dev !list #dev Topics: #dev 1. test (by upgrayedd) #dev !del 1 #dev !topic test suite status #dev Added topic: test suite status (by aiya) #dev upgrayedd: it's !deltopic #dev !deltopic 1 #dev Removed topic 1 #dev !list #dev Topics: #dev 1. test suite status (by aiya) #dev dasman: noice #dev !topic consensus updates #dev Added topic: consensus updates (by upgrayedd) #dev gm #dev greets #dev hello #dev sup #dev Hi #dev holla #random test #random test back #dev hey #dev hi #dev salud #dev !list #dev Topics: #dev 1. test suite status (by aiya) #dev 2. consensus updates (by upgrayedd) #dev !start #dev Meeting started #dev Topics: #dev 1. test suite status (by aiya) #dev 2. consensus updates (by upgrayedd) #dev Current topic: test suite status (by aiya) #dev !topic net update #dev Added topic: net update (by draoi) #dev make test is stuck in a loop at [INFO] [P2P] Connecting to manual outbound [tcp://127.0.0.1:53208] (attempt #XXXX) #dev i think it was just fixed #dev oh, not merged yet? #dev should be fixed on mater #dev master #dev 36ecfb18e261d887484dc1f62b461fd1be470f3c #dev i had it this morning as well, but was following log here and apparently was just fixed #dev ok thanks, will check #dev I ran make test sat or yesterday and it succeeded #dev this bug was introduced yday and fixed today #dev (took quite long tho) #dev loopr: doubt(x) #dev a consensus test is broken #dev were you on latest master? #dev failed for me at master #dev yy nw will fix it #dev plz click next if finished #dev !next #dev Elapsed time: 3.4 min #dev Current topic: consensus updates (by upgrayedd) #dev ACTION clicks but nothing happens #dev well it just happened so must've worked #dev lol #dev ACTION you have to type it #dev ok so re: consensus #dev ACTION waves hands #dev (consensus) #dev with great efforts we managed to create something real cool regarding forks handling #dev noice #dev :) #dev its pretty much similar to PoW, but with some minor tweaks here and there #random test #random test back #dev the main difference is the usage of a buffer, in which forks leave until we can considere them final #dev i didn't know that was possible but it makes sense thinking about it #dev now, I have locally latest changes, testing with 5 miners in a 60s mine block with 6 blocks buffer #dev biggest reorg I've observed: #dev ACTION drum rolls #dev :D #dev 1 block #dev XD #dev finality is a really useful property #dev based #dev obviously take my testing with a giant grain of himalyan salt #dev So how do we handle reorgs practically? #dev Blocks until finality: ... Est time until finality: ... #dev wen testnet #dev brawndo: so imagine we have a pool of forks #dev all these forks extend canonical, and when we mine, we only extend those #dev once a fork reaches a size, the security threshold(aka # blocks confirmation), we push its first block to canonical #dev and purge all forks not starting with that finalized block #dev so effectivelly, we have a queue of blocks to be finalized #dev and reorg only happen inside the buffer #dev cool nice #dev so based on PoW properties and hashes, we can safely asume that honest nodes will always try to extend the fork in the buffer #dev with the highest *rank* #dev Cool #dev will update the consensus doc to have it in writting #dev Yeah get that stuff reviewed :) #dev speaking of: hanje-zoe, will you update/add-missing formal stuff? #dev sure thing #dev this is the public docs on the website yes? #dev one change I did from the stuff we discussed earlier #dev how do we know what the buffer length should be? #dev is that both sequences use the squared distance #dev well, we need to calculate the probability we discussed yday #dev loopr: doc/src/arch/consensus.md #dev ++ #dev probability to reorg N length #dev (or same path on darkfi book) #dev I'm 35 blocks in, everyone converges correctly, with max 1 block reorg in the forks pool #dev what's an acceptable limit for reorg? #dev but the number 6 I used is somewhat arbitary #dev i mean probability #dev based on btc # confirmations #dev xmr uses 10 #dev oh btw, what we do is/should be called enforced finality #dev hanje-zoe: the length for which the probability reaches ~0 #dev for example over 5 years, should the probability of a reorg bigger than the buffer size be 0.025 (2.5%)? #dev thats high tho #dev ain't that depended on hashrate? #dev ofc but you wanted to pick a good depth so we will have to estimate a bunch of things #dev but to start doing that we need to set the initial parameters such as the p value we want to use #dev aha so you calculate in reverse right? #dev by saying the probability is that, what my setup would be #dev i mean saying the probability should be 0 doesn't mean much #dev because anything is possible in an infinite universe lol #dev so probability of a hardfork over 5 years or however long we're targetting #dev true, ok we can discuss it another time, aka when we are going for the formal full writting #dev could be 10 or 20, but needs a time limit #dev true #dev we create a model then plug in different numbers to test #dev that's better #dev since then we will also have a somewhat clear picture of our net hashrate #dev this is similar to token stuff i guess #dev yy we can do that, python is our friend #dev anyway thats all, I will finish up consensus and push, then I can "finally" focus on the sync and drk #dev week started with a bang :D #dev !next #dev Elapsed time: 14.6 min #dev Current topic: net update (by draoi) #dev Good stuff #dev so i pushed a change that fixes deadlocks/ race conditions/ excessive use of rwlocks in the net code #dev db92a9e3dc4fe4be9281666a7ba7a0ee91764251 #dev i'm working on another update that will simplify the host/store.rs API a lot more #dev hopefully net will be more stable now #dev Great #dev Will that also help with roaming reconnects? #dev I was thinking, maybe "time with 0 connections" can be a variable influencing the peer lists as well #dev not exactly, but at least we are not deleting whitelist and anchorlist entries any more (made possible by the improved/ safer handling of hostlists) #dev So you don't block peers in edge cases #dev so rn the only hosts that get deleted are the greylist entries #dev that's a good idea re: time with 0 connections #dev with that we could switch off the refinery #dev so there would be 0 deleting of potentially valid peers #dev Yeah bcos I remember this happened to someone #dev Or something similar at least #dev yes that was a blocker for seamless re-connect #dev i'll implement that #dev Sweet #dev that's it from me #dev !next #dev Elapsed time: 4.5 min #dev No further topics #dev gg #dev glhf everyone #dev I'm still waiting for the zkvm review report #dev Can share the notes if anyone's interested though #dev can I run a single test with `make test`? tried `make test test_name` but ran all #dev loopr: For that you can use cargo directly #dev e.g. cargo +nightly test --release --all-features test_name #dev Can specify also --lib or --package #dev ah ok, cool thanks #dev But yeah make sure you're using --release and --all-features #dev forgot to add +nightly to cargo, that's why it was failing (duh) #dev draoi: lmk when to update the nodes #dev will do, it should be stable on latest master, but if you'd prefer to wait until we have seamless reconnect that's fine too #dev okay will wait, tyty #dev https://parazyd.org/pub/dev/random/zkvm-audit-notes.md #dev loopr: on my setup, I have to define cargo release version for the make to run without errors - make CARGO="cargo +nightly-2024-02-01" test #dev ++ #dev !next #dev Elapsed time: 6.0 min #dev No further topics #dev Anything else? #dev event graph debbuging tool is ready to use on master #dev neat #dev ah that's great #dev called deg :) #dev loopr: what you up to? #dev got a 1st version of the wif task #dev will push today or tomorrow for a 1st review #dev ok #dev well not the full implementation tho #dev but as it's the 1st task, soliciting early feedback before moving on #dev Nice #dev you know zkas has a constants section but the elliptic curve generator points are hardcoded #dev there's a zcash function find_zs_and_us() to generate the data for using them in zk #dev that's an importantish todo #dev i assume this is a pointer for me, but i can't connect the dots yet on those names, so will try to make sense #dev ACTION bbl #dev ah ok no rush, when/if this interests you just tag me here and i can guide you #dev oh so it's not related to wif #dev it's my task but didn't get round to it yet #dev yeah #dev cya in a bit, thanks for the updates #dev cya all #dev !end #dev Elapsed time: 6.5 min #dev Meeting ended #dev bye #dev thanks everyone o/ #dev loopr: you know what a generator in EC is, right? #dev roughly #dev so right now the constants usable in zkas are hardcoded #dev there's no way to provide your own #dev but we should be able to change it so .zk proofs can use any generator set in the constants section #dev that's 1 of 3 remaining changes to crypto/zk then it's finished (the others being adding sparsetree which I'm doing now, and fixing DAO::vote() which depends on sparsetree change) #dev ah the constants don't work with zk - coz the curve is different? #dev no they are literally hardcoded right now, nothing to do with the curve #dev so y our own #dev https://github.com/darkrenaissance/darkfi/tree/master/src/sdk/src/crypto/constants/fixed_bases #dev these are the only ones we support now #dev https://github.com/darkrenaissance/darkfi/blob/master/src/sdk/src/crypto/constants/fixed_bases.rs #dev ok #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zk/vm.rs#L625 #dev lol #dev you see they are hardcoded? #dev it should be possible to specify the (x, y) for the point directly in .zk #dev and if it's a value we have in the cache, then load the Z/U values, otherwise generate them with find_zs_and_us((x, y)) #dev https://github.com/darkrenaissance/darkfi/blob/master/src/sdk/src/crypto/constants/fixed_bases.rs#L115 #dev kk #dev nw tho, just sth that needs to be done and it's a kinda self contained task #dev gotcha #dev hanje-zoe: Hi! Do you have more context about the contribute point (28) Tutorial creating a ZK credentials scheme. #dev ? #dev hi ash, do you know how sapling payment scheme works? #dev it's like that but inside the coin you have variable attributes which can be selectively revealed to authenticate with a service #dev so the tutorial would cover wasm rust contract, writing the zk proofs, deploying .etc #dev ok afk for a bit, cya later #dev I imagine that you maintain those values private and send a proof instead, proving some conditions of the variables attached to the coin. right? #dev hanje-zoe: I don't know what it is, I'm looking at it. #dev And the credential scheme it is build upon a commitment scheme. #dev It reminds me of the Identity commitment of the Semaphore protocol. #dev hanje-zoe: Btw, yeah no worries, we can chat later ;) #dev test #dev test back #dev ash: have you ever heard of blinded credential schemes? it's similar to that #dev 14,99[17:38] 99,99 11,99hanje-zoe:99,99 you issue a credential which commits to several attributes. Nobody can see them, but you can authorize a service to access certain ones or even prove statements about them to operate the service #dev 14,99[17:39] 99,99 11,99hanje-zoe:99,99 for example imagine a p2p forum, and you want to delete a post. either you must be the author of that post or be an admin or sysop. So you would prove the statement: #dev 14,99[17:40] 99,99 11,99hanje-zoe:99,99 post_owner == credential.uid or credential.user_level >= admin #dev (hard for me to msg rn, on a train) #dev Good, I get it. It sounds a interesting point to investigate further. I have work already with the abstractions of zk-snarks, but my knowledge of math is limited. Do you think that lacking that math background is prohibitive to this task? #dev I intend to work the close the math gap though #dev Not math, just general darkfi tooling knowledge #dev A lot of stuff like deploying contracts isnt documented yet #dev You have to read the examples #dev Cool, I'm really interested on working to complete that task #dev If it is just learning the tooling it makes me feel more confortable yet #dev Be my guest, feel free to shout here. #dev Already have experience in smart contracts and particularly working with groth16. So this sounds an approachable challenge. #dev https://darkrenaissance.github.io/darkfi/dev/native_contracts.html #dev Title: Native Contracts - The DarkFi Book #dev https://darkrenaissance.github.io/darkfi/arch/smart_contracts.html #dev Title: Smart Contracts - The DarkFi Book #dev Thank you, any guiadance I would appreciate <3 #dev https://darkrenaissance.github.io/darkfi/zkas/examples/voting.html #dev Title: Anonymous voting - The DarkFi Book #dev I'll add a page later today with useful info on writing zk files #dev Bookmarks added (y) #dev ok, I will attentive #dev Also check the spec in the book #dev got it #dev yoyo #dev sup #dev : @skoupidi pushed 1 commit to master: 7010aae22e: validator: changed ranking logic #dev haumea: I pushed the rank logic changes, check and update the doc accordingly #dev will remove the vrf from PoWReward and fix the tom #dev miners at ~200 blocks, 0 issues, max 1 block height reorg #dev s,fix the tom, fix the tests tom #dev nice ty #markets taking some more profits, this market is insane lol #random test #random test back #markets i've been scalping decentralized AI coins during dips. a few smaller ones promising truly uncensored results, don't think they neccessarily will deliver but that is a necessary meme right now #markets Market is totally over extended =/ #markets ++ #markets kopachke: could get even crazier #markets these things are hard to time #markets i agree but the last 2 cycles all overextended with huge god candles past any rationality #markets errorist: did you get my dm? #markets hamletmachine: no ser, did we exchange pubkeys? #markets i have yours from when you posted earlier... mine is: #markets FaCKKQT355X36WGz1ABh9KM29HAUrH96iwkTDNxbgMRU #markets one sec, let me add you #markets +1 #markets brb #markets DMed you #markets anyone here a fan of the CRV ecosystem? including the other governance token aggregators like CVX, Redacted, CVG, etc? #markets errorist: hmmm not seeing it. i have your pubkey as: #markets 855RitmfR499dBRGFFZHH33vCBxF77q8D3uX65vSFW52 #markets ? #markets yes, that's my pubkey #markets did you get my message? #markets no... odd #markets hmm, did you restart ircd? #markets yes but let me try again #markets brb #markets ok #markets test #markets test back #markets errorist: sent you another test dm #markets wait, my bad, wrote contract instead of contact in my config #markets aiyaaa #markets :D #random test #random test back #markets hamletmachine: I like Curve the dapp but not a fan of the token, has performed horribly lol #markets i think it is primed to run up by this fall... crvusd now accounts for like 80% of the protocol revenue & adoption continues to grow... plus inflation and unlocks crater in just a few months #markets plus the other lending protocol governance token aggregators like cvx, redacted etc are great proxy exposure to all of the other lending tokens #markets the tech is good and surely the token can go up during bull market, i'm just hesitant to hold it, just because I know the founder of Curve used CRV to take a loan and buy a house :D #markets better than selling it and crashing the market :) #markets i won't sell my btc but have def taken stablecoin loans against it #markets but agree some of that stress can affect CRV token price, which is why i like the other governance token aggregators like Convex that also scoop up FXS, CVG, Prisma, FXN, etc #random test #random test back #random monerotopia november 1-3, in buenos aires argentina #random https://monerotopia.com/ #random Title: Monerotopia2024 - Monerotopia 2024 #random Contact us at monerotopia@protonmail.com to become a speaker! #dev gm #random [contact."xeno"] #random contact_pubkey = "GNuVxM7358FSbDqZZw5dhkK2CHdhyxpP9cS2WhYao2uW" #random ^ hamletmachine #dev : @parazyd pushed 3 commits to master: 551b96d4f9: sdk/crypto/blind: Don't use generics for fn random() #dev : @parazyd pushed 3 commits to master: 0de97d0db3: chore: Update crate dependencies #dev : @parazyd pushed 3 commits to master: 195c477caa: chore: Clippy lints #dev haumea: around? #random loopr: maybe I missed it yesterday. If so, I'm sorry. Can you please share your pubkey? #dev gm #dev gm #dev gm #random https://github.com/HeyPuter/puter #random Title: GitHub - HeyPuter/puter: Desktop Environment in the Browser! #random > Our scientists have done things which nobody's ever done before... Dr. Ian Malcolm : Yeah, yeah, but your scientists were so preoccupied with whether or not they could that they didn't stop to think if they should. #random otoh linux is continuing to slowly grow year on year: https://linuxiac.com/linux-crosses-four-percent-market-share-worldwide/ #random Title: Linux Crosses 4% Market Share Worldwide #random we're definitely in the era of a linux renaissance #random the article misses that it's cos of unixporn/tiling desktops #random year of the linux desktop :D #random and so... it begins #random how can you be into linux but be anti-crypto #random weird #random i suppose same way ppl can be into crypto but use MacOS #random because you heard about 'crypto' in 2010 but never invested/got involved, and then macos grifters got rich but you worked like a slave helping software freedom for altruistic reasons #random so they are butthurt basically #random "just use gnu taler" XD #random it's why many of them support the big state since capitalism is le bad, but at the same time have a stockholm syndrome towards it (normie liberal thinking)... while others are tranny mental-illness types that are hard left #random and many projects survive off EU grants, crumbs from master #dev oki so inside zk/vm.rs, where we load the witness values line 682 onwards, i want to witness the SparseMerklePath #dev since PathChip::from_native(..., path), i will witness PathChip which is different to the other chips where they are loaded at the start of synthesize() in zk/vm.rs #random maybe gen Z'iers will rediscover linux #random I was lurking on unixporn the other day #random hyprland is the new shiny hyped thing #random there was this cool qubesos theme but apparently ricing qubesos is a pain in the ass #random is the window manager/compositor a separate vm like other processes? #random probably #random upgrayedd: yeah it's called the dom0 and you are not supposed to do much there otherwise you could introduce a bug #random makes sense #dev : @skoupidi pushed 2 commits to master: c9e2cc0a42: .github/workflows: nightly is back on the menu boyz #dev : @skoupidi pushed 2 commits to master: 17f928db22: lilith: fmt #random wtf youtube won't let me search for blue whales #random it gives me a suicide help message #random #protect_the_kids #random https://agorism.dev/uploads/screenshot-1709638616.png #random weird, I can search for that phrase #random lmao "tranny mental illness types" many such cases #random regarding people being into linux, but are also massive statists: I used to know a guy who was a big linux user, always plugging cyanogen mod, etc, but massive left-wing, big state knows best-type #memes can't wait to launch my own memecoin on darkfi #memes :D #random reka: contact_pubkey = "4rzHWemAB35pLjGZeKeCdGYKRa3ZG5QNRGcrJecwjgU3" #dev draoi: I still get the [P2P] Connecting to manual outbound death loop in test #random upgrayedd: is this still yours: FfrD6... #dev : @skoupidi pushed 2 commits to master: a3a747df39: contract/money/pow_reward: removed obselete ECVRF #dev : @skoupidi pushed 2 commits to master: e8885e629f: darkfid/tests: fixed block sync test logic #markets hamletmachine: what happened with Curve wars? I know there were some big things happening there? #random ty loopr: my key contact_pubkey = "5J7EBWjYGkp9FnjSxQBz4Ydw7LWDBsLLAF5wDaUJ9ivn" #dev ah ffs, looking into #dev upgrayedd: darkfid-five-nodes or do you mean make test? #dev make test #dev can't really see which one is it #dev ok ty #dev since it gets into the loop and gg logs #dev : @draoi pushed 1 commit to master: 2c15d0ad38: manual_session: delete 2nd death loop... #dev https://www.youtube.com/watch?app=desktop&v=XspDkqEtWFE #dev Title: 究極の謝罪を競う「土下座選手権」開催(Apology Olympics) - YouTube #dev lmao! #random https://www.youtube.com/watch?v=3RGEo2Kohb8 #random Title: 4 Hours of Asian Mum to Help You Focus on Practising/Studying/Working - YouTube #random just what I need...lol #dev : @zero pushed 1 commit to master: 547ffe2144: add book page on writing ZK proofs with zkas, includes info on debugging #dev ash: ^ as promised #random test #random test back #dev haumea: Excelent! (y) #random test #random test back #dev puzzled and afflicted I couldn't get my env to run tests yet #dev I installed nightly-2024-02-15, nightly-2024-02-01, and also nightly-2024-01-15, but I still get this error[E0658]: use of unstable library feature 'stdsimd' #dev Do I need to go back even further? #dev loopr: make CARGO="cargo +nightly-2024-02-01" test #dev looper: git pull and use current nightly #dev it works #dev 0de97d0db3ddf277a851b4dd4190fb5aff159658 #dev and you can verify with c9e2cc0a42d917f1fd80039895b3cc0195aa591d #dev so the nightly workourd is not needed anymore #dev until nightly breaks again, cheers :D #dev rebasing and checking #dev hey upgrayedd #dev how do I remove the fix we made in the Makefile #dev error: Your local changes to the following files would be overwritten by merge: #dev Makefile #dev git restore Makefile #dev thx #dev it's so easy when you know how :D #dev don't forget to update your nightly using rustup update #dev looks good #dev updated darkirc #dev : @zero pushed 1 commit to master: 96a2e0b65f: book/wallet: add lessons learnt from mozilla XUL failures #random : test #random test back #random : test back #random test #random test back #markets crv bribes are definitely standard practice now. convex still leads the pack but IMO losing ground because no vaults that autocompound yield. StakeDAO and Yearn great options rn. Claiming yield onchain (ie for Convex) is just stupid expensive #philosophy Great article on abilene paradoxes: #philosophy https://open.substack.com/pub/boriquagato/p/escaping-abilene-paradoxes-and-the #philosophy Title: escaping abilene paradoxes and the future of the public square #philosophy "in the end, the only way to make large groups of people do what they well and truly do not want to do is to get them to act like they believe things that they do not actually believe. #philosophy and the only way to do that is to make them think that everyone else believes these things so that they bow to a false consensus and get in line." #random yo hamlet #random 08:41 [contact."xeno"] #random 08:41 contact_pubkey = "GNuVxM7358FSbDqZZw5dhkK2CHdhyxpP9cS2WhYao2uW" #random  #random send your digitz #markets are you guys buying rn #markets probs will pull-back after we reached ATH #markets but idk #markets s/reached/reach #random nm just found in #markets #philosophy hamletmachine: the panopticon method of control; have prisoner's externally regulate their own thoughts and actions. #philosophy prisoners #philosophy externally , but really just internally #philosophy basically both #random xeno: sent test dm but it was before you got my pubkey #random i am "FaCK..." ... did you find it? #random test #random test back #markets will buy if NASDAQ pushes forward, but I think we will see a dip coming soon #markets not buying anything rn, fully expect correction before bull bull market send #markets aiya: i missed the chat. buy what you mean #markets made some solid buys on crv, cvx and some ai coins at the bottom a few months ago, went long with leverage then & they are starting to srsly pay off #random hamlet: sent you a DM #markets but i'm dumb and don't know how/when to sell so will just let them keep compounding in various vaults until much deeper in the bull #markets konirdom: just buying in general, not a specific coin. check telegram mirror to catch up on missed chat #markets konirdom: good question, my faith in a bunch of alts I held has changed per the developments during the bear and I plan to roll my positions to new prospects #markets i'm savvy on lending/amm governance tokens (and the gov token aggregators like convext, redacted etc rn as a proxy for the whole market). when we hit peak bull those defi staples will be getting max use & TVL, thesis is those tokens 10x from here #markets *convex #markets I am betting on RWA #markets Tokensiation of assets is quite advanced in places like Switzerland. I thionk that paper assets such as debt or commerial papers *be it whatever, from intelectual property to bonds( is first to be tokenised and then we move to assets like real estate and companies. #markets i'm still confused how RWA can work without being compromised by state actors. Like Frax for instance has a big RWA treasury bill aspect, they have a real world bank with assets that impact onchain tokenomics, what happens when a govt seizes those funds for not providing KYC on onchain identities? #markets Of course they seek compiance in "travel rule". Then you have state's blessing #markets right so is it just an inevitability that anyone offering exposure to RWA will require KYC sooner or later? #markets either that or have their bank accounts containing RWA seized for compliance BS #markets mattereum claims to have cracked it big time by actually...well work with the law, which means full state actors invovlement and must-kyc #random test #random test back #markets I mean, I don't know if you can really have rwa without the state who enables you to have "guarantees" you the ownership. Wasn't that historycally the case? From Babylon through Gengis Khan to China. If I buy a house in Italy, italian "rulers" are giving me protection to ownership #markets Now you can argue, they can blow up my house but not DLT and my ownership to the land will always be recorded on the ledger #markets if nothing else seems like an opportunity for state actor FUD causing massive dips in onchain RWA assets when real world accounts are threatened. good time to buy then if price exposure is the goal #markets still kicking myself for not buying $100 XMR when it crashed after Binance delisting last month #dev test #dev test back #dev was d/c #markets hamletmachine: same here #markets I wanted to buy some XMR otc and the guy was like, 7% fee because the price went down and I declined, should have paid the fee #markets regarding RWA, it's a cool new narrative to pump bags but it's like a trojan horse #markets same with shady stablecoins, who knows if they are really backed with money in the bank #markets errorist: usdt feels like tor in the sense that govts need an outside actor to shield their involvement. otherwise they would have made much more noise about them by now instead of the occassional tongue lashing or small court cases that don't actually threaten it #markets i was an online poker pro 10-15 years ago and when the us govt decided to shut it all down, not only did they seize the URL domains of all the top poker sites GLOBALLY but they also froze/seized the non-US bank accounts of these non-US poker companies #markets if govt really wanted to stop something like Tether it would be simple to just seize the non-US bank accounts filled with billions in banking, RWAs, etc #markets also for all the press that evil CBDCs are getting, what do people think USDC is? Programmable, govt compliant US dollar stablecoin. When the US govt demanded all Tornado Cash wallets were frozen, USDC (Circle) immediately jumped to lock all the USDC in all related accounts. This after their CEO Allaire made some big statement the year before about how they would push back against govt overreach #markets lol. Didn't just jump but asked how high #markets RWA stocks exists on Algorand as assets, anyone can own TSLA, AMZN others and demand payment in ASA (Algorand token) as a stock, all kind of posibilities unlock with tokenization. Of course you gotta trust the LLC registered in the states that holds the underlying stock for the ASA, maybe this can be replicated in Switzerland? #markets Allaire has hands tied since he took the bog investment from Goldman Sachs in 2014 #markets +1 #random test #random test back #markets Circle had it so bad, they didn't get approval to make their SPAC public in 2021, the private interests can control Circle USDC better when Circle is not public #markets https://twitter.com/jerallaire/status/1599755838566338560 #markets The West lives in a creation which they have made before the rest of the world. They build infrastructure and trade which was catalysed by the creation: the financial system based. The coin for that 'ledger' is called USD. Now there is a news parallel system being built by Global South. The more they abuse their system, the less other centers of power are keen to join in, when now there is an #markets alternative with BRICS. So I whink they need to think twice before just seize non-US entities. #markets Look at what happened with Moscow's assets. Other state actors around the world said, well fuck that. #markets So economic actors, banks and states can choose Chinese alternative. #markets aiya: In Switzerland/Lichtenstein there is LCX. They have tokenised debt thus far and issued bonds EURT #markets btw, GOLD is breaking out. Doesn't happen when interest rates are high. I guess they are telling that the Fed went too far #markets tbh confused why more decentralized stables haven't become more popular. unfortunately most use usdc+ as collateral so that taints them. #markets is there a decentralized stable that does not include centralized stables in their collaratal base? #markets kopachke: nice so there exists a framework to tokenize assets #markets wow gold chart looks primed for a break up #markets hamletmachine https://reflexer.finance/ RAI was trying to achieve that #markets Title: Reflexer #markets Switzerland has well defined legal framework and implemented solutions. Physical diamonds called Tiamonds are already tokenised and being held in a vault in Switzerland. Than in Canton of Zug, you pay taxes in BTC or ETH and even buy real estate with it. So yeah, they are knees deep #random test #random test back #random test #random test back #random test #random test back #math test #math test back #dev gm #dev gm #dev up to chapter 8 of the Rust book (skimmed 7) #dev are there any low hanging fruit tasks that aren't too complex? #dev gm #dev deki: zkas/parser.rs, the match on token str, instead VarType could have a method to be created from a str #dev brawndo: when we call PathChip::from_native(path), it returns a PathChip. So when witnessing a path, do we store the PathChip, or just store it unwitnessed then construct PathChip later when doing the instruction? #dev from_native() witnesses the path #dev So you store the chip and use it where needed #dev ok ty #dev np #dev rather than storing all the configs in a vec enum in zk/vm.rs, we could instead just store them in the struct directly #dev that way we don't need the functions which search through the vec #dev if we need a vec, we can just make a fn which returns the vec of chips #dev see darkfi/src/zk/vm.rs:536 #dev see also ecc_chip() #dev It's unfinished so just leave as-is #dev What would be better is to do work on the optimisation algorithm #random FPS game as a book: https://www.youtube.com/watch?v=UF8BF7_ywkI #random Title: Ace of Aces Tutorial - YouTube #dev ok #dev in your example circuit, path is not a Value::known type, just using the Path type directly #dev should i use the .map() trick to get the value from inside it? #dev (for prover_witnesses when used by the API user, storing the Path inside a Value) #dev I don't understand #dev I suppose you can, yeah #dev i think the issue is that .from_native() takes a native path, then wraps the values in Value::known() #dev ah a #dev Perhaps then they can be Values outside #dev And not wrap in there #dev we could do Witness::SparseMerklePath([Value::known(x1), ..., Value::known(xn)]) #dev So you could maybe turn PathChip.path into Values #dev then make a conversion function for crypto SDK's smt Path to #dev I have no idea if/how that works #dev Path is just an array of Fp, so i could make a conversion fn ez #dev Up to you, do whatever you think is the best solution #dev But I cannot guarantee it's safe/sound in zk #dev ok yeah looking closer this seems to be it #dev ACTION head about to explode #dev lol #dev :D #dev haumea: okay looking into zkas/parser.rs, are you talking about token.as_str()? #dev figuring out what the problem is, is the exercise #memes https://i.4cdn.org/sci/1709605649221657.jpg #dev I see, ty #random that's pretty cool, and from 11 years ago far out #random reminds me of a really good RPG that came out a few years ago: Disco Elysium, great game to play #random it's from 1980 #random that's pretty cool, had no idea this was even a thing #random this is a great grandad #random FPS before they existed ;) #random makes sense, there's always a precursor to something #dev brb #dev b #dev : @draoi pushed 1 commit to master: 48a5dc1b2b: net: simplify and reduce Hosts API by introducing HostContainer... #dev https://en.bitcoin.it/wiki/Wallet_import_format #dev Title: Wallet import format - Bitcoin Wiki #dev manually hashing the examples with sha256 or with my current rs code gives me the same result, but it does not match the example on the page #dev any idea what I might be mising? #dev s/mising/missing #dev manually: echo -n " | sha256sum #dev loopr: is this related to #dev? #dev yes, coz that's my current task #dev loopr: oh 17? #dev did you check if the example is mainnet or testned address and.or corresponds to a compressed public key?? #dev the example prefixes with 80, so it's mainnet, and it does not have a 01 at the end, so it's not a compressed pukey #dev upgrayedd: yes, task 17 #dev you double hashed right? #dev well I am printing step by step, as in the example #dev send the pastebin to check #dev so I would expect `echo -n "800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D" | sha256sum` to print 8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592 as in the example #dev But I get e2e4146a36e9c455cf95a4f259f162c353cd419cc3fd0e69ae36d7d1b6cd2c09 #dev my rs code prints the same #dev ok in a min #dev You shouldn't be hashing the hex, it's just a representation of the binary format #dev echo -n "800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D" | xxd -r -p | sha256sum #dev aha! #dev didn't even know this xxd tool #dev double thanks brawndo #dev yw #dev thats_why_he_is_the_goat_THE_GOAT.gif #dev https://yewtu.be/watch?v=465GqT_EuUA #dev Title: 429 Too Many Requests #dev lol #dev lol++ #memes haumea: the horror #random test #random test back #random test #random test back #dev in https://en.bitcoin.it/wiki/Wallet_import_format, the key is in hex format #dev Title: Wallet import format, - Bitcoin Wiki #dev what if the key is in bs58, like darkfi's `SecretKey`? #dev : dasman reassigned task (kohufk): indicate unconfirmed tasks in italic to @dasman #random fcmp xmr update https://repo.getmonero.org/monero-project/ccs-proposals/-/merge_requests/426#note_23419 #random Title: j-berman full-time 3 months (part 6) (!426) · Merge requests · monero-project / CCS Proposals · GitLab #random https://yewtu.be/watch?v=GhNljgiQKp8 darkfi mentioned a few times throughout #random Title: 429 Too Many Requests #dev I opted to try decoding bs58 first, and then continuing if it failed. downside ofc is performance loss everytime it's not bs58 encoded #dev https://codeberg.org/darkrenaissance/darkfi/pulls/250 #dev Title: #250 - WIP: First iteration of task 17, WIF formatting - darkrenaissance/darkfi - Codeberg.org #dev incomplete, it's just a request for feedback to sense if things are going into the right direction #dev please review, be thorough, severe but fair - i'm learning #random test #random test back #dev gm #dev gm #dev gm #dev : @draoi pushed 1 commit to master: a5c756bb1c: store: cleanup... #dev gm #dev loopr: your commit message is bad #dev you made this just for secret keys, but as said in the task, it's for *all* user supplied input such as DAO bulla or public key #dev why are you returning Box? we have a darkfi error.rs #dev also remove all those crates you added to Cargo.toml #random https://www.inverse.com/input/tech/modos-paper-e-ink-laptop-black-and-white-screen-computer-with-no-backlight #random Title: Modos's E Ink laptop could save your eyes from the scourge screen time #dev gm #dev hanje-zoe: I think it's fine to implement a trait called `Wif` which should then be able to take any 32-byte input #dev yes #dev doesn't even have to be a trait, just bytes + bytecode #dev Trait is better IMO since it "extends" functionality #dev And we'll be more explicit with types #dev ok #dev So you'll know, when coding, what you're dealing with #dev Just bytes are too arbitrary #dev You mentioned this already, when you were making the Blind types and similar #dev yep makes sense #dev the issue with is esp when refactoring, it's easy to swap things around. if everything is pallas::Base you might make such a mistake but not notice it because the values are 00...00 (for example) #dev but yeah in general types are gud #dev loopr: It should also use BLAKE3 instead of SHA256. Then you also don't have to double-hash, it's enough to hash once. #dev I think we also don't need hex encoding, you could only use base58 #dev Then for encoding/decoding, you should implement Display and TryFrom #dev hanje-zoe: I want to do some cleanup in script/research. Can I delete: #dev * antisapling #dev * bulletproof-mpc #dev * last_man_standing #dev * vm-db-types #dev * wif #dev * homomorphic_encryption #dev . #random test #random test back #random oh god yes #random wtf the demo is so good #dev : @parazyd pushed 1 commit to master: 4762c51f35: research/tfhe: Dark market implementation using FHE #dev hanje-zoe: Merry xmas :D ^ #dev !list #dev No topics #dev maybe we should keep bulletproof-mpc, and maybe last_man_standing since they have code #dev i tried `make plain` #dev you're so fast it's unreal #dev ok plain is the normal matching, and fhe shows the FHE version #dev Yeah there's various algos #dev There's versions using all cores #dev (parallel) #dev what's -improved mean? #dev It's a faster algorithm, but harder to read/understand #dev aha #dev See the difference between plain and plain-improved #dev a lot of people reckon this will improve #dev Yeah it's getting better #dev And zama.ai is doing really good work #dev i have the TFHE pdf but didn't study it yet #dev but i get the general idea of using the circle [0, 1) #dev Likely torus will be the one that succeeds #dev At least it seems that most work is being put into it #dev : @parazyd pushed 2 commits to master: 1297ff7b07: src/time: Implement and use {over,under}flow-safe API #dev : @parazyd pushed 2 commits to master: 30ebc50b3a: chore: clippy lints #random Apple terminates Epic's developer account because of a tweet their CEO put out: https://x.com/paulg/status/1765431238985187525?s=20 #dev brb #random test #random test back #dev b #dev loopr: https://darkrenaissance.github.io/darkfi/dev/dev.html #dev Title: Development - The DarkFi Book #dev why use arrayref! when you can just do array[0..4]? #random yoo #random test #random test back #random hey cheese #random whats up deki #random drinking some kombucha rn, you? #random nice, what flavor? i'm not doing too much just reading #random it's mango/passionfruit, pretty nice :> #random nice, mango is one of my favorites #random how'd you get into darkfi? #random came across it on twitter earlier this year, what about you? #random im interested in zkp and thought it was an interesting project #random yeah I've been learning a lot about ZKP because of this, heard about them last year but only recently started learning about them #random it feels like there's so much to learn, how have u been going about it #random there is lol I've mostly been focusing on learning Rust, I was doing a fair bit of ZKP study, but putting that to the side for now to focus on Rust #random I'd say just focus on one thing #random yea that makes sense #random i'm reading about different zk programming languages and VM's right now. id like to start doing more dev work #dev : @parazyd pushed 1 commit to master: 8778d57b42: chore: Update crate dependencies #dev : @parazyd pushed 1 commit to zero_cond_gate_simplification: 7b5b9361f5: zk/gadget/zero_cond: Simplify ZeroCondChip PLONK gate... #dev : @parazyd pushed 1 commit to master: 1215a4e701: zk/gadget/zero_cond: Simplify ZeroCondChip PLONK gate... #dev : @parazyd pushed 1 commit to master: 258849f79e: zk/gadget/zero_cond: Simplify ZeroCondChip PLONK gate... #dev : @parazyd pushed 1 commit to smallrangecheck_assert: 8e3edcb3cb: zk/gadget/small_range_check: Assert that `range > 0` in range_check() #dev : @parazyd pushed 1 commit to master: 8e3edcb3cb: zk/gadget/small_range_check: Assert that `range > 0` in range_check() #random cheese: https://darkrenaissance.github.io/darkfi/dev/learn.html #random Title: Learn - The DarkFi Book #random you can ask help on here and also checkout Libera IRC #rust channel #random ##rust #dev : @parazyd pushed 1 commit to scalar_witness: e3634955ab: zk/vm: Witness Scalar values at the time of witnessing rather than time of use. #dev : @parazyd pushed 1 commit to master: e3634955ab: zk/vm: Witness Scalar values at the time of witnessing rather than time of use. #dev : @parazyd pushed 1 commit to remove_unused_literal_enum: 60aa076763: zk/vm_heap: Remove unused Literal enum #dev : @parazyd pushed 1 commit to master: 60aa076763: zk/vm_heap: Remove unused Literal enum #random test #random test back #dev : @draoi pushed 4 commits to master: d19f962830: net: replace downgrade, upgrade and blacklist methods with one method: move_hosts()... #dev : @draoi pushed 4 commits to master: e46cb5d55a: chore: cargo fmt #dev : @draoi pushed 4 commits to master: 4883b2f213: Revert "chore: cargo fmt"... #dev : @draoi pushed 4 commits to master: fe18477578: chore: remove lingering merge artifact + cargo fmt #random test #random test back #markets https://multicoin.capital/2024/03/07/the-holy-grail-of-cryptography/ #markets Title: The Holy Grail of Cryptography - Multicoin Capital #dev : test #dev test back #dev : test back #random : test #random : test back #random test back #random : so empty is this place. am i all alone here. loneliness oh loneliness. im quitting. godspeed #random : hi anon that's cos darkirc is still under active dev #random : and is semi-stable #random : we are using ircd for comms #dev gm #random lol the schizos #dev gm #dev gm #random xD #dev gm #dev gm #markets https://www.asianometry.com/p/is-the-ai-boom-real #markets Title: Is the AI Boom Real? - by Jon Y #markets > But Ben Thompson and others have been saying for a while that AI is an enabling technology - a technology for making the rich richer, rather than making a whole new class of rich people like the PC or electrification was. #markets i'm not sure which article that is, but i found this https://stratechery.com/2023/ai-and-the-big-five/ #markets Title: AI and the Big Five – Stratechery by Ben Thompson #markets also https://www.dwarkeshpatel.com/p/will-scaling-work #markets Title: Will scaling work? - by Dwarkesh Patel - Dwarkesh Podcast #markets so interesting seeing crypto vs AI, AI is not only entrenching the power of the system, but its billionaires too #markets hanje-zoe: and apparently no one should worry... 'look at this fancy new 'AI' that just scans my emails and just auto generates a response'... language and communication between humans? naa why bother, too much work. #random interesting to have no idea who is in the channel... kind of like a dark forest #random i think.. #random test #random test back #random nice #random !hackersays #random “If we'd asked the customers what they wanted, they would have said "faster horses". #dev : @parazyd pushed 1 commit to condselect_unittest: 69ec231a14: zk/gadget/cond_select: Implement gadget unit test #dev : @parazyd pushed 1 commit to master: 69ec231a14: zk/gadget/cond_select: Implement gadget unit test #dev (I'm doing this as PRs so we can reference them in the audit report) #dev : @skoupidi pushed 5 commits to master: e8d5b312aa: validator: clippy chore | darkfid/task/miner: minor logs added #dev : @skoupidi pushed 5 commits to master: 99d149dd9b: darkfid/tests: forks sync test added #dev : @skoupidi pushed 5 commits to master: c6637029fe: darkfid: remove second miners p2p... #dev : @skoupidi pushed 5 commits to master: 9d1123bec7: net/message_subscriber::MessageSubscription: new fn clean() added to purge existing items from the receiver channel #dev : @skoupidi pushed 5 commits to master: 39223c6a98: darkfid: fixed fork sync issues #random Pheww finally this works #random nicee #random Took me a while to build ircd somehow #random welcome airpods69 #random Thanks draoi, how are you doing? (casual chit chatting if the channel rules dont mind, gotta still read the rules) #random hi #random yeah #random is fine for chatz #random fair enough then, though, I do have a question, the topic of channels should be "n/a" right? or did I miss out on something? #random Yeah, you can set them for yourself with "/topic foo bar" #random But doesn't propagate to other ppl #random Also you can permanently do it in the config file #random perfect, shall do. Gotta check out the config file too. I saw a post on lainchan about darkfi's hiring (Exact thread: https://lainchan.org/%CE%BB/res/38069.html#q38324) so I was setting it up in a hurry to check what it is exactly so skipped a few things here and there. #random Title: /λ/ - Programming Employment #random :) #random (hiring wasn't the reason xD) #random <3 #markets $70k/$4k ftw #markets still keeping my laser eyes on twitter until 100k tho... #random test #random test back #random test again #random kakakak #random jajaja #dev Hi! haumea: hanje-zoe: I have been reading through the documentation and the wonderful odyslam blog article, and got an idea about how zkas and contracts work. #dev My strategy up now is to first work on the idea of the scheme and implementation on paper, once we agree that's correct then move into the actual implementation. #dev And lastly make an tutorial about it. #dev sounds good ++ #random :P #dev So far, I have learned that a sm follows some general implementation steps: (1) define the function selection, (2) Deserialize the metadata to verify signatures and zk-proofs (3) Implement the logic and the state trasitions (4) Commit and update the state. #dev hanje-zoe: Great (y) #random https://twitter.com/lunarpunksquad/status/1766007704760299832 #random for anyone not in the lunardao public ircd room, but would like to join: #random https://wiki.lunardao.net/ircd.html#join-an-unencrypted-channel #random Title: ircd #random its an unencrypted channel, update your ircd config file with #lunardao on the autojoin = [ ] setting #random im there #random hello everyone #random hello wow :D #random this is cool, and happy to see how this chat ircd is setup; pretty neat. #random no dumb discord stuff #random hi ninsere #random hey wow, did you just join today? #random hey sadar, a day or two ago or something #random ++ #random if you wanna join the lunardao public channel, check that link above #random nice, i'll have a look. but why is it unencrypted, and not like this, i guess to keep track of who is around or something? #random doesn't it use the same ./ircd? #random this is a public channel too (which means its unencrypted) #random (cant rly check links now, but will check soon) #random oh, #random is unencrypted too? #random i guess i see a log section on the site #random you can make encrypted channels https://wiki.lunardao.net/ircd.html#join-an-encrypted-channel #random Title: ircd #random oh, k - understood. #dev hey devs, I am facing again similar error, happened in docker build sometimes, worked in x64 for commit 96a2e0b65f7, but: for arm, even on hw(armv8), after removing "pathfinder" in Cargo.toml that breaks arm build, the problem is back :( https://0x0.st/Hh8U.tail.txt harness.rs again, test tests::sync_blocks ... FAILED #dev any tips ? #dev please ? #dev root: did you pull latest master? latest commits fix that test #dev that one is from 2024-03-05, I can try more recent, but (1) mentioned commit worked for dockers for x64 / not even on pure armv8 hw (2) that would require again to run : #dev "find working buid" as you usually do not have working master. so I may try later, before that, any "other tip" please ? #dev latest commit 39223c6a98aa53402fac8696d493c352c3541755 should be building on x86 platforms #dev for exotic ones it depends wether or not dependencies have been ported there #dev some hacks/ports may be required #dev ah ok, so arm is "exotic". I believe wrong deps would fail sooner than with the test (and this particular one causing problems earlier as well / docker + SHM). https://0x0.st/Hh8U.tail.txt is the output tail. FYI it was working including docker builds (and tests) in February for arm and x64. so what hacks you mean are required for the changes in last month ? I am drinking wine, but I am not sure the #dev alcohol level is the in my blood is the cause of the misunderstanding I feel ;) #dev arm is pretty much standard these days, was talking for arch like riscv, were not everything is "native" yet, so some extra handling is required #dev if it builds, then errors are usually code bugs #dev good point. the problems show in different archs / dockers that would not be discovered otherwise. I may try some memchecks / valgrind later, just looking for quick tips if anybody has. #random test #random test back #dev I discovered "c" bug once in some old cryptocurrency via arm build long time ago, crazy times ;) #dev > loopr: It should also use BLAKE3 instead of SHA256. Then you also don't have to double-hash, it's enough to hash once. #dev intrigued but also confused. intrigued: how can a different hash function yield the same hash? #dev confused: the examples there explicitly use 2 sha256 funcs, and notably: #dev > 5. Take the first 4 bytes of the second SHA-256 hash; this is the checksum. #dev but if we skip the 2nd hash, how can the checksum be correct? in fact in my first testing the 2 solutions (a: 2*256 sha256, b: blake3) largely are identical, but the last 4 bytes do not match #dev a: 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbVdEsFw #dev b: 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ #dev > why are you returning Box? we have a darkfi error.rs #dev yep I saw that but fns I am using (e.g. encode_b58c_plain) in the implementation were returning Box, and it hadn't been able to match those to darkfi errors #dev I guess I'll have to try harder #dev > also remove all those crates you added to Cargo.toml #dev loopr :: SHA-2 vs SHA-3, I support security upgrades #dev don't get this part, are we not allowed to add any new crates to the project? is there another way to use external code without adding crates to Cargo.toml? #dev do you even mean we have to implement everything by hand? #dev root: sure, so do I, but don't see context #random "dark forest" is scary stuff ;) https://www.google.com/search?q=liu+cixin+dark+forest ; 3 body problem on Netflix soon ;) #random Title: liu cixin dark forest - Google Search #random https://www.google.com/search?q=liu+cixin+dark+forest #random Title: liu cixin dark forest - Google Search #dev sha256 vs blake3 #random challenge for whomever was telling me AI is laughable only to recognize very soon it can produce "decent results". Now is freely available Orca-Math that is a 7 billion parameters model created by fine-tuning the Mistral 7B model. Orca-Math achieves 86.81% on GSM8k pass@1, exceeding the performance of much bigger models including general models (e.g. LLAMA-2-70, Gemini Pro and GPT-3.5) and #random math-specific models (e.g. MetaMath-70B and WizardMa8th-70B). Can anybody even do better than Orca-math ? And if yes - how much better ? And if much better, how long do you think you can keep your advantage ? #random root: you still need to understand what you're trying to solve. You can't just blindly use these tools without knowing anything about whatever formula you're using #random same as using a calculator #dev loopr: SHA256 and BLAKE3 wouldn't yield the same hash #dev loopr: It does not matter, the logic matters. #dev loopr: BLAKE3 does not have the length-extension problem like SHA256 does, so that's why it is enough to hash once. #dev loopr: For base58 we already have a dependency called "bs58" #dev gm #dev gm #dev I'll be afk until afternoon #random random typing on calculator does not give you anything, deki. But trying to talk to genAI can give you something actually #random I was able to solve Quantum Explorers to highest rank using free chatGPT, yet I know nothing about the subject. Is that enough ? #random BTW I am happy that I saw a note about darkfi adding some quantum awareness stuff recently. Was a bit sad the other day Narodnik closed my https://github.com/darkrenaissance/darkfi/issues/90 with "Quantum computers will have a decade before becoming an issue" #random Title: Check that the cryptography used is sufficiently quantum secure. · Issue #90 · darkrenaissance/darkfi · GitHub #random root: "only to recognize very soon" #random when quoting someone, either put the full quote or don't quote them at all #random don't take words out of context to serve your narative #random you missed the whole point of the convo and you are still blind by hooneymooning with it #random Maybe, sorry if I did. Nevertheless genAI *present* results are *decent* to say at least. That is my point #random 2024-02-29 23:33:48 upgrayedd ... but right now, its laughable ... 2024-03-01 01:20:00 upgrayedd root: for a language prediction model, thats decent, but... #random is that ok for "only to recognize very soon" ? #random but again, I am not here to argue, really, there is no point wasting anybody's time #random this is not an argument, its a friendly discussion :D #random and no its not ok, since what comes after the "but" presents the full picture: " still not impressive in my book" #random by using the phrase "only to recognize very soon" you are pressenting a change of opinion #random which is false #random and if you recall in the conco, I specifically stated from the getgo that my "beef" is with how its marketed #random s,conco,convo #random re: "Is that enough ?" #random If your goal is to grab a quick and dirty answer to what you are looking for, it seems enough. Current state of LLM is more like a quick search engine for people who don't know or can do proper research. What is better? To properly understand and learn the subject, or just grab a quick answer, call it a day and gain surface knowledge without ever checking out its correctness? #random I like the calculator example deki mention, does by using a calculator to solve y = x + 1 makes you a mathematician? Or it just gives you a quick answer to a problem you have? #random Do you need to understand how the equation is solved? Then you need to research it. Thats where LLMs come handy, since they can do that research quicker than you, if you don't know what to search for. #random Its not AI, and its current state is stil laughable, especially if you know the inner workings of such tech and how they are presented/marketted to the public #random That being said, I will once again state that I really like that a huge focus of the tech community is trying to improve it, albeit for the wrong reasons right now(ride the hype train for profit), but as of right now, we still have a long to go to reach something that can be properly described as AI. #random Although to be realistic, I recognise that current state is "enough" for a large % of users, as they just want that quick answers and surfice "knowledge" to solve stuff faster #random But I dissagree with it, for the same reasons I dissagre with using an IDE's autocompletion to generate code #random since a lot of users, will just generate and never even read what was written #random As long as a seemingly correct result is produced, we are good. #random Ain't that naive to say the least? #random https://www.youtube.com/watch?v=UJei9wiZYyQ #random Title: The 25.3" COLOR EINK Bigme B251 Monitor Review - YouTube #random https://www.youtube.com/watch?v=TJqeCpxxt7w #random Title: Unboxing the COLOR E-ink Monitor (BIGME B251) - YouTube #random can't wait for a laptop with this screen #random would be amaze if framework made a color eink screen <3 dream laptop #random https://www.youtube.com/watch?v=480xteW2wq4 #random Title: Modos Paper Monitor Typing Demo - YouTube #random like this. been trying to convince them to sell me one in their matrix #random https://www.youtube.com/watch?v=JKvU_r0tdzc&t=10s #random Title: Lenovo Thinkbook Plus 4 Eink Twist Laptop Review - YouTube #random about AI, chatgpt 3.5 writes rly shit code. probs chatgpt 4 is better but i haven't tried it. but if there's an expotential increase in quality like how there was for video generation then probs AI can write increasingly complex stuff. tho i'd be worried about it hallucinating hard to detect bugs #dev brb #dev https://www.dolthub.com/blog/2024-03-03-prolly-trees/ #dev Title: Prolly Trees | DoltHub Blog #dev this would be good in the future (post-mainnet) for wallets #dev !topic updatable SMT #dev Added topic: updatable SMT (by hanje-zoe) #dev b #dev gm #dev : @zero pushed 1 commit to master: 376784af2e: zkas/zk: add sparse_tree_is_member() opcode #dev ^ could i get a review on this? #dev can we change HEIGHT in SMT to DEPTH? for merkle stuff, we always use depth so would be more consistent naming #dev also i put the type(def)s for PathConfig/PathChip in src/zk/vm.rs, lmk if they should instead go in src/zk/gadget/smt.rs ... i wanted to leave smt as generic as possible without specialization #dev ACTION will now patch DAO::propose()/vote() #random it is troubling that people rather just use LLM than spend the time to research and learn something. #random AI cryptography: https://medium.com/@birajkarki9849/understanding-galois-fields-the-heart-of-aes-encryption-a81b237be907 #random Title: Understanding Galois Fields: The Heart of AES Encryption | by Biraj karki | Medium #dev !deltopic 0 #dev Removed topic 0 #random wow: they'd rather "go fast than do it right", see https://www.youtube.com/watch?v=n__GJuqLb00 #random Title: You're a beta male, Sonic. - YouTube #random hanje-zoe: how do u even verify any of the output of an llm without knowing if it's valid or not; like any conversation with a person in real life you'd have to verify that stuff with your own knowledge base. so why not do the damm research in the first place. #random or maybe it is about increasing the illusion of some metric of productivity so they can hype sell stuff #dev brawndo: you mean the resulta actually doesn't have to match the ones in the bitcoin wiki page? We just care about the process? #dev guess it makes sense, I assume a darkfi key outsider darkfi is meaningless so interoperability is not a goal #dev brawndo: tw we have bs58 and not bs58 #dev sorry, typing on mobile is awful #random shortcuts rather than doing the real work #dev btw we have bs58 and not bs58check in our crates, they are apparently not the same #dev bs58 yields longer strings #dev loopr: https://docs-rs-web-prod.infra.rust-lang.org/bs58/0.2.5/bs58/#optional-features #dev Title: bs58 - Rust #dev oops - hadn't jumped to optional features, thanks upgrayedd #dev Base56Check is specific to the bitcoin WIF witch uses sha256 #dev you don't need it #dev the task is to create a similar thing using our stuff, not create the rust equivelant #dev we don't use sha256 so by default it will never work #dev for example our algo would look like: #dev 1. take a private key bytes #dev 2. append prefix bytes on the front(I don't think we need/have compressed public keys) #dev 3. Hash it using blake3 #dev 4. Take first 4 bytes, thats the checksum #dev 5. Add the checksum bytes at the end of extended key from step 2 #dev 6. convert bytes array to string using bs58 encoding #dev ^^ PrivateKey -> WIF #dev Oh #dev WIF -> Private key: #dev 1. Take the bytes of a WIF string using bs58 encoding #dev 2. Drop last 4 bytes (checksum) #dev 3. Drop first byte (prefix) #dev Thats your private key bytes #dev gg easy #dev gotcha #dev Would I had been able to pick this spec somewhere before? #dev you can first do it in a simple rust script(or test) #dev to verify both ways #dev loopr well thats the point of discussing the tasks here #dev I just went following the wiki #dev this is not a spec, I just came up with it #dev although it was discussed more thoroughly with hanje-zoe some mtg ago #dev want me to write the WIF checksum checking also? I think you got the hang of it #dev I see. I think I was too #dev eager to show something quickly instead of first asking #dev I understand, but you see that thats not always desirable #dev in terms of wasted time #dev upgrayedd: yeah I got it #dev absolutely #dev this is used not just for private keys, but for sharing any data in general #dev ++ the trait should be just for a bytes array #dev loopr: wanna race who's gonna make the rust draft first? XD #dev i am gonna participate in a local hackaton in 1 hour...you would win undoubtedly #dev oh, I either underestimate the time to produce a draft, or you overestimated it #dev should be like 10m tops XD #dev didn't have breakfast nor shower yet, but if you like, I can give a shout when I get say 20mins and we can give it a go #dev considering your tume zone ofc #dev s/tume/time #dev sure, although I would probably just do it while you are away XD #dev drafts are disposable, the trait code is the real thing we want so it doesn't matter who did it first #dev ok fine #dev hanje-zoe: "sharing data in general" now makes sense #dev upgrayedd: you have my pubkey? care to send me a msg? I have a superquick one-off q for you... #dev loopr paste it here and will check, might have you under different alias #dev Ok will do later as I actually don't have it on my mobile, duh #dev looprt: https://pastenym.ch/#/e6uUKXbn&key=ca36d34ff4a560b6e9d510bccba698f0 #dev Title: Pastenym #dev loopr #dev pastenym formats funny for some reason, so do some auto inteding on your editor #dev hanje-zoe: feel free to also take a look #dev brawndo said there should be a trait so types can indicate their own prefix byte(s) #dev hanje-zoe: remember this is a draft lol #dev ++ #dev brawndo: for smt non-membership, i've been reading the code but don't see how we prove a value is not in the set #dev certainly if x is in the set, then we can prove it is with the correct path #dev likewise if x is not in the set, we cannot present a valid path #dev but if x is in the set, surely you can present an invalid path that doesn't hash to the root? #dev i think we also need to have the path stored, then check the path corresponds with the leaf #dev and check the leaf = None #dev although maybe i misunderstood, was reading this https://eprint.iacr.org/2016/683.pdf #dev https://eprint.iacr.org/2018/955.pdf #dev so proving that the leaf at a certain index = None => leaf is not in the tree #dev like this https://blog.iden3.io/sparse-merkle-trees-visual-introduction.html #dev Title: Sparse Merkle trees: a visual introduction - Iden3 project blog #dev this is really good https://hackmd.io/@aztec-network/ryJ8wxfKK #dev Title: Merkle Trees - HackMD #dev . #dev . .... #dev loopr: cat on keyboard? #dev message to the future #dev yeah #dev loopr: did you see the code I send? #dev btw I guess it's no problem to "ambassador" darkfi in local events I suppose? #dev not presenting myself as an "official" yet, just talking to people #dev upgrayedd: I saw you sent something but didn't open it yet #dev loopr: lmk if the link doesn't work to resend #dev upgrayedd: the link opens but it kinda stucks in "Paste being loaded" and nothing happens #dev sec #dev I am tho on a VPN through the hackathon pub wifi #dev loorp: https://pastenym.ch/#/JLbEn1HC&key=3d9792c8942f4a12bbe09e93e48382dd #dev Title: Pastenym #dev try this one #dev yep that worked #dev thanks #random test #random test back #dev my pubkey: 4rzHWemAB35pLjGZeKeCdGYKRa3ZG5QNRGcrJecwjgU3 #dev loopr: FfrD6FVbQZmbA5TQVxeRra4cAryH8ijC9G3r2BieFzSs #dev loopr: send DM when you add me #dev hanje-zoe: A sparse merkle tree is ordered #dev hanje-zoe: So a non-inclusion proof is proving that a certain leaf is null #dev upgrayedd: sent DM #random : test #random test back #random : test back #random : back again not quitting #random : test #random test back #random : test back #random test #random test back #dev brawndo: so don't we also need to check the position is correct too? the current impls don't use any position #dev aztec uses an smt with a depth of 256 to store their nullifiers #dev it adds slight overhead for update/check inclusion (non-zk) which is good for money since it doesn't impact perf #dev checking non-inclusion inside zk does indeed take 256 hashes though but worth it for DAO::propose() since there's no other way to check coins being used are unspent #dev (currently we dox the coins by revealing nullifier public) #dev if you agree (checking i didn't miss sth), then i'll work on these changes #dev : @draoi pushed 3 commits to master: a5687f973b: store: reject peers that already exist on the white or gold list.... #dev : @draoi pushed 3 commits to master: 094c7f957a: lilith: upgrade to new hosts API #dev : @draoi pushed 3 commits to master: 35a72c81a9: net: fix bug that was causing duplicate hostlist entries... #philosophy https://thisebikelife.com/e-bikes-overtake-buggies-for-some-amis/ #philosophy Title: Not Acceptable! #philosophy > The store is totally off the grid, something that is important to Amish families, but it is not lacking in electric power. #philosophy interesting, seems for the amish, the non-modern tech is about dependence on the system rather than the tech itself #dev brb #philosophy https://sts10.github.io/2015/09/14/bell-labs-the-idea-factory.html #philosophy Title: Bell Labs: An Institute of Creative Technology #random https://samwho.dev/numbers/?fo #random Title: Numbers #dev : @zero pushed 1 commit to master: 1f95e4f53c: sparse merkle tree example #dev : @zero pushed 1 commit to master: abc318b096: smt.py: add missing check for position #dev brawndo: ^ check this commit abc318 and if it's correct, then i can add it to SMT #random IRC was originally meant to be a p2p protocol: https://en.wikipedia.org/wiki/IRCnet#History #random Title: IRCnet - Wikipedia #philosophy this is a fun one lol https://www.youtube.com/watch?v=LZMl4GyqljE #philosophy Title: Jason Reza Jorjani FULL Interview (Unedited) - YouTube #random https://www.hsph.harvard.edu/nutritionsource/what-should-you-eat/vegetables-and-fruits/ #random Title: Vegetables and Fruits | The Nutrition Source | Harvard T.H. Chan School of Public Health #random significant improvement in heart disease and blood pressure #dev : @zero pushed 1 commit to master: 667e1505ec: smt.py: modify impl to match the impl we have in rust #random test #random test back #random where on the planet can you withdraw fiat from crypto at an atm without kyc? #random hanje-zoe: there's a movie forks over knives that said if amerikkkans ate mostly veg & fruits instead of meat and processed garbage healthcare costs would drop 70%. fraud GDP measures sickness rather than health lol #dev hey #dev gm #dev gm #dev gm #dev brawndo: ping me when you have a sec #dev hanje-zoe: pong #dev hey branwdo, will discuss more in the meeting, but just wanted to see if i'm on the right track #dev !list #dev No topics #dev aztec uses a 256 level deep SMT, and i think we need to make the position explicit #dev my rough WIP: https://agorism.dev/uploads/smt.diff #dev Yeah so I don't know what is the maximum capacity of the BTree #dev i'm making it a trait so it can be used in wasm with db_set/db_get #dev In our impl they get ordered by index #dev (SmtMemory, SmtDb .etc) #dev What is your question precisely? #dev yeah the SMT is really good #dev in the Path, I want to introduce a new type called Position and add that to the gadget as well #dev so you can say this leaf = None, right now i think you cannot guarantee that with the path #dev Did you try modifying the tests to prove that? #dev It would just be Fp::ZERO #dev (The leaf) #dev but if i give you a path, how do you know it's leaf 5 i've revealed and not leaf 6 (which is none)? #dev i made a python file: script/research/smt.py #dev !topic SMT changes #dev Added topic: SMT changes (by hanje-zoe) #dev ok i'll make that unit test and continue this work until meet later #dev didn't want to disturb your focus, just checking in #dev sec just looking at the code #random linux mint creating a new IRC chat to replace hexchat: https://www.omgubuntu.co.uk/2024/03/linux-mint-new-jargonaut-irc-chat-app#8fd75e9c-8bf5-49a2-8815-326278d0548c-link #random Title: Linux Mint is Building a New Desktop Chat App - OMG! Ubuntu #dev kk ty #dev Yeah the point with a sparse merkle tree is that it should be ordered #dev So given any leaf you should know its position #dev Perhaps your thinking is correct though, in zk I don't know how it would work #dev the issue here is that leafs can sometimes be None though #dev so if i want to prove that a particular position is none, i need to give you the path #dev They're not None #dev (not to do with zk) #dev You're proving that it is Fp::ZERO #dev i mean empty_hash #dev yeah sure 0000, None .etc #dev Yeah so a non-inclusion proof is profing that some leaf is zero #dev i can give you any path for a 0 value to prove a leaf is 0, even if it isn't 0 #dev did i understand correct? or i'm missing sth? #dev Shouldn't be like that #dev // 7 is none #dev let proof = smt.generate_membership_proof(7); #dev // show leaf 0 is none #dev let res = proof.check_membership(&smt.root(), &default_leaf, &poseidon).unwrap(); #dev but .check_membership() doesn't have the position for leaf 0, so how do we know this is for leaf 0? it could be any leaf #dev Yeah I think we need the position #dev ok cool tyty #dev i was sure i missed sth cos it's so well written and read and re-read the code several times #dev :D #dev !deltopic 0 #dev Removed topic 0 #dev !topic mainnet status #dev Added topic: mainnet status (by hanje-zoe) #dev !topic SMT changes #dev Added topic: SMT changes (by hanje-zoe) #random hello world #random hi rex #random she's alive :) #dev : narodnik added task (xf5EUY): ability to use task RefIds instead of ID. assigned to dasman #random first time using this thing, so need to figure out this ui. first time ever on an irc client #random hi draoi #random welcome #random it's the future #random :) #random feels like 1992 :) #random i'll be back for the 16:00 call just to listen #random tty #random s/listen/read #random :) #random true. #dev gna be offline intermittedly as testing some net stuff #dev gl #random test #random test back #dev !list #dev Topics: #dev 1. mainnet status (by hanje-zoe) #dev 2. SMT changes (by hanje-zoe) #random nice, a new irc client #dev bruh, I had a mini heart attack, I had some changes in tau and was wondering why I'm not syncing xf5EUY #dev anyway, tau xf5EUY is already done #dev : @dasman pushed 1 commit to master: 66d5e760b9: bin/tau: accept full RefIDs as IDs as well #random any suggestions for dns providers others here like to use? #random root: https://x.com/moyix/status/1752025720082076153?s=20 #random LLMs not good at cryptography #random SIN: OpenNIC #dev : @skoupidi pushed 1 commit to master: 3a446cecfd: darkfid,minerd: better mining abort signaling between the two daemons #markets price action is bonkers. I heard someone said that we are over extended. Doesn't look to be bothering banks though, they keep buying at any price #markets saw someone saying bitcoin flippened silver #dev oh nice dasman, apologies i didn't see it and refIds weren't working for me #dev was only first 6 chars, but now either that or full refid should work #dev ahh cool ty #dev but can you make it any set of chars? #dev like in git #dev sure #dev for example 1f95e4f, 1f95e4f53c8e or 1f95e4f53c8edbe586 works #dev try running: #dev git show 1f #dev : @dasman pushed 1 commit to master: 5dec33a632: bin/tau: accept RefID in any length #dev you can still use local # ids #dev ++ ty #random test #random test back #dev : dasman stopped task (xf5EUY): ability to use task RefIds instead of ID #random so, if i understand zk correctly, darkfi uses zks for privacy, but not scaling. what's the expected block size? #random test #random test back #random off-topic: what is the fuzz about ppl rejecting systemd #random is this still a topic after 20 years? #random well I never discussed it so yes #random it used to be people being annoyed that it overrides what they would like to do and has been foisted upon those who like some alternative. a quick search confirms that as of 2017 the discussion was still raging #random i'm no guru, so have never cared #random yeah I admit I have been happily using systemd ever, just systemctl start looked nice and standardized #random the discussion started around the time that running the distro of the month was a thing, as some distros had it and others didnt #random gotcha #random rex: "people being annoyed that it overrides what they would like to do" it goes way deeper than that... #random i'm sure there is nuance ;) #random its nuance when you are breaking core unix principals #random i've been subjected to enough rants on slashdot back in the day #random but i do remember that systemd overrode more than just wishes #random upgrayedd: like what #random do 1 thing and do it right? #random ++ #random most of it is bloat that you won't ever need or use, and when you try to actually use it you will find out its hell #random i think it used the wrong directories or ignored stuff that was supposed to be run. basically it threw unix convention out the window. or something to that effect. basically, you have to do things the systemd way or it will f*ck you #random I am sure for more complex stuff that will be the case #random But usually for me it was writing a simple unit file, and have a service run on boot #random thats what an init system suppose to do, just that, start something on boot #random systemd does hella more than that... #random ok #random the problem become greater when devs started using it as a dependency for convenience, therefore "addoption" came due to incopetence, not that it was better that what it was supposed to replace #random resuming, would you say that for a lightweight distro skip systemd and look for initV? #random and people started accepting it as the "standard", labeling people against it as "nuance users"... #random loopr: linux system is not just code, but also a philosophy #random well that would explain why systemd got to the front - not many *get* philosophy... #random http://suckless.org/philosophy #random oops i meant to link https://suckless.org/sucks/systemd/ #random Title: software that sucks less | suckless.org software that sucks less #random ++ #random not using systemd makes you smarter #dev Hi #random (see the bottom) #dev Hello #random loopr: I use openrc and runit, not an initV user so I can't really recommend it #random I am going to reuse a 8 years old laptop for play and I am in the fun of choosing a lightweight distro #random it's just these days we seem to make software that is bigger and more complex but not better #dev yo #dev gm #random ok thanks for convo #dev hey #random the software still runs the same speed eventhough hardware is 100x #dev yo #dev GN #random slower #random and it looks like shit, using electron .etc #dev !list #dev Topics: #dev 1. mainnet status (by hanje-zoe) #dev 2. SMT changes (by hanje-zoe) #dev hihi #random software definitely runs slower these days #random cross-platform UIs is still an issue tho #dev https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html#mainnet-tasks #dev Title: Contribute - The DarkFi Book #dev https://darkrenaissance.github.io/darkfi/arch/arch.html#release-cycle #dev Title: Architecture - The DarkFi Book #random but yes, defo agree #dev !start #dev Meeting started #dev Topics: #dev 1. mainnet status (by hanje-zoe) #dev 2. SMT changes (by hanje-zoe) #dev Current topic: mainnet status (by hanje-zoe) #dev i was looking over those tasks (in the contrib page) #random buy a new box, thinking everything will now just fly, only to be disappointed (until you start fiddling) #dev we are so close to mainnet, we need to push this out there #dev i plan to sometime (after SMT task) this week reorganize those tasks into high and low priority #dev once we can release, we capture market cycle, and can take a breath. it seems we are on the 20% phase #dev I'm focused on darkfid right now, consensus seems to run smoothly without hard forks, every node converges correctly etm. #dev nice, i'm going to fix up the DAO then focus on updating the drk tool #dev so right now I'm mainly focussed on performance, since I see a lot of headroom with regards to how we handle things #dev i want to do a thorough review of the net code as well and apply hardening #dev You do know we'll have to run the testnet for a few months, right? #dev yeah but we ideally should get the code review done at the same time #dev yeah was thinking that the next milestone is testnet rly #dev mainnet is close wrt tasks, but not practically #dev after we finish the dev tasks, we get a code review and do Q&A ourselves #dev (also i'll complete spec, and we write more docs) #dev then there are non-dev tasks, which you're talking about brawndo? #dev It's testing and making sure things work, having a stable working testnet for a few months, etc #dev <0xhiro> happy to assist in non-dev task if there's any #dev hello Oxhiro #dev <0xhiro> hey draoi #dev there is a balance between making sure everything is secure/bug-free which the code reviews (assuming completed) help with #memes embrace the dark, release your light #dev other stuff is doing scaling tests ourselves, but we don't necessarily need to delay mainnet for that and can be done at the same time #dev I disagree #dev We should be having a 100% stable testnet #dev ++ #dev Hi! #dev wdym practically hanje-zoe? i mean what are you proposing wrt testing #dev what kind of areas do you forsee would need work? #dev I suggest there is a sweet spot there #dev draoi: i'm trying to get an expectation of deadline #dev because we could miss altseason #dev you want to do some performance testing to make sure things don't come down at the first bull run #dev but 100% stable is a high goal #dev which means significant loss of value for everyone #dev true but we don't want to enter into a reactive mindset and rush things #dev and also we need to coordinate on all the other work to be in sync #dev having a secure mainnet is more important than launch timing #dev ofc, but these things can also take forever and so it's good to have an expected deadline #dev lets say we have a working testnet in 2 months, do we then wait another 4 months running it until mainnet? #dev What has to be done first is a stable testnet that is used and adopted by people and all the main bugs are fixed (there are bugs everywhere) #dev Yes I'd keep it running for more months #memes <3 #dev Should be incentivised as well, so some of that contribution flows into mainnet #dev yeah incentivised would be good for testing #dev incentivized testnet is also an example of how you can use the bull market to drive hype w/o rushing mainnet #dev i think token value is captured only on upside, not pre-release value #dev <0xhiro> yay and u get all those airdrop hunters coming to test hah #dev actually pre-release value is important cos it's pure speculation and can have a lot of upside #dev vs when things are live, reality sinks in #dev incentivized = bug bounty? or how #dev maybe just PoW #dev what are the other blocking missing dev tasks apart from what's mentioned above for initial testnet release? #dev I think the wallet is unfinished #dev yep i'll update drk (mentioned above) #dev chia had a successful pre release hype, where people set up mining machines on the testnet #dev zk gadget tweaks #memes very poetic and... illuminating #memes ACTION sees myself out #memes :D #dev so are we ideally looking at mainnet in december? #dev Likely sooner #dev Assuming no laziness #dev do we want to do any promo, either light touch or heavy push? #dev wdym #memes lol #dev maybe during testnet time #dev that's not a convo for #dev :D #dev ok just trying to visualize how it will all fit together and what are the missing pieces that need to happen #dev so we get the testnet operational, then revisit this in march #dev we are in march fyi #dev brawndo: should we just pick a code auditor now from the available options and schedule that? #dev draoi: i mean april #dev We can, yeah #dev do you have any preference? i have no idea which is good #dev if anyone here knows any good auditors, let us know #dev No preference, we got some suggestions #dev i could do intro to hexens #dev I'd say we chat them all up and then choose the best offer #dev (and vibe) #dev ++ #dev ok cool, i'm on it #dev Who's hexens #dev armenian outfit #dev seems https://hexens.io/ looks like smart contracts #dev Title: Just a moment... #dev not sure if they do zk #dev pass #dev We need systems not crypto #dev gotcha #dev i was recommended cure53.io which you said looks web, but they do the audits for tor #dev cure53.de #dev thoughts on halborn? https://www.halborn.com/ #dev Title: Web3 and Blockchain Security Solutions | Halborn #dev I mean cure53's main thing is the web, but they might be good #dev would cyvers qualify? #dev cyvers.ai #dev See in 2024 and 2023 they're auditing web stuff #dev seems it was tor browser https://restoreprivacy.com/cure53s-tor-browser-audit-validates-softwares-robust-security/ #dev Title: Cure53's Tor Browser Audit Validates Software's Robust Security | RestorePrivacy #dev (Spoiler: it's all js shit) #dev As-if lol #dev ok well nym used them, said they do rust stuff but don't know blockchain/consensus #dev rex: cyvers so it says web3, but we want a systems auditor who can do rust rather than solidity code #dev As said, let's try to chat with all of them and see who we can vibe with #dev same for halborn #dev ok lets move on #dev !next #dev Elapsed time: 24.9 min #dev Current topic: SMT changes (by hanje-zoe) #dev i have a few sub-topics here #dev !topic updates #dev Added topic: updates (by draoi) #dev > use depth since used elsewhere (consistent) OR we can change merkle depth to height in other places #dev > likewise level starts from bottom, but index starts from the top? maybe reverse the level so it measures the depth rather than the height. #dev approve of using depth? #dev ++ #dev > proposed terminology: #dev level - _depth_ in the tree #dev loc - (level, pos) tuple #dev pos - leaf index, equivalently the direction through the tree #dev idx - index inside db for nodes. Leaf idx = final_level_start_idx + pos #dev node - hash(left, right) or the leaf values #dev approve? #dev lgtm #dev > proposed changes: #dev 1. traitify SMT with optional backends, for example using db_set/db_get inside WASM and support biguint, as well as current one with u32 #dev 2. biguint, depth=256 and adding all nullifiers to a SMT inside money #dev 3. make pos explicit (discussed earlier) #dev 4. remove leaves from ::new(), since new() just calls .insert_batch(), the API user can do that anyway #dev Explain? #dev which one? #dev 1, 2, 3, and 4 #dev lol #dev 1. so right now the SMT is an in memory store, but if it stores all the nullifiers (which is needed for checking a coin is spent inside ZK), then it should use the database #dev so instead of calling self.tree.insert(...), instead we make SMT a trait, but you can specialize it with SmtMemory or SmtWasmDb #dev SmtMemory uses self.tree.insert(...) while SmtWasmDb will call db_set/db_get #dev but they use the same algo otherwise #dev https://agorism.dev/uploads/trait.diff.txt #dev I suppose that's fine #dev for 2, the cost of add and checking membership of SMT (not in ZK) is marginally a bit more than the current approach with nullifiers #dev but using an SMT for the nullifiers is much better, so i want to change money to put all the nullifiers into SmtWasmDb with a depth of 256 #dev the index is a BigUint #dev aztec does this https://hackmd.io/@aztec-network/ryJ8wxfKK #dev Title: Merkle Trees - HackMD #dev SMT? SparseMerkleTree? #dev https://hackmd.io/@aztec-network/ryJ8wxfKK#Merkle-Trees-in-Aztec #dev Title: Merkle Trees - HackMD #dev loopr: yep #dev ++ #dev ACK #dev ok 3 is just what we discussed earlier, we need the position when checking non-membership so i'll make that change #dev Yeah that' #dev s something I missed #dev The zk gadget should also get reviewed #dev You can likely modify it as well when you add the position stuff #dev 4 is just a minor change. right now in new(leafs) you do setup for the Smt and then call self.batch_insert(leafs), but i think we should remove that from new() #dev so you call new(), then call .batch_insert(leafs) #dev Sure #dev ok final 2 things #dev > other topics: #dev * why in gen_empty_hashes() does .take(N)? #dev * should we use the leaf value as the pos itself? benefit is easier API and simpler impl / less error prone, downside is we cannot use it as a key-value store (but this can be worked around by storing hash(key, value) as the leaves). #dev for item in empty_hashes.iter_mut().take(N) { #dev empty_hashes is length N so is this a mistake? #dev The leaf value as position should work I guess #dev I don't know if this has any anonymity impacts or not though #dev it doesn't since the path is anon inside zk, but i'm unsure if it's desirable or not #dev makes the code simpler though, but has that downside #dev if you prefer it that way though, it certainly matches my usecase (storing Fp) #dev Yeah we could ask someone on this topic #dev `for item in empty_hashes.iter_mut().take(N)` #dev No reason, likely just leftovers #dev let mut empty_hash = F::from_uniform_bytes(default_leaf); #dev btw this is a mistake #dev Why? #dev since from_uniform_bytes() is used to convert a 64 byte hash to a 32 byte Fp #dev I mean yeah #dev so if default_leaf is non-zero it will create an invalid value #dev It won't, I think FromUniformBytes is used everywhere #dev Perhaps not #dev it reduces default_leaf mod p #dev Could just convert the code to take Fp #dev yeah or 32 byte repr of Fp #dev anyway i'll figure it out #dev Indeed #dev !end #dev Elapsed time: 16.7 min #dev Meeting ended #dev what? #dev you skipped my topic #dev lol #dev oh sry #dev !start #dev Meeting started #dev Topics: #dev 1. updates (by draoi) #dev Current topic: updates (by draoi) #dev ty #dev just wanted to give a small net update, i've made some changes to the net code and it is much stricter and more stable now #dev polished marble #dev i will soon push the change that allows us to have seamless reconnect, and then will do some tidying up #dev then will ask for review #dev that's it from me, made this a general update topic in case others wanted to also share updates #dev working on SMT + SMT gadget, then modify DAO, then DRK (and also net) #dev Awesome #dev ACTION has their tasks on tau, but working on event graph replayer, will probably do read-only key for tau first #dev I made a set of fixes to zkvm, and YT will check the sparse merkle tree gadget and do some optimisations as well #dev is the contrib page the goto place for all about tasks or just a frontend #random i just read https://suckless.org/sucks/systemd/ and feel the pain of those who must deal with it #random Title: software that sucks less | suckless.org software that sucks less #dev loopr: we need to make the generators for zkas configurable if you can do that #dev yep ok looks like a bit challenging but happy to be challenged #dev it has nothing to do with cryptography, it's a purely code task #dev ah ok #dev !end #dev Elapsed time: 5.9 min #dev Meeting ended #dev btw would it be possible to generate the contrib page from tau or whatever #dev ty all #dev why? we don't want to run loads of tasks and infra #dev just run tau directly #dev I have two comments regarding the meeting, if I can speak #dev yeah ofc everyone's free to speak #dev ok cool I want smth for myself #dev just thought if contrib page is generated might be easier to maintain #dev that's all, thanks everyone #dev (1) Launching an incentivized testnet, then leveraging the hype around it to mainnet. Seems a good middle point, at least seeing it from outside. #dev ash: fyi in future meets, you can add a topic with !topic #random i'm still using void rn but gna switch at some point due to the anti-crypto cuckoldry #dev (2) For and audit I would recommend to checkout https://txpipe.io/ #dev Title: TxPipe.io #dev nice they look decent #dev brawndo: Federico Weill looks like the type of guy you said does good audits #dev development team of the year in cardano, there they don't need intro. They focus a lot in Rust and sm audits. #dev personally I love aiken #dev cool they look good ty #dev If needed I can ping them. #random dwm is great, tiled window managers just in general, prefer that as default with the optional floating windows if needed #dev hanje-zoe: I'm shy, but i will take the command next time. #dev hahaha #dev . #random ++ dwm #dev https://github.com/aiken-lang/awesome-aiken?tab=readme-ov-file#tutorialsexamples #dev Title: GitHub - aiken-lang/awesome-aiken: A collection of Aiken libraries, dapps, and resources #dev nice should i ping you on telegram or signal? #dev telegram #random surprisingly worked really well with multi-monitors too, didn't have to do any modifications or recompile. was expecting otherwise #dev ok ty #dev cya all, tyvm #dev thanks all, o/ #dev o/ #dev Fede vibes are very nice #dev bye guys #random think i had to do an xrandr to fix the positioning to match the actual monitors, but that's it. #random yeah using i3 since ages myself #random draoi: you gna switch to what? #dev hanje-zoe: I can send to you my user by dm #dev i know it np #dev good (y) #dev <0xhiro> dun mind i ask a noob qn but how to run tau? #dev 0xhiro: https://darkrenaissance.github.io/darkfi/misc/tau.html #dev Title: tau - The DarkFi Book #random idk tbh maybe artix #dev but just make BINS="taud" #dev and use tau-python #dev as cli #dev or add this to bashrc: alias tau=/path-to-darkfi/darkfi/bin/tau/tau-python/main.py #dev also add this to ~/.config/darkfi/taud_config.toml : seeds = ["tcp+tls://dasman.xyz:23331"] #math hello #random test #random test back #philosophy hello #philosophy hi! #philosophy how's it going? #philosophy All fine, new to the project? #philosophy Yes, a bit. I've popped on here a few times to chat about math and some noobie questions about darkfi. #philosophy Same, did you awnser your questions? #philosophy Sure did. #philosophy Cool and what you learned? #philosophy Mostly how to set up the darkfi ircd, send encrypted messages on it, and some resources for cryptography. #philosophy I haven't set up that yet #philosophy But as I know you create you pubkey and append your contracts in a config file righr? #philosophy right? #philosophy contacts* #philosophy Correct #philosophy nice, I'm not that lost #philosophy I recall it being very easy. #philosophy what brings you to the philosophy channel? #philosophy I studied it #philosophy Oh nice! What did you study in particular? #philosophy and write time to time philosophical stuff #philosophy In college we study a lot. But I'm very interested in p. of mind, epistemology, philosophy of science and ethics/politics. #philosophy Is a bunch of topics hahaha #philosophy Very cool. #philosophy And you? #philosophy I studied particle physics. #philosophy damn! Interesting af #philosophy i loved it. #philosophy And what is the topic that is caughting your mind right now #philosophy I have a friend who also studied philosophy and we were talking about why privacy matters. #philosophy he really pushed my thinking on it but i felt like i didn't have the right framing or ideas to articulate its importance. #philosophy Cool and what you concluded? #philosophy that i haven't thought about it's importance enough, hahaha. #philosophy hahahaha #philosophy It is the trend right now #philosophy the normal #philosophy but I think that once the virtual mix more with us, it will be important in the public debate #philosophy it will catch the eye of the public debate* #philosophy what are your thoughts on the matter? #philosophy Mmmm that is more important than ever, and once the computer-brain interface will be in its peak, privacy will do so in the public debate #philosophy the disccussion of privacy* #philosophy why is privacy important today? #philosophy To have a more power balanced reality #philosophy essentially #philosophy Interesting. Care to ellaborate? #philosophy There is an asymmetry of power between the government & capital and the people #philosophy They can enforce actions on you, but you can't on them. #philosophy I see. #philosophy They can enforce what is truth and right, but when is the momment to apply the same to them they use the system against you #philosophy Julian assange is perfect example to this #philosophy that's a good point. #philosophy I hadn't thought of it from that point of view. #philosophy EUU is a terrorist state, when you denounce the terrorism they go to catch you with extradition and intelligence services #philosophy how would you define privacy? #philosophy The goverment == not the citizens #philosophy I certainly agree with that. #philosophy Sure. It resumes in power balance, at least for me. #philosophy Wait a sec, I have something to discuss #philosophy but have to do some thing #philosophy no problem #philosophy One thing that I'm questioning in my mind is that to which extent is desirable to be anti-state. Meaning the if there some form of state that is desirable (Nordic countries for example)? Mostly considering that is always necesarly to have political corpus to form a society, in some form or another when you associate you accomplish a center where the people gather. Or not all political corpus #philosophy are states? #philosophy https://darkrenaissance.github.io/darkfi/philosophy/philosophy.html #philosophy Title: Philosophy - The DarkFi Book #philosophy hmmmm #philosophy ash: check this docu https://www.youtube.com/watch?v=W1tVtEMKGAY #philosophy Title: The Ascent of Woman - Episode 1 - YouTube #philosophy origin of state civ in ancient history #philosophy what would privacy look like in a totally anarchistic community? would it still be necessary? #philosophy I'll for sure cehck that out #philosophy My hypothesis that we call state to this very burocratical, top-down and giant organization. A bottom-up, human-scale and with cesation rights it is indeed have a political corpus but is not a state. #philosophy An organization with bottom..* #philosophy hanje-zoe: Bookmarked! Ty #philosophy fatback: I think that yes, it would be necessary. But don't I have a clear idea about how it would be like since all orgs are different. #dev test #dev test back #dev hello, anyone there? #dev hmm ... so tests::sync_blocks fails when run via Valgrind on x64 after about 35 hours. anybody interested in logs ? #dev hey cheese #dev root: Sure #dev https://pastenym.ch/#/BP1E4g1B #dev Title: Pastenym #dev I think it was the same error as on pure ARMv8 hw (no docker, no valgrind, ubuntu22), valgrind test still running on arm ... #dev root: And what does it mean when you say it's been running for 35 hours? #dev It just took that much time? #dev You should likely be running the rust in --release mode #dev Unfortunately the zk stuff is really slow in debug mode #dev gm #dev in and out of internet for a bit #dev hanje-zoe: ping #philosophy ash: that's called government which is distinct from state #dev hey branwdo #dev Hey I'm thinking a bit about IRC and RLN #dev did you know about this history of IRC? https://en.wikipedia.org/wiki/IRCnet#History #dev Title: IRCnet - Wikipedia #dev Would the accounts be a smart contract on-chain, or we'd somehow find a way to keep it separate and irc-only #dev originally IRC was meant to be decentralized #dev IRC is decentralised to an extent #dev Well, rather distributed than decentralised #dev it would be smart contract on-chain, so the IRC would be an app in the wallet able to access the money module to check staking #dev The network is architectured that way since inception #dev originally anybody could join IRCnet #dev but EFnet was created to block that #dev Yes I know #dev i didn't know #dev how do we set the epoch times? algorithmically or by a mod? #dev It can be hardcoded to begin wiht #dev *with #dev 09:46 it would be smart contract on-chain, so the IRC would be an app in the wallet able to access the money module to check staking #dev Yeah alright #dev ++ although in the beginning we can just do it by hand without the appropriate framework #dev i was thinking for the DAO, it would be nice to be able to use the IRC #dev likewise to send money to your contacts #dev Yeah but that's kinda counterintuitive if you're allowing anyone to use any nick #dev You'd need some kind of authentication that way, which compromises anonymity #dev i mean ones you've added manually #dev ah yeah you can have an encrypted session #dev That'd also work well with pqxdh #dev we could maybe make adding DMs easier too, so like a /import command to add the last shared key in a chat #dev Should I work first on pqxdh or rln? #dev btw I'm still not using darkirc, waiting for it to be stable #dev how does xdh protect my DMs? i know about forward/backward secrecy but why does that matter? #dev surely the risk is people get my secret key, xdh doesn't protect against that or does it? #dev You need to do key rotation periodically #dev That can be coded in to be done automatically #dev ok rln sounds more fun #dev https://avinetworks.com/glossary/perfect-forward-secrecy/ #dev Title: 403 Forbidden #dev ty #dev i know you rotate keys #dev *i didn't #dev Yeah you should do that for each session #dev Protects against harvest-now-decrypt-later attacks #dev ic, well DMs are private now but we're vuln to spam attks #dev + we could advertise RLNs ;) #dev Yeah though we aren't getting any spam #dev i'm actually surprised #dev We should only require proofs once an algorithm decides there's too much traffic from some peer or smth #dev i would do 3 tiers #dev It's too intensive to have to generate a proof for every message #dev ok #dev So that can be added to the p2p ruleset #dev Although have to think what happens in the p2p context, since nodes relay other nodes' messages #dev i think it's specific to darkirc protocol since it's a higher level thing (people stake coins, we verify it .etc) #dev otherwise p2p has a dependency on money module #dev I meant that, in the p2p proto of darkirc #dev Not in the lib #dev ++ #dev I'll work on implementing services then #dev We should do account management through NickServ #dev Then you can do everything from the IRC client #dev cool #dev actually it would be nice controlling drk through IRC commands lol #dev like in a private channel doing DAO ops or maping a swap in DM #dev *making a swap #dev ACTION tips brawndo 1 microdrk #dev .etc #dev i also had this thought recently that bots could also be p2p if they were plugins to darkirc #dev like meetbot or taubot #dev good boy tokens #dev haha #dev brb #dev cool 1 DRK = 10^8 GBT #dev lmao #dev root: did you pull master? By the "logs" you seem to be on a commit from 2024-03-05, while the test fix was pushed 4 days ago #dev quit #dev gm #dev o/ #memes https://pbs.twimg.com/media/GIaTKIBaoAAlWbS?format=jpg&name=medium #memes yeah that's why venv's are cool #dev : @zero pushed 1 commit to master: 638c441a43: smt: replace FromUniformBytes<64>/[0u8; 64] with PrimeField/PrimeField::Repr #dev brb #random test #random test back #dev i'm going to specialize Smt keys to BigUint: https://agorism.dev/uploads/smt.rs.diff #dev tried making it general but it's way too much autism to handle #dev where S::Key: Clone + From + Add + Sub + Mul + Shl + Shr + Ord #dev You likely won't be able to use that in ZK #dev it's an internal type for the DB #dev because the location = (level: F, pos: F), which is converted to the index: BigUint... so i guess it's ok #dev ok #dev brawndo | Yeah though we aren't getting any spam #dev how is spam handled in ircd or darkirc ? #dev there is no spam #dev *tips hat* milady #random loopr: trying to dm you. Please let me know if u are getting my messages. #dev : @draoi pushed 1 commit to master: 24212a6f77: net: enable offline reconnect... #dev hanje-zoe: getting an smt.rs error running `make test` #dev ok thanks #philosophy do you think the underlying nature of reality is discrete or unified? are we all part of one consciousness coaxed by stimulus (mostly pain and anxiety) to pretend and fortify ourselves as discrete consciousnesses? or are we actually discrete consciousnesses capable of merging into greater consciousness? #philosophy and, is it better to turn toward our fundamental nature? or is it best to move in opposition to it (in an effort to achieve balance)? these questions i think would inform an answer to that question "what would privacy look like in a totally anarchistic community?" #philosophy privacy is a means to mobilize and make revolution #philosophy society continually needs revolution #philosophy to sustain life #philosophy is that trotskyism #philosophy lite: no i don't think we are all part of a borg-like consciousness or should strive for that #philosophy i recommend this book: https://xeno.tools/uploads/nietzsche-willtopower.epub #philosophy nietzsche says that philosophy has been pre-occupied with notions that basically condemn life and wants to reform philosophy into a celebration of life and becoming #dev : @zero pushed 2 commits to master: f92b55d16e: smt: add terminology doc #dev : @zero pushed 2 commits to master: db67d3bdf0: fix broken smt tests #philosophy wouldn't that be what most religions do? #philosophy well nietzsche would say no definitely not, most religions actually condemn life #philosophy especially christianity which is his pet peeve #philosophy nietzsche wanted a superman, and i guess the will of the majority will generally make no room for that ttype of 'will to power,' if i interpret him correctly.. so that would be his critique of organized religion #dev upgrayed: no I did not pull master, but I try (I already answered that question - I need to exec "find working build" as master is always broken) #philosophy and that majority defaults to an easy life #philosophy first few chapters of thus spoke zarathustra shows that kind of progression, but i haven't finished that book #random test #random test back #dev the problem is not with the pull, the problem is the test passed on x64, and not on arm. my guess is some timing / timeout (so much slower arm or valgrind fail) #dev tried on arm hw again to be sure:: darkfi.2024-03-05_96a2e0b6.git.try.compile.on.hw$ # ./target/debug/deps/darkfid-91a8e5bd55c1e197 --exact tests::sync_blocks #dev .... test tests::sync_blocks ... FAILED ... thread 'tests::sync_blocks' panicked at bin/darkfid/src/tests/mod.rs:163:52: ... called `Result::unwrap()` on an `Err` value: ForksNotFound #philosophy christianity basically gets its problems from Plato who said the world of appearance < the world of truth, so basically condemning the world of becoming in favor of an imagined or idealized Being (later God) #philosophy nietzsche says maybe there is a world of being etc, but we are creatures of becoming, our role is to service life #philosophy instead of upholding e.g. virtue as more important than life #dev it might seem useful to have AI that answers questions about darkfi chat / darkfi code / darkfi web - anybody interested having that ? #philosophy he makes the point that most living creatures don't have a notion of virtue, so it's a purely human concept, and kinda an insult to life to say that's the main point of everything #philosophy rather he says the main point of everything/ becoming is the will to power, which is basically life and its expansion #dev Nope #philosophy and to your point wow, yes he sees christianity as what he calls slave-morality, so a herd-like, unfree, reactive mindset #philosophy xeno: right, holding onto comforts, however 'incorrect or correct'? could stall this process of becoming, and change. #dev root: that test was broken, hence why it sometimes passed while others it failed, use anything after 39223c6a98aa53402fac8696d493c352c3541755 #dev root: do you mean a chat bot for the TG or #philosophy yes it's connected to what you are referring to and what he calls in thus spoke Z the "last man" #philosophy i guess one could say nietzsche is saying, 'don't stay on the beaten path, you won't find anything new,' be a bit daring and chart out a new path, however difficult #random reka: I guess not...sorry for that #random can you try again? #philosophy would hate for that to become some quote on a calendar, as would he i think., but hey, here we are. #philosophy i think he thinks this is a very small number of ppl who would or could do this, or he's just putting up another 'ideal' to strive for, however incomplete or incorrect or riddled with mis-steps #philosophy and ultimately, nietzsche isn't a nihilist as some claim, but he wants the superman to create their own virtue/ethics/whatever #philosophy i don't think he would agree with the 'anything goes' misinterpretation #random loopr: np one sec #random loopr: just tried to dm you again #random hmmm #random nope, not seeing anything #random if nothing, then maybe we can share pubkeys again and check config? #random yeah #random my pubkey: 5J7EBWjYGkp9FnjSxQBz4Ydw7LWDBsLLAF5wDaUJ9ivn #random test #random test back #philosophy xeno: That Nietzsche point is very interesting and have been thinking a lot lately because my vegetarianism. #philosophy one could argue, as Jordan Peterson does (even if indirectly), that humans have created their own virtue/ethics/and whatever that work across the society (IQs and personality types) and put them in a vessel called God. #philosophy To be good (or virtuous) to its full, soon or later will be an attempt to your own life. #philosophy it all makes sense, at least to me, when viewed through the prism of the selifish gene (Dawkins) #philosophy But I don't agree totally, because some ideals are favour to life,it just contradicts it when you take it fully. #philosophy And will == good is not sustainable, and the problem that gathers us today to embark a revolution. #philosophy the reality of life is that some are doomed and must find meaning and utility in their doom. You can't just have a recipe for the lucky ones.. that won't work. #philosophy rex: To which extent you think that morallity is cultural? #philosophy morals* #philosophy sustaining behaviours have ingrained themselves in our brains and "resonate" when we hear stories that reinforce them. #philosophy We explore mutations to this programming thrtough cultural variation. #philosophy as per selfish gene, some of us do not have cooperative programming (psychopaths and sociopaths), and so we must erect a cultural structure to keep them in check through uniform rules applied to all of society. #philosophy we have developed an instinct to follow such an order #philosophy because it saves us (societies) from hell #philosophy rex: Do you think that there is something that precedes culture when deciding about morals? #philosophy yes, but it is not universal. Dawkins showed in selfish gene that the existence of parasitic individuals is a valid survival strategy #philosophy Ok, understand, what is the thing that precedes culture regarding moral? #philosophy he explains in amazing detail how societies of very disparate innate behaviour (parasitic as well as cooperative) do survive over time without any sub-group being eliminated. #philosophy the best answer i can give you is that it is God inside us #philosophy God has no name, but can be described through countless adjectives and allegories. God is a complex patter that we see when we see its manifestations. #philosophy *pattern #philosophy some do not see the pattern, or do not let the pattern direct their behaviour. they submit to the antipattern. #dev fyi i'm changing smt so that depth=3 means the tree has 8 leaves (currently it means 3 layers and 4 leaves) #philosophy btw, if youre vegetarian, do try meat only for a while (and no carbs and then limited carbs). i have been on this for two years now and feel that my body is made for this diet #philosophy If there is a god, he teach us good by experiencing pain. Imo #philosophy us what is good* #philosophy pain is superficial. it's a mechanism from before there was God #philosophy maybe not superficial, but it is certainly more primitive #philosophy we can experience pain in many ways, and different personalities will respond differently. there's no reason for the God pattern to limit itself to pain as stimulus #dev Just make sure everything is reflected in the zk gadget :) #philosophy So why is the point of pain then? #philosophy what* sorry #dev sure thing will go through that once finished #philosophy without it and the lessons it teaches you, you will quickly die of violent trauma #philosophy i see it as practical #philosophy do you see it as limiting? (it can be limiting) #philosophy But why is not more practical to die? #philosophy It is the case that to mutilate me, to hurt one-self and to die is good? #philosophy If we find in ourselves the God pattern, it makes us want to live and experience the pattern more. #philosophy Not finding the pattern makes us focus on pain (which isn't fulfilling) and even without pain, and for the non-parasitic of us, we may come to the conclusion that life is not worth living. #philosophy lately i'm finding meaning in identifying the pattern inside myself and letting it drive me. it gives life meaning. #philosophy part of the God pattern is respecting our body as a vessel that we need to serve it #philosophy pain tells us when we may be damaging this vessel. but we also have the capability to withstand pain, when necessary. #philosophy or even to endure pain in the service of a greater purpose #philosophy To me to not-exist is has no worth at all, just to fully exist it has worth. #philosophy say more #philosophy To exist in good manner it is worth, not in bad manner or none. #philosophy So for me, life it is identified with good. And we all can live to its full better yet. #philosophy that seems to fit the God pattern :) #philosophy That doesn't depens on culture #philosophy No one would agree that pain it inself is good. #philosophy cultures are behaviour patterns that sustain life in the face of antipatterns and external threats #philosophy So that is true that don't do to others, the thing you wouldn't want. #philosophy pain is necessary, so that we may avoid violent death.. and so pain is a mechanism that sustains life #philosophy pain == bad #philosophy death without utility or justice == bad #philosophy Agree #philosophy pain does not necessarily result in death, it can lead us toward life #philosophy inflicting death without utility or justice == evil #philosophy Yes, but pain it self we feel it as bad. #philosophy Sure, you can sustain that pain conducts to better sometimes, but still you have acknowledge that you traded something bad to get something good. #philosophy we feel it as something to avoid. it isn't pain that is bad, it is what it is responding to that is bad (like a hammer hit on your thumb) #philosophy yes. this is why we have the capacity to withstand pain, if it accompanies an action that will accomplish a greater good #philosophy So god teach to us with pain #philosophy that's my point #philosophy Yes. But that is not exclusively how God works. #philosophy i get your point #philosophy Agree #philosophy i'm doing a writeup on this dark.fi project, so need to focus on that for a bit #philosophy I neither reject god or believe in it. But if its exist it teach with pain. Which is a curious thing that why a God would want to experience pain. #philosophy Ok, good to talk to you #philosophy liewise #philosophy luck (y) #philosophy draoi: not a hyper-reductive, cold borg-like. more .. idk... jungle-like? lots of awesome discourse to read! i meditated on 'privacy as a means to revolution' a bit on my walk. which reminds one of leaves turning and cycles, perhaps our consciousness phases into and out of being part and whole based on context and where we are in a given cycle #dev : @zero pushed 1 commit to smt2: 2ef17b46c2: WIP refactor of SMT #dev ^ pushed a branch, will rebase on master once i'm finished #philosophy but its true, without privacy we can't sow enough misunderstanding to reach a critical revolution point. #random test #random test back #dev dasman ive added seeds = ["tcp+tls://dasman.xyz:23331"] to the taud_config though im still havinig issues connecting to taud #dev ![feature(generic_const_exprs)] #dev Don't use this please #dev It's never gonna be stable #dev SIN: what kind of issues? (please used paste bins) #dev dasman: https://pastebin.com/B8iTJaU9 #dev Title: [INFO] net::seedsync_session: Connected seed #0 [tcp+tls://dasman.xyz:23331][I - Pastebin.com #dev Here is my taud_config: https://pastebin.com/SQvZg4n6 #dev Title: . - Pastebin.com #dev ive uncommented some lines in here, and also removed the two default seed nodes #dev SIN: don't use localhost as external address #dev use this config: https://agorism.dev/uploads/taud_config.toml #dev pull master #random test #random test back #dev dasman: I used the provided config, and when I run the ./taud command im getting this: https://pastebin.com/Aa1QnNxR #dev Title: [INFO] net::seedsync_session: Connected seed #0 [tcp+tls://dasman.xyz:23331][I - Pastebin.com #dev wait wait, raft? #dev are you on master? #dev please checkout master and git pull, and make #random test #random test back #dev Hey everyone! Back after some busy weeks and just read the 2000+ message backlog. A few days back there was a discussion about finality, and having a fixed number of blocks after which blocks get finalized. I would just raise the fact that doing so has a big downside, which is "baking in" attack blocks. If an attacker can 51% attack with a long reorg then they can get that locked in and it cannot #dev be undone, however much hashrate can be brought to bear on the chain. #dev It's quite like MESS, which was introduced in ETC in 2020 following some periods of extremely low hash-rate which let a series of 3 51% attacks in a row to happen (using rented hash from nicehash). #dev https://ecips.ethereumclassic.org/ECIPs/ecip-1100 #dev Title: MESS (Modified Exponential Subjective Scoring) | Ethereum Classic Improvement Proposals #dev MESS was removed just recently with ETC now the super-majority hash in Ethash class. #dev These finality schemes (or the close-to-finality scheme of MESS) run the risk of "locking-in" long-standing chain splits and/or making it impossible to reorg your way out of a dicey situation. #dev Like this: #dev https://bitcoinmagazine.com/technical/bitcoin-network-shaken-by-blockchain-fork-1363144448 #dev Title: bitcoinmagazine.com #dev If you had a finality scheme with a relatively small number of blocks then darkfi could get into a situation where a bug causing a chain split would become part of consensus forever because it could not be troubleshot quickly enough before getting finalized. #dev tried to build tau following instructions on https://darkrenaissance.github.io/darkfi/misc/tau.html but it only built taud, yet no errors. updated to latest master #dev Title: tau - The DarkFi Book #dev oh actually scrap it, the make install step seems to be necessary...(although I got make: *** No rule to make target 'install'. Stop., but it seems some dark magic happened #dev or maybe I had aliased tau before...¯\_(ツ)_/¯ #dev loopr: taud is enough, and don't install it unless you know what you're doing, to not be confused with versions #dev and the cli is tau-python #dev I should modify that doc rn #dev dasman: if taud does not help to track tasks in distributed manner, and I would be able to track my own tasks with it, then I think I do not know what I am doing #dev s/I\ would/I #dev damn #dev s/I\ would/I\ would\ not #dev dasman, you mention tau-python, is that what we use to interact with tau? #dev loopr: just run it from repo (./taud) #dev SIN: yes #dev https://pastebin.com/KpmVukv1 #dev Title: git checkout masterAlready on 'master'Your branch is up to date with 'origin - Pastebin.com #dev : @dasman pushed 1 commit to master: 4b28b79e5d: doc: update tau doc #dev dasman: yo, after changing to the config file you linked earlier, it works (otherwise ./taud from repo doesn't connect, prints errors) #dev loopr, what did you change in the config #dev yes default config won't work, just copy the config file I linked into ~/.config/darkfi/taud_config.toml #dev that latest pastebin I shared was with the config you shared here https://agorism.dev/uploads/taud_config.toml #dev Yeah but you got this: wasm-strip: No such file or directory #dev can't remember the right package, but try cargo install wasm-package, idk #dev <0xhiro> gm everyone #dev <0xhiro> just a quick qn again on tau, im not able to find the tau python file #dev <0xhiro> https://pastebin.com/t6CXHJZF #dev Title: :~/darkfi/bin/tau$ lsREADME.md tau-cli taud taud_config.toml~/darkfi/ - Pastebin.com #dev greets #dev 0xhiro: [~/src/darkfi]$ ls bin/tau/tau-python/ #dev upgrayedd: ^ check messages from dark-john although i assume that monero merge mining protects against this? #dev : @zero pushed 1 commit to smt2: 6f3fc65b67: smt2: add path #dev : @zero pushed 1 commit to smt2: 2781b9af0a: smt2: cleanup and add missing docstrings #dev : @zero pushed 1 commit to smt2: 93e0758e45: WIP refactor of SMT #dev brawndo: how can i split an x: Value into 256 Value each corresponding to the binary digits of x? #dev or should i instead use b: [Value; 256] and calculate x = b[0] + 2*b[1] + 2^2*b[2] + ...? #dev just wondering whether we have sth like that already or not #dev ah yeah we need to witness b i guess then enforce x == f(b) #random hey, i'm having trouble getting this irc setup. after looking through the logs of this server,it seems i'm able to send messages, but i can't recieve anything. if anyone is willing to help, please message me on discord @theqo6869. i hope i'm not breaking any rules doing this #dev gm #dev hanje-zoe: XMR merge mining does not protect against it #dev hanje-zoe: Dunno, there are ways to decompose, but that'd be a very large gate #dev ok thx #dev hanje-zoe: Perhaps check for "decompose" in native_range_check.rs #dev That goes bit-by-bit #dev aha cool #dev However in your example of calculating x, you're going 2^255 ? #dev I don't think that fits in the field #dev 253 bits fit into Fp #dev good to know, although shouldn't effect the calc #dev Sure just keep it in mind #dev yep ty. native_range_check is a good ref, will work from this #dev Yeah also it was already reviewed and fixed ;) #dev So it should be correct #dev nice i can split x into bits, witness the bits, and check x == f(bits) #dev Yeah #dev Remember to do copy constraints #dev ++ #dev Or just do everything within a single region #dev ty #dev i printed the code now to study #dev See the difference between "witness_range_check" and "copy_range_check" #dev https://github.com/narodnik/script/blob/master/md2pdf/codepdf #dev ++ ty for the hint(s) #dev yw #dev having a gate with 253 + 1 advices would be ridiculous, since everytime you call next (or prev), it's multiplying by omega to 'shift' the polynomial. so it would be exponential number of multiplications #dev so i should split the gate into a smaller 'window' (like with native range check) #dev how/when should i use the table? how many values does it store? #dev does it depend on the number of rows or the region? #dev aha i can make it configurable and basically just copy what native_range_check does #dev > witness some bits #dev > move up the tree using those bits #dev > repeat until root #dev > check root matches... done #dev The lookup table stores as many values as you want #dev See 'fn load_k_table #dev YT said we should be reusing the Sinsemillal table for everything though #dev She'll fix it #dev : @zero pushed 1 commit to smt2: 40484781e6: smt2: add get_leaf() #dev fyi when SMT is added to money for nullifiers, it has near-zero overhead (we won't use membership/non-membership of SMT in money) #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/smt2/src/sdk/src/crypto/smt2/mod.rs#L205 #dev Title: darkfi/src/sdk/src/crypto/smt2/mod.rs at smt2 - darkrenaissance/darkfi - Codeberg.org #dev i left the distinction between leaf pos and leaf value, but in general the position should be calculated in a deterministic way from the leaf value (for example lookup table) #dev What about the proof size and proving/verification time? #dev for money it's unaffected, this only affects the DAO #dev (the money contracts don't change, but i'm not including the overhead of the SMT gadget loaded by default into all circuits) #dev ah #dev for money, we just use .insert_batch(nullifiers), and to check nullifier doesn't exist yet, we check .get_leaf(nullifier) == Fp::ZERO #dev aztec actually does this nullifier check inside ZK but we won't do that since things are fine as-is #dev i just need it for the DAO since when voting/proposing, you reveal the nullifiers currently which doxes your coins #dev Yep because in the case of voting you're not really spending the coins #dev ok cool it makes sense #dev yeah it's annoying and the workaround is that wallets have to move coins... but keep track of the old coins to be able to vote .etc which is complicated logic #dev as well as expensive (paying fees to spend coins) #dev actually i was looking recently at a DB system which can be rolled back to any point in time but which has efficient storage #dev https://www.dolthub.com/blog/2024-03-03-prolly-trees/ #dev Title: Prolly Trees | DoltHub Blog #dev version controlled DBs #dev <0xhiro> @hanje-zoe there isnt tau-python folder in the darkfi/bin/tau folder #dev 0xhiro: are you on master? git pull #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/tau/tau-python #dev Title: darkfi/bin/tau/tau-python at master - darkrenaissance/darkfi - Codeberg.org #dev master branch, maybe you're using 0.4.1 for ircd, but tau is on master #dev Cool, I'll check that #dev draoi: https://mark-burgess-oslo-mb.medium.com/using-promise-theory-to-solve-the-distributed-consensus-problem-4cc2116f24e1 #dev Title: Using Promise Theory to solve the distributed consensus problem | by Mark Burgess | Mar, 2024 | Medium #random https://bsky.social/about/blog/03-12-2024-stackable-moderation #random Title: Bluesky’s Stackable Approach to Moderation - Bluesky #random so basically if there's a configurable set of mod keys, then messages can be tagged by those 'mod keys' #dev <0xhiro> thanks after updating from git master #random and i can decide to hide them (or whatever) in my client #dev <0xhiro> i tried running tau with the following err #dev <0xhiro> https://pastebin.com/WSGZfcDZ #dev Title: line 5, in from tabulate import tabulateModuleNotFoundError: No - Pastebin.com #philosophy https://www.vox.com/future-perfect/2024/2/13/24070864/samotsvety-forecasting-superforecasters-tetlock #philosophy Title: How do you predict the future? Ask Samotsvety. - Vox #philosophy "Everyone on the chat gives their answer, and in each case it’s a number. Chinmay Ingalagavi, an economics fellow at Yale, says 8 percent. Nuño Sempere, the 25-year-old Spanish independent researcher and consultant leading our session, agrees. Greg Justice, an MBA student at the University of Chicago, pegs it at 17 percent. Lisa Murillo, who holds a PhD in neuroscience, says 15-20 percent. #philosophy One member of the group, who asked not to be named in this context because they have family in China who could be targeted by the government there, posits the highest figure: 24 percent." #philosophy > This is a meeting of Samotsvety. The name comes from a 50-year-old Soviet rock band — more on that later — but the modern Samotsvety specializes in predicting the future. And they are very, very good at it. #philosophy lite: to be clear i think all borgs are bad, even warm ones ;) #dev pip install -r requirements.txt #dev you might need a python virtualenv #philosophy interesting how apes lost their tails when evolving from monkeys, because the tail is not used in their form of locomotion (walking on branches) #philosophy so in evolution when something is useless, organisms will gradually lose that thing to optimize out useless energy expenditure (unless it's a small thing or too intertwined/complex to remove) #philosophy adaptation is created through selection pressure (sexual, natural .etc) #philosophy also there's a strong path dependency https://www.quantamagazine.org/mollusk-eyes-reveal-how-future-evolution-depends-on-the-past-20240229/ #philosophy Title: Quanta Magazine #philosophy > Monotremes are an egg-laying group of mammals represented today by the platypus and echidna. Recent genome sequencing of the platypus indicates that its sex genes are closer to those of birds than to those of the therian (live birthing) mammals. Comparing this to other mammals, it can be inferred that the first mammals to gain sexual differentiation through the existence or lack of SRY gene #philosophy (found in the y-Chromosome) evolved only in the therians. #philosophy path dependency, whereby sexual differentiation became much stronger in one mammal lineage due to the early evolution of a gene which could be utilized by other genes (if male ... else ...) #dev hanje-zoe: as brawndo said, merge minning doesn't protect your from 51% attacks #dev sure but doesn't that mean the attacker needs to 51% attack monero mining power? #dev although we have to comment that such attacks are relevant mainly to external observers where they follow fork tips, since double spending is not a part of the chain #dev hanje-zoe in a sense yeah, they "need" that #dev the only "attack" I see right now is a hard fork attack #dev where adversary minigs a fork privately and only publishes it when its the same height as the to-be-finalized fork #dev that means that a network race can occurr, where miners choose to follow that new "unknown" fork instead of the previously known one #dev hanje-zoe: No it's opportunistic #dev hanje-zoe: Do you know how merge mining works? #dev skoupidi: that attack you mentioned is called "selfish mining" fyi #dev yy I know, just describing it so everone understands what we are talking about :D #dev is merge-mining when we target the same difficulty as monero, and the miners must checkpoint our block hashes in monero blocks? #dev depends on the setup, if you use same parameters as monero then yeah your target will eventually "converge" close to moneros #dev No, it means that Monero miners can choose to include something (maybe a checkpoint) inside a Monero block, and we can choose to trust that if more work has been put into it instead of our native block #dev but that means that they all hash for your chain #dev aha great #dev 10:32 depends on the setup, if you use same parameters as monero then yeah your target will eventually "converge" close to moneros #dev This is false, it largely depends on the hashrate #dev yeah so we can trust monero checkpoints if it's deep enough #dev brawndo: skoupidi | but that means that they all hash for your chain #dev Yeah it's a pipe dream #dev ++ #dev So it's not a realistic/true statement #dev fare :D #dev The target would be the same only if darkfi has the same params and the same hashrate as monero #dev btw a friend explained to me about selfish mining, and told me the work calculation is a probability expressing the expectation of a block #dev https://en.wikipedia.org/wiki/Expected_value #dev Title: Expected value - Wikipedia #dev so for that, if the ranking algo somewhat protects from the long reorgs we "should" be good #dev apart from that we can bake in rules into the buffer #dev i think the calc we use is fine but will check it with people. he suggested: max / (max - target) #dev where if you receive an unknown fork, it must be max size n-2 #dev (2 for synchronicity) #dev ++ #dev how will the divition be handled? #dev we have to also take that into account #dev we can do the btc trick to still use biguint, and just offset the floating points #dev well our comparison is equivalent to that for a single block, but when summing they lose the equivalence #dev so when i get time, i'll think what changes and what's the meaning of them both #dev but yeah it's interesting thinking of it as the expectation/probability #dev glhf #dev i'd say that's more correct, but you possibly don't lose anything doing just (max - target) #dev i'll ask around in next few months when we meet people. it's easy to change #dev what do you think about the rejection rule? #dev which one? i can't remember #dev aka enforcing that everyone should only reorgs forks, up to certain height #dev skoupidi | where if you receive an unknown fork, it must be max size n-2 #dev well this is your area lol, but it seems correct what you say #dev where N is the buffer(finality) size #dev But as dark-john said that can lead to other issues #dev like? #dev 23:46 These finality schemes (or the close-to-finality scheme of MESS) run the risk of "locking-in" long-standing chain splits and/or making it impossible to reorg your way out of a dicey situation. #dev well thats a problem of finality in general, splits can happen since you can't reorg what you consider as final #dev : hello from mobile #dev o/ #dev Look mom, another Rust: https://gleam.run/ #dev Title: Gleam #dev i wonder if built in microthreads is the correct approach or not #dev sometimes i would like to have the ability to schedule work more efficiently (so when calling .await to suspend coroutine, i can also mark its execution priority) #dev would be hard to add that if the executor is baked into the language #dev > god creates cpu #dev > man creates software #dev > software maxes out cpu #dev > god creates threads #dev > man creates multi-threaded software #dev > software maxes out threads #dev > god creates coroutines #dev > man creates multi-process multi-threaded software #dev > profit??? #dev lol #dev > man becomes transgender #dev > transgender invents GLEAM #dev XD #dev hanje-zoe: do you have a min to talk about potential net simplifications? #dev yes ofc #dev essentially there are 2 things that come from the monero impl that i'm now questioning whether we need #dev did you see that article i linked you? #dev which one, where? #dev https://mark-burgess-oslo-mb.medium.com/using-promise-theory-to-solve-the-distributed-consensus-problem-4cc2116f24e1 #dev Title: Using Promise Theory to solve the distributed consensus problem | by Mark Burgess | Mar, 2024 | Medium #dev when you get time, read this #dev anyway cont... #dev ty will do #dev kk #dev fyi the article is talking lock based approach vs using channels to achieve eventual consistency + a mechanism to see whether or not the pending tasks/work is completed #dev lock based is non-ideal because it's a bottleneck, and eventual consistency has downside that program might be in an invalid state, but if you have a mechanism to see whether the state is consistent or not, you can get the advantages of both (possibly using a lock) #dev 1. do we need an "anchorlist"? monero impl has a 3rd list (aside from white and grey) called "anchor". this is a list of nodes that we have actually established a connection to (in outbound or manual session). however in monero, the difference between whitelist and anchorlist is clearer since whitelist nodes aren't actually "connected to" (unlike in our case), they are just "pinged". whereas for us, #dev we actually must establish a connection to a node in the refinery (called ping_node) in order for it to be promoted to whitelist. so whitelist and anchorlist are in some ways equivalent #dev what if we change the whitelist to simply pinged not connected nodes like monero does? #dev seems quite heavyweight doing a full version exchange, esp since the version messages will get bigger over time #dev we discussed this before, but brawndo said we should keep as is, i don't remember why but can quickly dig up logs #dev and doing it nonstop will consume a lot of bandwidth, which is bad on mobile #dev It's good against sybil and later on we'll have swarms so you'll have to sort your peers per protocol #dev draoi: so in monero, the anchor list is more like a platinum list? #dev A peer can change its protocol and you should know it #dev You'll also know when they upgrade their app, etc. #dev yes hanje-zoe #dev or "Gold" in our case #dev brawndo: aren't you concerned doing it for 100 hosts on a mobile might be too much? #dev the refinery rn is every 15s so it would be 1 host per 15s #dev No #dev ok well draoi you can merge anchor and whitelist #dev ++ #dev ok 2nd question #dev rn we use a complicated address selection logic derived from monero #dev <0xhiro> hi hanje-zoe i added seeds=["tcp+tls://dasman.xyz:23331"] in the taud config file #dev 0xhiro: workspaces = ["darkfi-dev:2bCqQTd8BJgeUzH7JQELZxjQuWS8aCmXZ9C6w7ktNS1v"] #dev there are two net settings white_connection_percent and anchor_connection_count, and when we select an address in outbound session it tries to select addresses according to these settings #dev that's good #dev i propose to make this more like the address selection logic in protocol address, which simply says: select from gold, if there's still space, select from white, if there's still space, select from grey #dev ok as you prefer #dev i think it's good to mix things up #dev <0xhiro> im still getting Error: Connection Refused to '127.0.0.1:23330', Either because the daemon is down, is currently syncing or wrong url #dev if you just select white/gold, you get sybil #dev 0xhiro: rpc_listen="tcp://127.0.0.1:23330" #dev draoi: you understand what i'm saying? #dev <0xhiro> have that in the taud config file? #dev yes #dev no i don't follow the sybil risk #dev lets say nodes A, B are white #dev i always connect to these nodes #dev node C is grey, i never connect to this node #dev you see the issue? #dev node C goes thru the refinery and becomes either white or gets deleted #dev good to have some (smaller) % of grey thrown in #dev <0xhiro> strange im still getting connection issue #dev oh it gets deleted #dev <0xhiro> rpc_listen="tcp://127.0.0.1:23330" #dev <0xhiro> workspaces =["darkfi-dev:2bCqQTd8BJgeUzH7JQELZxjQuWS8aCmXZ9C6w7ktNS1v"] #dev <0xhiro> seeds=["tcp+tls://dasman.xyz:23331"] #dev draoi: could we have a "dark grey" list instead of deleting? #dev <0xhiro> below is my config setting for the taud_config file #dev just chuck them in there and forget #dev 0xhiro: https://agorism.dev/uploads/taud_config.toml #dev check your running processes #dev chuck them in there and never connect to them again? or try to connect to them periodically? what if a node tries to give us the same peers again? #dev just for this logic #dev some small % like 15% or 25% of darkgrey nodes #dev so rn we have a state called HostState::Suspended #dev draoi: for example glowies have high availability servers because your algo much prefers them #dev but random users have nodes with infrequent uptime #dev circumvention of glow attack (sybil) depends on randomers #dev and if we fail to connect to a node, it gets marked as Suspend, which means it should next go to the refinery #dev what's Suspended? #dev check 24212a6f774931ece83b815177c9723aeb50ad99 #dev we're talking about 2 things here, right? #dev yes #dev 1. we want a decent number of stable reliable hosts so we can have a stable reliable p2p #dev 2. we want to have a somewhat random connection pattern to avoid allowing external parties to shape *who* we connect to #dev #2 is the sybil attack vector #dev the most secure p2p net is one where all connections are fully randomized (the old behaviour we had) #dev but we want to compromise on that slightly to gain #1 #dev we try not to compromise too much, by only bucketing hosts into 2 lists (white and grey) #dev ok i get you #dev if a host is unreliable, they will get deleted from our grey list #dev (^ via the refinery) #dev but who is unreliable? random users disconnecting/connecting from say mobile #dev so maaaybe (and if you decide i'm wrong that's fine) we instead of deleting them from the grey list, want to keep them around #dev in a ring buffer #dev (lets say 100 hosts) #dev and maintain at least 1-2 outbound which is unreliable trying to connect to them #dev so that way if the normal refinery is sybilled, at least we have an escape hatch with these random users to protect us #dev draoi: does that make sense? #dev idk it seems to undermine the point of the refinery #dev 8 outbound, 6 are reliable, 2 are unreliable #dev also, if we delete a peer, it doesn't mean it's gone forever, if that node becomes reachable it will be shared with us again #dev how? #dev through the protocol seed #dev and the protocol addr, it will send its addr to other nodes on the network #dev lets say there's a p2p network which is connected #dev <0xhiro> @hanje-zoe im running taud via "./taud" command #dev every node only connects periodically #dev i send my addr around, i get upgraded onto the lists #dev nodes also broadcast their greylists fyi #dev so you don't need to be upgrayed to be shared #dev that's bc of transports #dev ok so im shared around #dev still the node prefers whitelist trusted reliable conns #dev so very few people connect to me until i've earned trust #dev the network is vulnerable to sybil #dev s/earned trust/ passed through the refinery #dev yep #dev i'm fine to keep the white_connect_count net flag #dev but idk if we really need to introduce another list #dev the refinery is concerned with reliability of the network #dev <0xhiro> despite adding ur config file parameters #dev <0xhiro> 10:42:28 [ERROR] taud: Please add at least one workspace to the config file. #dev <0xhiro> Run `$ taud --generate` to generate new workspace. #dev <0xhiro> im still getting this issue when i run ./taud #dev 0xhiro: your config is not the one i shared #dev draoi: here's another mental framework #dev <0xhiro> i tried generating my own workspace and adding that param to the taud conf toml file but still to no avail #dev you have a refinery process concerned with selecting reliable nodes #dev you try to balance the concerns of having refinery be stable while not being insecure #dev having explicit random/unreliable nodes mitigates that concern #dev that's what the greylist is tho #dev there's no right/wrong answer, you might decide otherwise for other reasons like: conceptual integrity, simplicity #dev i'm not sure greylist is for that #dev i'm saying we can keep the net flag due to concerns expressed, but i'm reluctant to add a darkgrey list #dev greylist is nodes as they have been shared with us #dev seems greylist is a prerequisite to get on the whitelist #dev all nodes go to the greylist when we recv them #dev when we start the node, all the nodes from our prev connections get loaded to greylist #dev i.e. if they were on whitelist, they downgrade to grey again on start #dev ok #dev greylist is untrusted nodes #dev anyway good to have some % of greylist #dev ++ #dev 0xhiro: the config path is ~/.config/darkfi/ not the taud directory #dev but you can also use --config, see --help #dev one thing about the gold/ anchorlist rn is that it does not get downgraded to grey when we restart the node, and we select from that list first to make a connection when we start the node #dev that might be an argument for keeping the gold list, since otherwise we would be making 100% grey connections on start (before refinery kicks in) #dev it seems useful to keep the distinction #dev ++ #dev i'm all for adding lists tbh since you have an easy abstraction over them #dev for example instead of HostState::Suspended, maybe another list #dev yeah perhaps #dev Red or something hah #dev not darkgrey plz XD #dev brb #dev we can name them after animals like Xenial Xerus or Mantic Minotaur #dev XD #dev <0xhiro> after running ./taud --config it generate a config file directly in the darkfi folder #dev <0xhiro> must i move to to somewhere else ? #dev you must learn to read --help #dev <0xhiro> alright so i ran ./taud --workspaces #dev <0xhiro> now all i need to do is wait for my system to sync up with the other nodes? #dev i said to use --config, read the help! #markets https://twitter.com/BitMEXResearch/status/1767807895645634867 #markets tardfi still pouring money in #dev <0xhiro> just to confirm --help would describe to me the various options and flag right #markets Damn #dev afk, bbl #random : test #random test back #random : test back #dev 0xhiro , this has recently been updated https://darkrenaissance.github.io/darkfi/misc/tau.html?highlight=tau#install #dev Title: tau - The DarkFi Book #dev you would use the command "./taud --help" to understand the syntax and different flag parameters #dev and your taud_config.toml file should be a copy of this https://agorism.dev/uploads/taud_config.toml #dev the taud_config.toml file lives here ~/.config/darkfi #dev finally groked where upgrayed comes from, and upgrayedd is its daemon? lol #random test #random test back #dev > when we start the node, all the nodes from our prev connections get loaded to greylist #dev could that lead to instabilities, e.g. when a lot of nodes upgrade their code? #dev greets #dev salut #random test #random test back #memes Embrace the dark, see the light. #dev someone is going to do a workshop on nym locally here #dev asked before, but I assume it is ok to promote darkfi there? not sure yet to what extent and what is going to happen there, so just asking first #dev yeah plz do :D #philosophy hello #math hello #random hello #dev /query xeno do you want a grapefruit, kiwis are unripe... no other fruit #random hello #random how's everything going? #dev lmao #random hey not bad fatman wbu #dev draoi: thanks #random hey draoi, i'm chillin. what yall got goin on today? i was about to start some privacy research but wanted to check in here first. #philosophy hey fatback #philosophy hey SIN. How do I tag a user in a message? I've completel forgot hahahaha #random :) #random just working on net stuff #random personally #random we had a dev meeting yday it was good #philosophy fatback: just writing their username #philosophy hi btw #philosophy loopr: hey there #philosophy yep exactly like that #philosophy nice one! #philosophy what's everyone getting into? #random I think I popped in for that for a bit #philosophy myself learning lots of things, 1st steps into code #philosophy u? #philosophy I was about to dive into some privacy methods research. brb, gotta take the dogs for a walk. #random brb gotta walk the dogs. #dev found interesting rust project: cargo binstall just (or via os native package manager) https://github.com/casey/just maybe useful for small recipes ? #dev Title: GitHub - casey/just: 🤖 Just a command runner #dev upgrayedd: I was testing a5687f973bd that is from mar 8 as well, and was first from the tip yesterday that passed all tests and built dockers on x64, rocky linux added, same as almaLinux, just different base image #dev running 39223c6a98a build and test on ARMv8 now ... results in ~ 2 hours #dev ...so it failed faster than I thought:: ARMv8 :: tests::sync_blocks ... FAILED ; https://pastebin.com/uKpMe1u0 #dev Title: 19:38:15 [INFO] [WASM] Successfully got metadata ContractID: BZHKGQ26bzmBithTQYT - Pastebin.com #dev but I used patches to build on arm, so maybe the problem is there, or with a tad different rustc -V #dev it worked fine on 2024/2/17 https://github.com/spital/darkfi/releases/tag/v0.4.1-9f1649ef0__2024-02-17 #dev Title: Release v0.4.1-9f1649ef0__2024-02-17 · spital/darkfi · GitHub #dev got this coming up on the tau dark-dev workspace https://pastebin.com/gMFCdBgt #dev Title: Workspace: darkfi-dev ID Title - Pastebin.com #dev looks to be working #dev a #dev : ruben added task (YffvEP): review tau usage. assigned to SIN #dev : ruben stopped task (YffvEP): review tau usage #random test #random test back #random <000> test #random test back #random hello all #random hey wow #dev hey, can anyone tell me what the process is to contribute? i see there's only a few pull requests on github and was curious if i can just make a pr from my fork #random hey cheese #random acck gotta go again #dev cheese: https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev Title: Contribute - The DarkFi Book #dev cheese: you need to know Rust to make code contributions, if you want to start learning I can send a few resources I'm using #random test #random test back #dev gm #dev gm #dev gm #dev gm #dev gm #dev draoi: thanks for sharing, i took a look at that and didn't see anything about actually pushing code -- is that something discussed at the dev meeting? i've written a minor fix in my fork that i'd like to contribute #random test #random test back #dev yes you can make a PR #dev okay cool, thanks #random test #random test back #math wow this is pretty interesting https://github.com/sbellem/qtee/blob/main/qtee.md #math you can produce an encrypted TEE circuit, which when you give to a manufacturer cannot be tampered with (because only you have the secret key) #math and when you receive the chip, you can verify it's legit #math then as well the doc is saying you could have a chip which is securely 'generated' maybe with FHE and verifiable by the p2p network #dev p2p test is failing periodically, like every 3rd run or something, just fyi i am on it #dev the DAO integration test is also failing for me #dev draoi: in the pipelines if you run consecutive make test the second one will fail, prob because nodes in the test use same ports #dev so for the second one they will connect to the first ones nodes and fail, something like that #dev so its probably the ports #dev i think it's something else #dev but will look into #dev : @draoi pushed 1 commit to master: a123826d22: net: cleanup and add documentation #dev draoi: https://darkrenaissance.github.io/darkfi/dep/0001.html #dev Title: DEP 0001: Version Message Info (accepted) - The DarkFi Book #dev hanje-san: Do you need any help with the merkle tree stuff? #dev i'm currently studying native range check, i'm moving through it very slowly. we could do a call where you walk me through it #dev Keep reading, it will make sense :) #dev currently i've done the first third of decompose, where you split the bitstream into windowed chunks, now looking at the bit where we loop over the chunks #dev yeah mainly it's i keep having to lookup fns in halo2 and stuff #dev should i write my proposed algo and show to you, or just attempt to write the code? #dev or should i write an unoptimized but working version? then later we optimize it? #dev Depends if you want to learn halo2 or not #dev i'll try to do it, i'm up to a challenge #dev :) #dev good for the bus factor of the project too #dev Here to help #dev Yep #dev our overall bus factor is quite high actually #random lets see if we manage to get a fix https://github.com/weechat/weechat/issues/2096 #random Title: IRCv3 server-time messages delivered out of order are appended to the buffer which breaks IRC as a p2p protocol · Issue #2096 · weechat/weechat · GitHub #dev so indeed the p2p test never fails when it's ran alone (even when ran consecutively), so seems to be triggered by running multiple tests... haven't rly understood why tho #dev draoi: its the ports :D #dev ACTION is speculating based on lower dimension reality #dev Yeah just ask the kernel for a free port in tests #dev draoi: btw you might like tc for debugging p2p, simulating unstable internet .etc #dev $ tc qdisc add dev NETWORK_INTERFACE root netem delay 50ms 20ms distribution normal #dev $ tc qdisc change dev NETWORK_INTERFACE root netem reorder 0.02 duplicate 0.05 corrupt 0.01 #dev ah amazin #dev ++ #random https://www.dnasquirrel.com/ #random Title: Anonymous 23andMe and Ancestry Genetic Testing | DNASquirrel #dev https://www.youtube.com/watch?v=qvUdepG8Uiw #dev Title: Jesse Lee Peterson DESTROYS Liberal Beta Male - YouTube #random you can also use the GDPR to request them to delete all your data after #dev https://www.youtube.com/watch?v=n__GJuqLb00 #dev Title: You're a beta male, Sonic. - YouTube #markets https://cointelegraph.com/news/crypto-mixer-bitcoin-fog-roman-sterlingov-convicted-money-laundering #markets Title: Just a moment... #random test #random test back #dev hey, i'm trying to setup tor with git. im doing the ssh config step and when i run `ssh -T git@codeberg-tor -vvv` i get an error that the flags `--proxy` and `--proxy-type` dont exist. im running this on gnu netcat. any suggestions on how to solve? #dev > You will need BSD netcat installed #dev do u know of a way to get bsd netcat on mac? seems to be tied to linux #dev cheeese: iirc macos uses bsd netcat as default #dev why didn't you just google that instead of asking? #dev maybe using a mac has made you lazy #dev no need for insults. before i asked in here i googled it, played around with the different flags in nc to try to get it working to no avail, then asked here #dev whoever wrote the documentation about gnu netcat knows something i dont, i was hoping to get some more help from them. maybe i need to dualboot linux, idk #random lol https://spreadsheets-are-all-you-need.ai/index.html #random Title: Spreadsheets are all you need.ai – A low-code way to learn AI #dev no you didn't, i literally googled "bsd netcat" and there's a ton of stackoverflow pages saying the same thing #dev "bsd netcat mac osx" #dev https://agorism.dev/uploads/screenshot-1710420078.png #dev and the guide literally says use "BSD netcat" #dev Why not just use portable nc flags what work with every netcat? #dev nc -x 127.0.0.1:9050 %h %p #dev Host codeberg.org #dev User git #dev ProxyCommand nc -x 127.0.0.1:9050 %h %p #dev In ~/.ssh/config #dev brawndo: thanks for your response, playing around with this now. #dev If the netcat you' #dev re using doesn't support it, then change it #dev okay, thanks #random https://www.sciencedirect.com/science/article/abs/pii/S2468023024002402 #random Title: ScienceDirect #random lol @ the first sentence of the intro: 'Certainly, here is a possible introduction for your topic:' #random i wonder i wonder #dev is it correct that the compiler reports constants as unused even if they are used inside the implementation of a trait? Is that a smell and should be designed differently? #dev It also reports the trait as being unused obviously, although it's being used in the test #dev code can be checked on codeberg, updated the PR #dev afk #random https://www.youtube.com/watch?v=V6iSgqFahoM #random Title: Trump’s Obsession with Genetic Superiority and Bloodlines - YouTube #dev brawndo -x is BSD netcat, not GNU #dev BSD netcat is considered normal, but for some reason everyone always installs GNU netcat #dev despite the guide says to use BSD netcat #dev oh god that still exists #random wow: can you tell me about that article #random hi loopr: are u around? trying to dm you again :) #philosophy hello #math hello #markets :| #random hanje-san: It looks like that introduction utilized AI; that's basically all i got, didn't go into #random it #dev loopr: did you ever check the wif code? #dev i figured it out my netcat issues after playing around with the symlinks of netcat. in the guide, it says "Optionally you could use GNU netcat, but the flags are different..." which i think should either be removed if not supported or updated, as i had some trouble with it #dev hey, i made a tiny pr to get my feet wet. i'd appreciate any feedback #dev https://codeberg.org/darkrenaissance/darkfi/pulls/251 #dev Title: #251 - zkas/parser: add check for function to be a symbol - darkrenaissance/darkfi - Codeberg.org #dev : @draoi pushed 1 commit to master: ff6b2a3962: net: don't write test files to harddisk #dev testing net stuff so comms are unreliable until further notice #random : test #random : test back #random test back #random : test #random test back #random : test back #random : test #random : test back #random test back #dev : @draoi pushed 1 commit to master: 00582c94a7: chore: remove deceptive comment in lilith whitelist refinery #dev gm #dev : @cheeese pushed 1 commit to master: 0aad2dfb06: zkas/parser: add check for function to be a symbol #dev : @holisticode pushed 2 commits to master: 6b1f75b0e8: fix link to dev section #dev : @holisticode pushed 2 commits to master: bd456cb839: chore: fix some typos... #dev : @parazyd pushed 1 commit to master: e607236337: Makefile: Remove PROOFS_BIN on make clean... #dev assert!(WINDOW_SIZE * NUM_WINDOWS < NUM_BITS + WINDOW_SIZE); #dev do we also need a check that NUM_BITS <= WINDOW_SIZE * NUM_WINDOWS ? #dev if so, then in darkfi/src/zk/gadget/native_range_check.rs:229 #dev region.constrain_constant(z_values.last().unwrap().cell(), pallas::Base::zero())?; #dev surely this check is only valid for some window sizes, but not all? #dev cheese: please use make clippy and make fmt before commiting #dev you can fmt as a commit prehook #dev https://darkrenaissance.github.io/darkfi/dev/dev.html#cargo-fmt-pre-commit-hook #dev Title: Development - The DarkFi Book #dev hanje-san: that needs to get updated to use +nightly #dev stable and nightly fmt produce diff results some times #dev and the message should be 'Run make fmt to fix it' #dev ok well feel free to change anything you want #dev im on a WIP branch rn #dev : @skoupidi pushed 1 commit to master: b2d2c7a4e8: chore: fmt #dev brawndo: i get a panic with native_range_check unit tests #dev cargo test --all-features zk::gadget::native_range_check::tests:: #dev oh wait the code has a comment saying the command to run #dev ok it works nvm #dev ;) #dev About your other question, YT is gonna remove NUM_WINDOWS I think #dev Will have to wait on that #dev ok #dev upgrayedd: will do, thanks for letting me know #dev : @skoupidi pushed 1 commit to master: 98ec24720c: chore: fmt #random : test #random test back #random : test back #dev : @zero pushed 1 commit to smt2: fbbd9c5b2e: WIP refactor of SMT #dev : @zero pushed 1 commit to master: 907f2f6e7f: zk/native_range_check: add code comments #random test #random test back #markets https://www.youtube.com/watch?v=VbO4dSssAmE #markets Title: The Vultures are Circling - YouTube #markets new rekt news article about inflow of institutional capital #markets tardfi takeover #markets really good vid #markets i'm blocked by rekt now lol #markets why? #markets who made this vid? #markets probs the current team #markets i expressed support for the former writer who is being scammed by the current team #markets wtf the vid ends talking about "defi going dark" #markets ngl i kinda hate that they trademarked my writing https://rekt.news/termAndConditions/ #markets Title: Rekt - Terms and Conditions #markets esp after telling me i couldn't be credited on the video since it wasn't rekt style to name authors #dev #![feature(generic_const_exprs)] #dev This should be removed and worked around #dev the issue is that path has length N-1 while the empty_hashes is length N #dev so one way is having a single unused value in the array #dev Yeah or something #dev That feature is never gonna be stabilised #dev At least not in any near future #dev ok understood #dev : @parazyd pushed 1 commit to master: 1c163c546b: darkirc: Preliminary services implementation #markets damn, they used the same style even like the previous video #random https://agorism.dev/uploads/edoomp #markets well it's the same animator etc just the writer changed #random test #random test back #math hello #philosophy hello #random good morning #random gm #markets I dont know these rekt guys, but I follow rektoff on twitter, it's a Rust security account https://twitter.com/rektoff_xyz #random hello #dev gm #dev : @zero pushed 1 commit to smt2: 030d532222: smt2: replace generic_const_exprs unstable rust feature with temp workaround that can easily be changed once the feature exists in rust proper #random test #random test back #dev https://learn.0xparc.org/materials/halo2/learning-group-1/cost-model #dev Title: PLONK Cost Model | ZK Learning Resources #dev oh wait i see Tom Waits there #dev : @draoi pushed 3 commits to master: 0f5fcba2c2: net: add `last_connection` timer to more empirically track connection status... #dev : @draoi pushed 3 commits to master: 9bcb691c65: contrib: add dchatd localnet for minimal net testing #dev : @draoi pushed 3 commits to master: d160e96161: net: gather unused channel_subscriber's into a single channel_subscriber in Hosts... #random test #random test back #random test #random test back #dev brawndo: i just computed in python len(bin(...) - 1) - 2 for p and q, and it says 255, so it seems the maximum value for Fp/Fq is 255 bits #dev the -2 is because bin(x) gives you "0b..." #dev 0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001 #dev It will fit 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF #dev And so on #dev That's 253 iirc #dev 254 bits #dev >>> hex(2**254) #dev '0x4000000000000000000000000000000000000000000000000000000000000000' #random test #random test back #dev q: if adding a personal task to tau, it will go to the shared workspace I guess. so prob best to create a personal workspace for personal tasks (guess via config)? is there even anything such as a "private" workspace in tau? or is this not the idea to use for personal? #dev otherwise will switch back to taskwarrior (never used it in distributed config accessible from multiple devices tho) #dev updated and rebased https://codeberg.org/darkrenaissance/darkfi/pulls/250 #dev Title: #250 - WIP: First iteration of task 17, WIF formatting - darkrenaissance/darkfi - Codeberg.org #dev loopr: you can generate your own workspace: taud --generate #dev but you should do local deployment for your personal tasks #dev https://darkrenaissance.github.io/darkfi/misc/tau.html#local-deployment #dev Title: tau - The DarkFi Book #dev skipping dag sync, and have localhost as inbound without seeds, should do #dev you can even run taud as a service, but that's up to you and your system #random test #random test back #dev greets #dev gm #dev brawndo: that hex you showed is smaller than p - 1 (max size for Fp) #dev https://agorism.dev/uploads/pallas-vesta-size.txt #dev loopr: it's fine to create other workspaces #dev brawndo: does offset in .assign_advice() / selector.enable() refer to the row, whereas meta.advice_column() is a new column? #dev Rotation::cur(), Rotation::next() .etc refers to rows as well (like offset but we don't know the exact offset in a gate) #dev (row within a region) #dev hanje-san: That hex is the maximum you can show #dev Maximum 255+ bits does not fit in #dev So you shouldn't assume you can fit 255+ bits inside of an Fp #dev 07:50 brawndo: does offset in .assign_advice() / selector.enable() refer to the row, whereas meta.advice_column() is a new column? #dev meta.advice_column() creates a new column, correct #dev The former two you do within regions #dev Rotation is also within the region, yes #dev https://docs.rs/halo2_proofs/latest/halo2_proofs/poly/struct.Rotation.html #dev Title: Rotation in halo2_proofs::poly - Rust #dev It's relative to where it's being called, not absolute offset #dev yeah i know max(Fp) = p - 1 < 2^255 - 1, but what i mean is that max(Fp) > 2^254 - 1 (so you need exactly 255 bits to represent it) #dev so the offset is row-wise, though, right? #dev so what they call offset means row offset #dev This one is big, but has a lot of usage of Rotation: https://github.com/zcash/orchard/blob/main/src/circuit/note_commit.rs #dev aha ty #dev Yes that's correct #dev https://github.com/zcash/orchard/blob/main/src/circuit/note_commit.rs#L698-L703 #dev https://github.com/zcash/orchard/blob/main/src/circuit/note_commit.rs#L733-L737 #dev See this for example #dev So you see it's querying b_1 from the next row #dev the weird thing in the merkle tree path hashing, is that eventhough poseidon is an algebraic hash, i treat it more like a one way function rather than an algebraic expression #dev so the only way i see to do this is witnessing all the bits of the position #dev and sinsemilla is a partial hash so they can split it up and use lookup tables, but i can't do that #dev https://gh.mlsub.net/DrPeterVanNostrand/halo2-merkle #dev Title: GitHub - DrPeterVanNostrand/halo2-merkle: Halo2 Merkle tree circuits #dev Maybe this is helpful (didn't read) #dev so after reading sinsemilla code and native range check, i will witness the bits for pos and do it that way... ofc i won't use 255 columns #dev ok thanks, will study that #dev https://gh.mlsub.net/teddav/tornado-halo2/blob/main/src/chips/merkle.rs #dev yeah this is the same as what i want to do #dev This is just from a quick search, I don't know how useful they are #dev gtg now, will be back later today #dev ok cya! i'm good thanks a lot #dev loopr: get rid of these useless constants const MAINNET_PREFIX: &[u8] = "80".as_bytes(); #dev remove the enum, instead the trait will have a method called get_wif_prefix() -> u8 (or similar), which the types themselves implement #dev checksum_ok() <-- rename this to verify_checksum() #dev fn from_wif(&self) -> Result; <-- do not use String to represent bytes in rust, it's Vec or [u8; N] #dev also it should be : fn from_wif(&self) -> Result, then use Decoder::decode() (see src/serial/) #dev assert_eq!(decoded, "0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D"); #dev also wtf we said not to use hex strings already, i already said this multiple times #dev that's not decoded bytes (except in javascript land) #dev remove this crate! arrayref = "0.3.7" #dev also your checksum is not 4 bytes, it is 2 bytes #dev brb #dev b #dev 7b #dev yoyo #dev : @zero pushed 1 commit to smt2: 85d310ec92: prelim SMT2 ZK gadget #dev brawndo: ^ going to replace SMT then merge this with master, altho will wait if you prefer to check it first #dev (still will do some cleanup so no rush) #dev also in smt why do you create new IsEqual, ConditionalSelect .etc chips instead of the user just passing them in? #random grants #dev AFK for next few hours, will check back in re grants after. looking forward to talking:) #dev hanje-san: Sure feel free to just merge #dev The chips are configured through PathChip, but you can see they reuse the columns given to the pathchip #dev You can make them externally as well, but that's not entirely sensible since it's going to be trivial to make a mistake wrt. layout #dev : @draoi pushed 5 commits to master: b1cfbda94b: hosts: remove useless Result<> on subscribe_store #dev : @draoi pushed 5 commits to master: 137eef25b7: doc: fmt and add dev NOTEs #dev : @draoi pushed 5 commits to master: b9edcc6077: channel: expand ChannelInfo to include resolve_addr and connect_addr... #dev : @draoi pushed 5 commits to master: b7c11c2bed: net: implement DEP-0001... #dev : @draoi pushed 5 commits to master: 5d9c465b3e: doc: update DEP-0001 #dev aha ty brawndo #dev where can i find out about seeing the circuit layout picture, and seeing stats like number of rows used? i'm using the MockProver but don't see anything in the API. #dev iirc there was something in the code generating a png before #dev is it this one in darkfi/src/zk/gadget/arithmetic.rs:315 #dev let root = BitMapBackend::new("target/arithmetic_circuit_layout.png", (3840, 2160)) #dev hanje-zoe: a hex string was only used for the test, it doesn't matter for tests really as long as the conversion checks out, but I can use smth else then #dev let decoded = wif.from_wif().unwrap(); #dev assert_eq!(decoded, "0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D"); #dev how is that just being used in the test? it looks like from_wif() returns a hexstring #dev https://codeberg.org/darkrenaissance/darkfi/pulls/250/files, L137? #dev that's inside `fn test_wif_to_str() {` for me #dev loopr: the trait should be implemented for bytes array, not String #dev yeah I got that from the earlier feedback, so obviously that test won #dev won't work that way anymore #dev fn from_wif(&self) -> Result this is wrong #dev your are implementing for a generic T and you are returning a String #dev yep hanje-zoe already mentioned #dev did you check the DM I send you? #dev hanje-san | also it should be : fn from_wif(&self) -> Result, then use Decoder::decode() #dev don't think I got that, my pi server was disconnected due to provider breakdown all of Friday #dev did you get them now? #dev yes #dev btw trait name should be just Wif(or WIF) not Formatter #dev then you just implement the trait for a bytes array #dev if you want to impl for String, then you can directly reuse the bytes array impl, by doing self.as_bytes().to_wif, self.as_byteS().from_wif, etc. etc. #dev but its not required, since caller can call the trait fn directly from the strings bytes #dev hanje-zoe: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/tests/dyn_circuit.rs#L118-L121 #dev Title: darkfi/tests/dyn_circuit.rs at master - darkrenaissance/darkfi - Codeberg.org #dev excellent ty #dev np #dev hanje-san: ah ok no rush, when/if this interests you just tag me here and i can guide you #dev I could start working on those hardcoded generator points #dev what about that pull req? shouldn't you finish that first #dev gm #dev gm #markets wow, someone deployed a tornado cash fork on base: https://shadow.fail/ #markets Title: SHADOW #markets probably a rug/money grab, so be careful, just wanted to share #dev pub const FP_HEIGHT: usize = 255; #dev pub type SmtMemoryFp = SparseMerkleTree; #dev .etc ^ should this stuff go in src/sdk/src/crypto/constants.rs or in src/sdk/src/crypto/smt/mod.rs? #dev it seems weird to put SMT_FP_DEPTH (just realized FP_HEIGHT is wrong name) in constants, but the type aliases in smt #dev i'll put it for now in smt, and move if it should go in constants #dev !list #dev No topics #dev why does zk/vm.rs do condselect_chip.as_ref().unwrap() instead of just doing let condselect_chip = config.condselect_chip().expect("condselect chip"); at the start? #dev The assignment happens before #dev The latter is just referencing it, that's how rust works #dev : @zero pushed 6 commits to master: fbbd9c5b2e: WIP refactor of SMT #dev : @zero pushed 6 commits to master: 030d532222: smt2: replace generic_const_exprs unstable rust feature with temp workaround that can easily be changed once the feature exists in rust proper #dev : @zero pushed 6 commits to master: e97ade3c9d: SMT2 ZK gadget #dev : @zero pushed 6 commits to master: ba60fc05f3: switch zkVM to new SMT gadget #dev : @zero pushed 6 commits to master: 11e39f07cf: mv smt2 smt #dev : @zero pushed 6 commits to master: df1f9e744b: Merge branch 'smt2' #dev merged \o/ #dev brawndo: yeah but i'm saying instead of calling .unwrap() in each opcode, and using .as_ref().unwrap(), i think it can be done just once when the chip is initialized #dev \o/ #dev It's fine tbh #dev The issue IIRC is because it's being done in a loop #dev Why didn't you rebase before merging? #dev Also didn't run the linter #dev And the commit messages don't follow our standard practice #dev :D #dev i did rebase the commits, but kept them split up enough so the changes make sense #dev true i should put smt: prefix before all messages #dev df1f9e744bd1ae5fddb2c5abf04b0629b19aa792 #dev The merge commit :( #dev You should rebase so you can fast-forward when you merge to master #dev ahhh ok good to know #dev i thought we merge branches (my first branch in this project) #dev Prefer not to, it's really bad to navigate #dev 🫡 #dev IMO better to just have linear history #dev ok true, will remember next time #dev nbd #dev I'll review this when I finish some darkirc stuff #dev Thanks #dev https://agorism.dev/uploads/smt.png #dev Are the tests working? #dev yep #dev oh jesus #dev cargo test zkvm_smt --all-features #dev So k=13 doesn't work anymore #dev it does if you don't use SMT #dev Sure #dev otherwise for SMT you need k=14 #dev cargo test --release --all-features --lib smt -- --nocapture #dev Yep that's why I'm saying #dev We did add configurable k to zkas though ;) #dev (The field is still just a placeholder) #dev ACTION wipes away the sweat #dev ^ that last test is in SDK #dev https://a0.anyrgb.com/pngimg/1236/1996/excessive-sweating-hyperthyroidism-bagi-axilla-perspiration-sweat-guy-towel-know-your-meme-internet-meme.png #dev *nod* #dev ZK gadget test: cargo test --all-features zk::gadget::smt:: #dev that's 3 tests, one in tests/ for zkas/zkvm, one in SDK for SMT, and one for the zk gadget #dev Nice #dev now i will add sparse_merkle_add() alongside merkle_add() in the runtime, and make money nullifiers use that. Also will add SMT::get_leaf() to runtime, and use that for checking if nullifiers exist. #dev then will finish DAO changes after this #dev ok so how would spending Money coins work now? #dev The same, they just get added to the Merkle tree rather than just a set? #dev the same as before. the only change is that when doing process() in wasm, you just call SMT::get_leaf() (using a WasmDb backend for the SMT) instead of db_contains_key() as we currently do #dev Sounds good :) #dev and secondly for update() we use insert_batch() which is slightly more expensive #dev but money isn't really using the SMT, just making it available for other contracts #dev *nod* #dev It's great for the DAO voting indeed #dev yeah or any ZK proof where you want to check a coin is valid (you need to see it's unspent otherwise it could be a spent coin) #dev altho as you saw, the SMT proof is expensive #dev but i can't really see how to get around needing to do 256 hashes and 256 conditional selects #dev *255 #dev Yeah dunno #dev Could ask strad or Daira #dev Or if you know anyone from PSE or Scroll #dev anyway its ok for now #dev I suppose they're using SMTs for Efferium #dev i only know arnau, idk if he's with them still #dev !list #dev No topics #dev !topic updates #dev Added topic: updates (by brawndo) #dev should i take &mut SledDbOverlay or just clone the handle? #dev &mut #dev ++ #dev But there's SledDbOverlayPtr #dev &mut is fine here #dev ty #dev No #dev It's not #dev ;) #dev You should use the type #dev pub type SledDbOverlayPtr = Arc>; #dev it's just a small block of code where the overlay is locked(), then unlocked (like in merkle.rs) #dev Please use the type #dev You also have db handles in the runtime #dev i mean here darkfi/src/runtime/import/merkle.rs:258 #dev It depends on what you want to do, but I seriously doubt you'd use the SledDbOverlay directly #dev Yeah so you'd get the entire blockchain db like that on line 257 #dev And then lock the overlay and use it #dev it's just for the duration of a single operation .insert_batch(), if we have to repeatedly lock()/unlock() while doing a bunch of .put(), it seems excessive #dev this operation darkfi/src/sdk/src/crypto/smt/mod.rs:155 #dev So hold the lock during the entire operation #dev ok #dev yep i plan to drop it right after #dev Cool #dev in runtime/import/merkle.rs, we read the current tree (line 168), modify the tree, then write it back (line 259). #dev each time we lock/unlock. It's probably safe since we aren't writing async with contracts, but shouldn't we lock it for the entire duration? #dev Yes you're correct #dev ++ will change this after then #dev ty #random test #random test back #random test #random test back #random test #random test back #dev gm #dev hi #dev <**DMaboutGrants**> hi folks #dev Hi #random test #random test back #random test #random test back #dev : @zero pushed 1 commit to master: c5166445d7: smt: get it working with the WASM, and add it to money contract for nullifiers. Summary of changes:... #dev \o/ #dev :D #dev Nice #dev !list #dev Topics: #dev 1. updates (by brawndo) #dev : @zero pushed 1 commit to master: 66b44abc78: runtime: lock sled overlay for the entire duration of merkle::merkle_add() [safety rzns] #dev gm #dev hello o/ #dev Hello #dev !start #dev Meeting started #dev Topics: #dev 1. updates (by brawndo) #dev Current topic: updates (by brawndo) #dev hihi #dev yo #dev upgrayedd might be afk today #dev Shall we just do a round of updates? #dev ACTION found some bugs in the net code this am :D working on a fix, pretty straightforward, after this inshallah will be ready for review #dev Nice #dev brawndo did a prelim SMT impl but it needed some small work/changes, and then a bunch of scaffolding for integration #dev ACTION working on darkirc services, so we can start registering anon accounts and work our way to RLN spam protection when needed #dev i managed to make the PathChip not take a path during construction so in the VM we don't need to store the chip on the stack which was weird, and instead can use Value<[Fp; 255]> like with merkle tree #dev ACTION working on tau tasks, for read-only key, I implemented a very no-brainer, having an encrypted password, and a key, anyone who can dycrept that password would have read and write access over tasks in tau, other wise you're an observer with read-only access #dev This is also opening up a good path to controlling the ircd through the IRC protocol fully #dev * working on the WIF implementation, finalizing on that one then I am free to work on the generator constants #dev hanje-san: Thanks a lot for those improvements #dev nice, what does it mean registering accounts? you mean staking some DRK using darkfid? #dev Yeah currently I'll just be doing keypair mgmt, and later on we will connect it to some contract #dev also just now i updated the money contract, so will finish the DAO, then there's no more crypto changes and we finished... i'll move onto updating drk cli tool #dev brawndo: can you share some info on services or link some code snippet to look at? #dev The idea is to have some kind of "service" (think ChanServ and NickServ) in the IRC client so you can do all your ops within the app #dev ahhh #dev cool #dev nice nice, can i do DAO stuff that way #dev Sweet! #dev https://github.com/darkrenaissance/darkfi/blob/master/bin/darkirc/src/irc/services/nickserv.rs #dev I pushed some scaffolding here #dev But have dirty local work I need to still clean and architecture better #dev cool #dev did you see the telegram app store? i think i showed it to you #dev Yes :) #dev nice #dev also i made a weechat ticket, did you see lol #dev https://github.com/weechat/weechat/issues/2096 #dev One thing that is unclear to me is how to make the ircd aware of the blockchain state #dev Title: IRCv3 server-time messages delivered out of order are appended to the buffer which breaks IRC as a p2p protocol · Issue #2096 · weechat/weechat · GitHub #dev ooh nice #dev Will check that for sure #dev seems they want to add editing the buffer for bridges like matrix where messages are deleted by ops .etc #dev which would be sweet, we could add editing messages and also optional channel moderation #dev Cool they didn't say no #dev yeah im talking with the guy on libera, i got weechat compiled to play/poke around in #dev :) #dev i like the idea of having an array in your config file with ops = [key1, key2, ...] #dev and then any of those keys can do ops stuff like delete or edit msg #dev but it's optional #dev mhm #dev Though delete/edit in a p2p context means something else #dev Nothing can really be deleted #dev yeah it's just another message, altho i don't know how unlinkable messages could be edited or deleted yet #random test #random test back #dev ah yeah nvm it's easy #dev The edit/delete is linked :) #dev yep just that #dev there's a future for IRC #dev Obligatory: https://xkcd.com/1782/ #dev Title: xkcd: Team Chat #dev IRCv3 = web3 IRC? #dev !end #dev Elapsed time: 12.3 min #dev Meeting ended #dev nowebpls #dev short-n-sweet #dev hanje-san: If you have any wishlist for the IRC services, lmk #dev your weekly mandatory social #dev ACTION hands out 10 GBTs #dev brawndo: i didn't want to say since it might be feature creep, but would be cool to have optional bots as plugins, like the meetbot #dev p2p bots but it's not necessary, we got more important tasks #dev Something you run alongside your daemon? #dev Might be better to research this in the drk wallet context first #dev yeah could be python scripts run by the daemon #dev sure #dev Yeah I think we'll learn better how to sandbox it when doing it for the wallet #dev Then we can apply that knowledge to IRC #dev makes sense #dev ok thanks for the chat #dev !end #dev Elapsed time: 28512918.2 min #dev Meeting ended #dev thanks everyone o/ #dev ty all #dev ty all #dev : @zero pushed 1 commit to master: fb4a521f70: zk/smt: fix broken unit test #random test #random test back #random test #random test back #dev can't build tests, known issue? my env? #dev error: couldn't read tests/../proof/smt.zk.bin: No such file or directory (os error 2) #dev --> tests/smt.rs:36:19 #dev 36 | let bincode = include_bytes!("../proof/smt.zk.bin"); #dev should it just be "../proof/smt.zk"? #dev at least that makes them pass for me #dev loopr: no #dev tests pass after fb4a521f7042888c811f782cf1e21a16f097bdd7 so probably env issue #dev did you pull? #dev I actually just rebased #dev well before lunch #dev lemme check #dev fba4 is in my history (after the rebase) but it still would fail #dev but ok wondering what's wrong then, I'll check #dev do you guys push directly to master? #dev loopr when you run make test, does it build the smt proof? #dev aha #dev make test does #dev Makefile is there for a reason, use it ;) #dev I know you said that before. Can make test run single tests though? #dev you can build the proofs using the make target and then run the test individually using cargo #dev they should have been build by the make test you just run, so single test run should work now #dev (assuming you let it build them) #dev OK, I assume make test is only due once after pull (or after I'd add something to it), then cargo is fine for my single test #dev proofs have their own target, which test target uses in the Makefile #dev (referring to Makefile targets when saying targets) #dev kdoke #random test #random test back #dev hi all #dev gonna be working on the atomic swap stuff :) #dev my PR #246 is ready for review #dev noot: hey and welcome #dev first things first, can we ditch all the foundry bloat? #dev second: ditch extra crates like async-watch, eyre and tracing #dev which part in particular? like all of foundry? #dev what do you use for logging instead of tracing? #dev yeah, hardhat is much less bloat and doesn't require affecting root repo config #dev we can make the ethereum contract stuff all live under that subfolder #dev even trigger stuff from the bin/swapd makefile #dev i use anvil in the tests for the atomic swap impl - even if i get rid of the foundry stuff, there will still be changes to the root config because of that #dev anvil is part of foundry so that might be what you're seeing there #dev can you point me to the tests? #dev https://github.com/darkrenaissance/darkfi/blob/282aeb043391af419beb21848380c9f825baff56/bin/swapd/src/ethereum/test_utils.rs #dev which is used here https://github.com/darkrenaissance/darkfi/blob/282aeb043391af419beb21848380c9f825baff56/bin/swapd/src/protocol/initiator.rs#L252 #dev i would argue hardhat is more bloat as it requires having nodejs, i chose foundry for this as it doesn't require additional deps #dev sure, we are not discussing foundry vs hardhat, the point is to have everything ethereum related under a single folder, without affecting rest codebase, especially root #dev it's only affecting Cargo.lock right? is there a way to have it not affect that? #dev without just moving it into a separate repo #dev it also affects git submodules #dev i can copy paste the contract dependencies into the ethereum folder and remove submodules if that's preferred #dev does the repo have other git submodules? #dev nope #dev yeah using just the contracts that needed are much better than pulling the entire repos #dev ok i'll change that #dev thats not trivial right now #dev you should start with ditching the extra deps #dev namely: asnyc-watch, eyre and tracing #dev what should i use for logging? and instead of eyre? do you use typed errors for everything? #dev do you have something already implemented i can use instead of async-watch? #dev check swwapd/src/main.rs #dev we use log for logging #dev for erros, you should create an error.rs file and create the corresponding error enums you need #dev like for example in bin/darkfid/src/error.rs #dev for channels we use smol #dev there are a lot of example usages through the codebase, for example check bin/darkfid/src/task/miner.rs #dev ok i can use thiserror for typed errors? #dev where we create a channel so threas can communicate #dev i also see you have anyhow in the repo, can i use that instead of eyre #dev anyhow is used for cli tools #dev daemons should have their own errors define and/or use the main src/error.rs ones #dev anyhow should also get the boot where is used, so better to not use it in the first place #dev okay cool, i'll update that #dev btw anyhow is used in research stuff, not main repo #dev for async-watch - i specifically wanted to use a spmc channel with the features that watch has, if i remove it i'll basically just end up rolling my own async-watch, which seems redundant #dev what's the reasoning for wanting it removed? #dev https://docs.rs/smol/latest/smol/channel/ #dev Title: smol::channel - Rust #dev smol is spmc #dev i'd rather keep it than have to just re-implement it, there's only two files in async-watch anyways #dev yes but smol channel only allows one receiver to receive the value #dev i want to be able to watch for swap state and changes from multiple places #dev well why not just open a bounded channel for each one? #dev like a channel for each watcher? #dev yeah #dev since you have a single producer they can handle updating all the watchers #dev which I guess you already know who is supposed to listen for updates #dev are the watchers dynamic? #dev yeah they're dynamic right now, and will have to be for the rpc cli #dev are these rpc calls one way? #dev I mean the cli perfors the request and waits till it receives a response #dev its not like a subscription correct? #dev in the existing swap impl the rpc has subscriptions, it's not strictly necessary but makes life easier for e2e testing #dev nw we can work with that #dev so the daemon keeps a set of open subscriptions(aka channel senders) and simply pushes the update to each of them #dev then you receive the rpc request to subscribe, you create a channel and push its sender to the daemon set, and use the receiver for the "waiting" logic #dev using watch is simpler because you just clone the watch and wait on changed(), don't need to push a sender to the daemon #dev using channels, the rpc module will need a reference to the daemon as well (or some way to push the channel to it) #dev the point is to minimize external deps, and in this case we are discussing about a dep that does pretty much what an already existing one does. The extra code handling is much preffered imo that importing it #dev rpc module can have the reference to the set no problem #dev the rpc handler is a trait, that is implemented for the daemon main struct Swapd #dev so you can add the set there, and rpc already has the reference, since is a field of its self #dev hmm okay #dev is there a criteria for when new deps can be added? #dev like how is the decision made on what to add #dev just curious cause i'm new #dev i also noticed there's deps in the root Cargo.toml but the crates within the repo that use those don't use workspace=true, is that for a reason? #dev re: criteria: since we want to minimize external deps, we add stuff we absolutelly need and doesn't make sense to impl ourself #dev can you give an example for the Cargo.toml deps? #dev basically everything in here https://github.com/darkrenaissance/darkfi/blob/master/Cargo.toml#L53 #dev is there a reason they're defined here? #dev ah nevermind, everything in src uses them lol #dev lol yeah I was waiting for you to see it #dev nw #dev i was looking at the Cargo.tomls in bin/ lol #dev haha #dev yy gotcha #dev I was like: #dev 1) What #dev lmaooo my bad #dev getting used to the repo structure #dev so everything in src/ is one big crate right? #dev pretty much yeah, src defines the lib features #dev i see #dev and bin/ are the daemons/applications we build using them #dev if you see in all bin/*/Cargo.toml darkfi is the main dependency, along with the features we need from it #random test #random test back #dev i see, it's split by feature, nice #dev unrelated, but i get compile errors on the toolchain in rust-toolchain.toml :/ when i switch to latest nightly it's fine #dev you are supposed to use latest nightly #dev oh okay #dev rust-toolchain.toml uses nightly #dev btw you can start using the root Makefile #dev omg nevermind #dev iirc swapd is already in there #dev and you can use stuff like make fmt and make clippy #dev fmt to properly format the code to our spec #dev i think i had an old version of rust-toolchain.toml or something (or one i updated previously lol) #dev and clippy for linting etc #dev lol #dev cool, will do, thanks #dev ok so I assume you will start with the small stuff(-tracing, -eyre) and then go to the smol stuff right? #dev ACTION is not sorry for the pun #dev haha #dev yes exactly #dev so we're set on no async-watch? #dev it's less than 300 lines with comments and everything #dev is it just that it's a dependency at all which is bad? #dev yeah but we can achieve the same with with like 6 lines(with comments) #dev hmm okay #dev i'll try changing it and see #dev its because its redudant, as smol is already there #dev and yeah, the less external deps the better #dev can you also drop async_std in dev-deps? #dev especially the tokio ref XD #dev I guess that you are using it to run async tests #dev but guess what, smol already does that: https://github.com/darkrenaissance/darkfi/blob/master/bin/darkfid/src/tests/forks.rs#L27 #dev just tried with smol::block_on and the tests fail #dev ---- protocol::initiator::test::test_initiator_swap_success stdout ---- #dev thread 'protocol::initiator::test::test_initiator_swap_success' panicked at /home/e/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/net/addr.rs:182:48: #dev there is no reactor running, must be called from the context of a Tokio 1.x runtime #dev this is coming from ethers-rs i believe #dev requires tokio :/ #dev let me check #dev backtrace shows ethers-providers-2.0.13/src/rpc/transports/ws/backend.rs:68:41 #dev well well well #dev This crate is in the process of being deprecated. See #2667 for more information. #dev https://github.com/gakonst/ethers-rs/issues/2667 #dev Title: ethers-rs is being deprecated · Issue #2667 · gakonst/ethers-rs · GitHub #dev another one takes the boot then :D #dev yeah the replacement isnt ready yet though afaik #dev https://github.com/alloy-rs/alloy #dev Title: GitHub - alloy-rs/alloy: Transports, Middleware, and Networks for the Alloy project #dev > ethers-rs will continue to be maintained until we have achieved feature-parity in Alloy. No action is currently needed from devs. #dev yeah alloy isnt ready #dev if the parts we use right now are working, why not change to it from the getgo? #dev to alloy? #dev I guess #dev it's not ready #dev > (Soon) alloy: Rust interface to Ethereum and other EVM-based chains. --> #dev (Soon) middleware: Alloy Middleware for overriding default interactions with a chain. #dev (Soon) chains: Canonical type definitions for EVM-based chains. #dev from the github org description #dev these are the parst i need #dev I also see a hard dependency on tokio.... #dev doesn't look like they have anything ready apart from types and serialization #dev why are eth devs like that? #dev yeah lol #dev ok I saw we start with the other deps first and we see about that later #dev if you recall we haven't touched on actuall code yet XD #dev lolll feel free if you want to start taking a look at the code #dev will do, by tomorrow (TM) #dev thanks :) will work on the dep updates in the meantime #dev yoyo #dev noot: check darkfi/src/system/subscriber.rs:36 #dev this implements pub-sub channels with multiple receivers #dev also check darkfi/src/system/condvar.rs (sometimes useful for signalling between tasks) #dev if you need something non-async then we can implement it using lockless queues #dev gm #dev : @zero pushed 1 commit to master: 6bee5bf416: subscriber: add docstrings, and simplify a method. #dev gm #dev : @parazyd pushed 1 commit to master: ec5984685b: chore: Add missing license headers #dev gm #dev XD oops #dev : @zero pushed 1 commit to master: 309157e0ba: runtime/merkle: return early with SUCCESS (but give a warning) if the coins list for changing the tree is empty. We also don't do any gas calc since nothing on disk was modified. #dev oh nice, cargo +nightly fmt will now change `use xxx::{yyy};` to `use xxx::yyy;` #dev : @zero pushed 1 commit to master: fd1d154b15: runtime/smt: return early with SUCCESS (but give a warning) if the nullifiers list for changing the tree is empty. #dev Hey when reviewing these functions #dev Make sure there's no way to do an infinite loop #dev e.g. by constantly calling the function with no args so it returns with no gas use increase #dev Every call should use at least some gas to mitigate infinite loops #dev hanje-san: ^ #dev hey #dev : @zero pushed 1 commit to master: cde5f7cea2: runtime/merkle: simplify the function. we do not need to store the intermediate roots for the tree since each update is atomic. Also the serialization length == 32 should be an assert rather than a conditional check. #dev brawndo: aha good point ty. will make sure of that. fyi merkle has a small .subtract_gas() call at the start as well but i didn't know why it was there... good to know #dev i split the commits so they're easier for you to review #dev ty #dev can we delete pub(crate) fn get_verifying_block_height_epoch(mut ctx: FunctionEnvMut) -> u64 { #dev darkfi/src/runtime/import/util.rs:230 #dev because it is synonymous with darkfi_sdk::blockchain::block_epoch(get_verifying_block_height()) #dev upgrayedd: ^ #dev : @zero pushed 1 commit to master: 010ea6037d: runtime/merkle: db_roots store key=blockhash, value=blockheight (before value=[]) #dev ^ this is to keep track of state changes. Ideally our DB itself would be a time series one, but we don't have that luxury, so I just added the blockheight as a value alongside the merkle root hashes we store. #dev oh wait damn blockheight is not granular enough actually #dev is there a single incrementing value i can use? something corresponding to the tuple (blockheight, transaction index, call index) #dev Why do you need it at all? #dev so we always have this issue in ZK of generating proofs for some state, but the blockchain is dynamic (I cannot guarantee when/where my tx will execute in the blockchain). The way we avoid this problem is by having some algorithm which picks a period discrete state. #dev see darkfi/src/contract/dao/src/lib.rs:98 #dev (because we cannot use the exact blocktime, we instead use 4 hour windows. if your tx doesn't get confirmed within that window, you must remake it and try again- possibly with a higher fee) #dev the idea with this triple, is that the contract can choose exactly which merkle root we must use, otherwise if the user can supply one, they might give you one that is advantageous to themselves somehow #dev You should just use the root at the time of proposal creation #dev ideally the merkle root picked is done algorithmically, and you must construct your ZK proof for exactly that one (not the merkle tree +1 or -2 .etc from that interval) #dev The wallet should maintain such a tree and be able to copy it at the time it recognises a proposal tx #dev Then for each proposal you'll have the Merkle tree it's expecting #dev lets take proposal creation as an example then. I supply merkle roots both for coins and nullifiers. what if I pick a really old one? #dev so then you need to at least check it's somewhat recent #dev Why would you supply anything? #dev The contract should handle that #dev At time of execution #dev to make the proposal, I have to use my coins to show I have a certain threshold of coins, right? #dev but this is done inside ZK, so we have to pick some merkle roots for coins and nullifiers #dev which one is used? you cannot use the very latest unfortunately #dev so my solution is to just use an interval #dev You should be able to use anything as long as you're proving it's unspent #dev Why does it matter how old it is? #dev aha i think actually the DB can store the index incrementing itself #dev brawndo: i mean for verification, you cannot use the latest roots #dev Where? #dev In Money we keep a set of roots for each change in the bridgetree #dev So anything is valid #dev in the ZK proof. I have to make a proof, then get it confirmed. When verifying the proof, the roots used to verify it will be old already #dev don't you think it's maybe bad if the roots are like really old? what if i buy gov tokens then sell them, but I keep making proposals which i can vote on #dev In the Burn proof you're proving the Merkle path corresponds to _some_root #dev There is the set of all roots which this root is checked against #dev (It has to exist) #dev yep but *which* root you use will have an effect #dev Additionally the nullifier would prevent double-spending, no? #dev for example, here's a DAO attack: #dev DAOs A1, A2, ... let i=1, buy gov token for DAO A1, sell gov token, let i=2, ... rinse and repeat #dev now i can make proposals for all DAOs A1 to An where I have a huge voting power and i can vote in all of them #dev Moving that coin should be creating a new coin and thus disallowing voting on proposals that have been created before that coin #dev when the proposal is created, it commits to the money coins and nullifiers tree, so even if you move the coin, you can still vote on the proposal #dev i don't see any workaround for that #dev (because then you can make a proposal and keep moving coins around but still keep voting) #dev so we just commit to a snapshot (by committing to the coins/nullifiers roots) and transfers don't exist in this snapshot #dev Why would you be committing to the nullifiers tree when creating a proposal? #dev so people cannot vote with spent coins #dev Can't you just check the latest Money tree for that? #dev I don't understand the nullifier snapshot #dev It should be checking the latest ones, unless I'm missing something #dev it can use the latest ones, but you need some notion of what you mean by 'latest' to use it in ZK #dev Well likely then the sparse Merkle tree is the wrong choice #dev that is, the contract needs some way to algorithmically select a nullifier tree root #dev You want to not reveal the nullifiers, but also be able to look at the latest state #dev The nullifier state that's being looked at should always be the newest one, since it represents the "current" state of spent and unspent coins #dev Anything that is not the latest can be gamed in one way or another #dev lets say we create a proposal, isn't it ok to simply use an agreed upon snapshot from 1 hour ago? (universal across all DAOs) #dev like you must use those particular roots, none other #dev >use an agreed upon snapshot from 1 hour ago? #dev What does this mean? #dev the state of the coins (both coins and nullifiers). I make a ZK proof using those merkle roots, and get my tx confirmed. The WASM contract uses those as public inputs. #dev block time is 90 secs, so approx every 60 mins = 3600s or 40 blocks, the coin and nullifier roots used rolls over #dev I'm not sure I like this idea #dev Something feels wrong #dev so it's like discrete snapshots: use the roots corresponding to blockheight = floor(current_blockheight/40)*40 #dev Why can't we make something deterministic? #dev wdym? this is deterministic (calculated in WASM) #dev This feels like it'll go wrong horribly for some reason #dev Time is not deterministic #dev it's not using time but blocks #dev 11:18 block time is 90 secs, so approx every 60 mins = 3600s or 40 blocks, the coin and nullifier roots used rolls over #dev Also what do you mean by rolls over? #dev so when we verify the ZK proofs, they need a coin and nullifier merkle root to be passed in. We require that these roots are somewhat recent, and also we want which root is used to be deterministic (algorithmically selected rather than allowing the caller to select one) #random test #random test back #dev *we need a ... #dev > hanje-san | so people cannot vote with spent coins #dev I don't think this hold true when you use a snapshot #dev I can transfer the coin, and then make a voting tx using the old(invalid) coin to vote #dev unless you are checking the current money state, to see if the invalids coin nullifier has been revealed #dev brawndo: so rolls over means that the coin and nullifier roots are delayed. lets say block 100 is the current one we're using. At block 140, the contract begins using the latest roots again. At block 141, it uses the same one still, ... until block 180 #dev upgrayedd: correct, but also you cannot double vote by sending to yourself, and also the person you sent to cannot vote (which were the main attacks we wanted to protect against) #dev so the logic behind the snapshot is that only people that holded those coins at that exact period can vote, regardless if the used the coins after? #dev yes #dev why not add a second check, to also check the current state, to eliminate that last part also #dev because of the way ZK public inputs work #dev meaning that they had to hold the token at time of snapshot and at time of voting #dev if i give you a proof for merkle root R, you cannot verify it with merkle root S #dev upgrayedd: because it's in ZK, we cannot see which coin/nullifier is being used. they are completely hidden #dev latest doesn't exist in ZK, the only thing we can do is pick some point in time #dev which i'm saying we deterministically/algorithmically pick periodically #dev I'm not saying to check in zk #dev do the check in wasm contract code #dev we do this here: darkfi/src/contract/dao/src/entrypoint/vote.rs:84 #dev if you do it in wasm then it breaks the anonymity #dev wait the input.mullifier is different than the coin one? #dev no it's the same #dev you cannot check a coin is spent otherwise, that's why we need the SMT #dev well then you are already revealing it no? #dev vote.rs:158 #dev this needs to be fixed #dev hence the recent SMT changes #dev aha #dev i want to remove input.nullifier ideally #dev (since it doxes your coins showing you voted) #dev also when you create a proposal, every with gov tokens is eligible to vote. so it doesn't matter whether we use the latest nullifier tree or not. the only thing that matters is that the coins merkle root is fixed. #dev right now it's arbitrary, but ideally it would be algorithmically selected which coins root we're using #dev the main issue is with proposals imho, when you prove ownership of a threshold of coins to be eligible to make the proposal that people can vote on #dev in this case, right now the nullifier state is the latest but i want to change it to the deterministic snapshot #dev then the issue could be someone acquires a large amount of gov tokens, makes a proposal where they have majority voting power, then sells those tokens #dev but if we're worried about this attack, we can simply use the user_data field of coins (so your gov token has a spend hook with a special contract to enforce this when calling money::xfer()) #dev in the user_data field we store the coins creation_timestamp (blockheight .etc). then inside the DAO proposal, you can only create proposals if your coin is older than 40 blocks deep. #dev that doesn't fix it #dev There must be a better solution #dev This feels hacky #dev ah ok, what should i do then? i didn't find one yet and thought about this last few weeks #dev its not just about making a proposal, its also about not being able to vote after you move your coins #dev i don't think that matters #dev I haven't thought about it but I can #dev ok i'll wait then a bit #dev yeah it does, whale buys tokens, waits 40 blocks, creates proposal, immediatelly sells then and still be able to vote #dev so what? #dev they cannot do it for multiple DAOs #dev lol #dev they must wait 40 blocks each time #dev 1) What #dev they can do it for multiple daos, they can do the init buy on all the daos they want to attack #dev effectivelly passing a proposal to the daos for free #dev here's the attack. I have $100 and i want to vote in 10 DAOs. Normally i would only have $10 of voting power in each DAO, but with this I have $100 immediately. #dev but with the time delay, you only have $100 per single voting period #dev *coin creation should be as long as proposal is open for voting #dev so buy coin, wait a month, open proposal, vote with $100, sell coin, wait another month, ... #dev not a very practical attack #dev hanje-san: Was the prior mechanism fully good, besides revealing nullifiers when voting? #dev mostly yes, except one minor thing which is that the coins merkle supplied is chosen by the caller but maybe it should be selected algorithmically or at least checked to be relatively recent. #dev I don't see why it has to be recent, except if you want to prune the roots set every once in a while #dev The recent-ness I think doesn't change anything #dev i believe that proposals only matter, not voting. 1) if a proposal is bad people will vote no on it, 2) we copy the coins/null state and verify that, and it doesn't matter whether coins are spent. what matters is the state then and there, so the main issue is that the proposal commits to a valid state. #dev yeah true the recentness doesn't matter, you're right actually, but for nullifiers it does matter. #dev There is no solution like this for double-voting #dev I think each proposal should have its own set of coins that can vote on it #dev For example you should know the full supply #dev Then the proposal can create 1 coin with the full supply, and then people who vote could take from that supply that amount which they vote with #dev yeah the supply is (usually) known. the issue is how you allocate that supply of voting power #dev which is what i'm saying, we just snapshot the state at periodic intervals #dev A voter will have their coin, so effectively they would just swap it with some amount in the proposal coin #dev Some kind of wasm code could control this perhaps #dev Not revealing nullifiers will always allow double-spend #dev A Merkle tree doesn't help with this #dev I'll be back in an hour or so, need to run an errand #dev we have this right now where every time you make a proposal, or you vote, you must also add a sibling money::transfer() call #dev ok cya talk later #dev Yeah I'm just saying perhaps we're thinking about it from the wrong perspective #dev Will think a bit, biab #random test #random test back #dev ++ #dev maybe keeping what we already have is the way? #random !hackersays #random “Don't worry about people stealing your ideas. If it's original, you'll have to ram it down their throats.” — Howard Aiken 15[Quote #65e067] #dev hanje-san: vks/pks hashes are changed? #dev I think this is the correct pair: 828a7f6d28fc2ec89898f3eb29a00e972609debfab2574e4473f18607a9fd1ec c1f1d1bcab1a6046c5a938931f6eab28d4da5840d4bd80a0f0d719d654699439 #dev hanje-san: What we have now works but is also not ideal #dev hanje-san: Do you think there is some way that works perhaps if we did everything within the same proof? #dev It's probably correct that each proposal has to create some state snapshot #dev But this kills all the coins that might be moved in the meantime #dev So e.g. there can be a proposal you like, and you want to buy some tokens so you can vote on it - it's not possible #dev It's not a trivial problem to solve #dev The info a proposal can have is the total supply of tokens that can vote on it #dev I was first thinking that each proposal could act as some kind of swapping mechanism, but that is also broken once I gave it some more thought #dev The core issue is that we want do prevent double-spend/double-vote #dev s,do,to, #dev We currently have this, with a tradeoff in anonymity: some arbitrary coin is now revealed to be the gov token #dev What are the practical consequences of this? #dev Keeep in mind it's also still not possible to obtain tokens after a proposal is created in order to vote on it (I think this is an issue as well) #dev brawndo: re: proposal you like.. #dev that introduces the attack vector of me transfering my coins to myself so I can keep voting #dev Obviously #dev I still think it's an issue that would be good to solve if possible #dev From a UX perspective it's rly bad #dev Like just imagine LunarDAO investing in a project, makes a proposal #dev You see the proposal and want to join in #dev Sorry not possible you should've been here before the proposal #dev yeah I understand the use case #random "France prepearing 2000 in troops to enter Ukraine" Madness #dev : @skoupidi pushed 2 commits to master: aae713227f: contract/test-harness/vks: updated hashes #dev : @skoupidi pushed 2 commits to master: 41c9bd28ba: validator: updated sled-overlay version and use new diffs logic for finalization #dev brawndo: so what we currently have is that the nullifier is revealed, but then everytime you make a proposal or vote, the wallet must also move their coins at the same time #dev we might decide this is better since it always uses the latest nullifier rather than some snapshot #dev (and maybe more efficient since we don't need the SMT) #dev Which invalidates voting on two proposals #dev yep it would break that unless you do it within the same tx #dev true #dev about being able to join a proposal by buying coins, i didn't know it was a huge issue and i don't see rn how to allow that without also allowing double voting #dev will think a bit more, but lmk whether you think current approach (which makes wallets logic more complicated since it has to track multiple coin states per proposal) or the SMT approach (which makes DAO voting more expensive) #dev : @skoupidi pushed 1 commit to master: 696bc213a0: validator: fixed stupid mistake #dev I'm not really sure. I trust you to make the better choice since you put more thought into it #dev But I'm thinking if there is some generic solution to this #dev What we want to achieve is a simple idea, just a bit difficult in our context #markets hey lads, assume I do great on darkfi, and I stack a good amount of coins after some time - what would I be able to do with them, if everything is anon? Like, say I'd want to buy a house, or an electric car, or even invest in a local renewable energy project - how would that work? #random test #random test back #dev Got a dc after my last msg #math hello #philosophy hi everyone #dev hanje-san: What if we introduce another keypair for voters? #dev Could something maybe be done that way? #dev Like binding the coins to some additional key #dev Or something like RLN which could force each coin to be able to vote only once on a proposal #dev I suppose voting-with-coins-newer-than-proposal isn't doable #dev guys I assume it is ok to ask code questions here, while learning especially #dev initially I had fn from_wif(&self) -> Result in the trait #dev However that doesn't compile, because the return is not Sized #dev I changed it to this now: #dev fn to_wif(&self, is_main: bool) -> Self; #dev fn from_wif(&self) -> Result>; #dev So while to_wif returns Self, from_wif returns a Result> #dev is this an acceptable design? Result<&Self> seemed like an option, but then returning a ref from the implementation looked pretty hard #dev (I understand the concept of not ownership so returning a ref to a local variable does not work) #dev s/not// #dev brb will eat dinner then answer #dev bon appetit #random test #random test back #dev b #dev brawndo, so there's 2 approaches. I think RLN is orthogonal to the issue of checking whether a coin being used for voting is spent or not. Essentially RLN is like saying "what if we make another nullifier for the voting" - sure we already do that (store the nullifier in the vote_nullifiers db), but the issue is that we only want to allow coins that are valid to vote #dev and the issue is checking the coin has a corresponding nullifier. we can either do this in ZK, or not in ZK, but if we don't do this in ZK then the coin must be immediately moved because we doxxed it. #dev currently we are doing #2, and could maybe keep it that way (wallet logic is complex, but SMT puts a lot of onchain burden). also as you said we're using an older coins set, but the newest nullifier set. #dev loopr: make a minimal example and post here or in #rust on Libera IRC #dev but that is not the correct approach, you must return Self which is Decodable #dev also remove that bool is_main #dev i told you, there is no consts defined, the trait defines what that byte is #dev ok off to sleep gn #dev > hanje-san │ i told you, there is no consts defined, the trait defines what that byte is #dev I am afraid I don't get what you mean. As per the btc wiki, the byte is different for a mainnet or a testnet related object #dev are you saying that we don't care about this distinction, and we just use one single byte for everything? #dev > hanje-san │ but that is not the correct approach, you must return Self which is Decodable #dev `to_wif` returns Self #dev But `from_wif`, because it is using bs58::decode, can't just return Self. either we unwrap (which I got the feedback elsewhere I shouldn't), or it returns a Result. But Result does not compile on a trait (only Sized allowed). so I am not clear what the way out is. #dev the example is the PR itself (it's actually pretty small to be nearly minimal). https://codeberg.org/darkrenaissance/darkfi/pulls/250 #dev Title: #250 - WIP: First iteration of task 17, WIF formatting - darkrenaissance/darkfi - Codeberg.org #dev In the meantime, I think it's reasonable I could start looking at the hardcoded generater const #random test #random test back #dev would it be useful to be able to start a dev network locally with docker images? #dev i know there is contrib/localnet #dev the advantage of using docker images would be that it'd be easier to share work in progress, or run others' branches, etc. #dev it'd make most sense tho if there'd be a central repo for the images somewhere, not sure if that's maybe not ideal #dev loopr: can you explain how that useful? #dev how sharing an image is different from sharing a binary? I run it and then what? If I need to change or fix stuff, I still need to access the code, therefore having a dev environment, etc. etc. #dev for network simulation specifically, why use virtualized environment and degrade performance? #dev as I said, " it'd make most sense tho if there'd be a central repo" #dev then one could just refer to an id instead of passing binaries around #dev yeah I'm asking specifically the advantage of a docker image over just a binary, in that shame "sharing" context #dev s,shame,same (lol) #dev docker pull instead of "please send me the binary you were working on" #dev every project is different, I like workflows custom fit for teams #dev so it may well not make sense here, while it made sense elsewhere #dev automating (reproduceable) nightly builds/tests was one #dev when I'm saying binary in that same sharing context, I mean like a repo containing builds, where you can pull from, not manual coms... #dev the only "advantage" in docker is having a constant environment, but still it depends on the usecase #dev there are pipelines that do automated checks in the gh repo, is that what you mean? #dev yeah in that scenario (I have never seen before), there's probably no difference other than the standardized docker tooling #dev yep pipelines like that #dev i could ask differently #dev is everyone happy the way you can currently run local dev networks? #dev why what's wrong with it? how simpler can it get that a script? #dev s,that,than #dev haven't heard any complains #dev okey doke #dev it's just that I did work on such an env with docker images recently and indeed this is just a question if it might have been useful #dev not saying there is anything wrong with it (in fact I haven't played much with it yet) #dev I don't think such an env is needed, at least right now, it might be useful for testing releases compatibility with each other, but still I prefer not to bloat stuff, since just running binaries over a script is pretty much the same thing #dev ++ #dev . .... #dev hi #dev loopr: yes return Result #dev let wif = String::from("3RH5ferSx2yBBNuLk"); #dev let decoded = wif.into_bytes().from_wif(); #dev this is incorrect #dev let decoded = Foo::from_wif(wif).unwrap(); #dev ^ this is correct #dev impl WIF for Vec { ... } <- this is incorrect, it should be: impl Wif for Foo { fn wif_prefix(&self) -> u8 { 87 } } #dev trait Wif { fn to_wif(&self) -> String { ... } ... } #dev also from_wif(wif) should automatically verify the checksum when decoding #dev gm #dev hanje-san: I think 'fn to_wif()' should give a Vec #dev Then you can work with the bytes #dev If you need a string, you should implement Display #dev to_wif() should return a base58 encoded String #dev Actually not even a Vec but a fixed-size array #dev Display should do that, then you can to_wif().to_string() #dev it can't be fixed size because the type being encoded is variable #dev why do you need to work with the bytes? it has a checksum so you cannot change it #dev You can support different encodings that way #dev It's a minor change for more flexibility #dev i can't think of any encoding i'd use apart from base58? it has a prefix byte + 4 byte checksum, and the user passes it around #dev unless you mean base64 or encoding the string with japanese kanji .etc #dev Well it depends on the usecase #dev What WIF is made for is just for secret keys #dev yeah but we will use it for many different types like passing DAO info, .etc #dev Sure #dev i'd argue that introducing multiple encoding types would get confusing, and we should just default to base58 strings #random woah pdfgrep is such a good tool #dev Yeah #dev You're right #dev ++ #dev hanje-san: Say we're storing some items in sled. They could or could not be part of a struct. Do you think it's better to just store the entire struct as a single serialized item, or to just have keys corresponding to the multiple items we want to store? #dev I'm kinda leaning on the latter #dev yeah i generally prefer the latter too. it is easier to debug #dev ++ #dev (see db_info in money) #dev Yeah #dev : @parazyd pushed 2 commits to master: 50f7220341: chore: Clippy lints #dev : @parazyd pushed 2 commits to master: a9a6cb4ef9: darkirc: NickServ account registration... #dev hanje-san: Are your sparse Merkle tree changes still keeping the deterministic ordering? #dev Meaning a user doesn't have to care about the leaf position #dev It's known generally just by knowing the leaf #dev yes correct, and also the position in the tree is the same as the leaf value itself (pos = leaf) #dev ok cool #dev altho the gadget/zkas call allows specifying a distinct pos #dev I wonder if we should use that for the RLN too, did you benchmark the proof speed? #dev Verification speed at least #dev no benchmarks yet but i want to, however the SMT is interesting, it allows doing a lot of new things like: for example with voting, you can have the set of all proposals, then if the coin voted in the proposal, add it to the set. the coin contains the root for that set. #dev Although I dunno if it's good though, it'll use a lot of bandwidth #dev I'd want to keep darkirc minimal since phones #dev however i'm not sure if it solves the DAO issue since if i transfer you a coin, i need to send you the entire SMT tree too which i'm not sure how we can xfer such a large amount of data anonymously #dev The IRC account registrations should be done on-chain I suppose? #dev But then you can't really run a node on your phone #dev yes exactly by staking coins #dev well what if the blockchain is optionally on another device #dev It would work but that's not chat.exe anymore #dev on-chain at least allows you to keep bridgetree which is smaller and faster proofs #dev we could have a faucet for free accounts #dev I think the SMT proofs are big #dev (Too big for a messenger I mean) #dev aha yeah #dev it would be smaller with hyperelliptic curves #dev Like imagine cooking your CPU for each of these msgs #dev Battery goes to zero #dev XD #dev And you can't fully make it algorithmic either because you can't identify a spammer #dev Because in p2p people relay other ppls msgs #dev So essentially you always need a RLN proof #dev You can't just require them at some point #dev i think it's ameliorated with swarming, since you would only participate in the traffic for projs you're interested in #dev Alternatively we could build a smaller hardcoded proof with just bulletproofs perhaps #dev And not use halo2 #dev bulletproofs is good too #dev Still I doubt I can impl poseidon in that lol #dev you could do mimc, but even poseidon is possible #dev i'd just halo2 tbh and benchmark, see if it's any issue #dev Yeah #dev better to just have it working #dev but ok, doing it on-chain doesn't require SMT then since the position in the bridgetree will also be deterministic #dev There can't be a mismatch between two nodes executing a contract #math join #markets #dev yeah but you don't want every message on chain #dev you could use lighter forms of consensus like event graph or a per subnet blockchain #dev No the messages don't go on chain #dev Just the identities for registering an account #dev Everything else is ephemeral #dev great perfect #dev So my basic idea would be: #dev 1. _Somehow_ register a new RLN account on-chain: Then you have your two RLN secrets and the leaf position in the Merkle tree of accounts #dev 2. Register these secrets and the leaf_pos into your darkirc #dev 3. Use the account #dev However you'd also have to keep in sync with other accounts' registrations, I'm not sure how that should be propagated #dev public node? #dev Yeah I suppose #dev upgrayedd: RPC sub feature request: topics #dev upgrayedd: So you can have a JSON subscriber notifying you of a specific contract only #dev This is a bit flaky though, suppose you go offline, then reconnect, you'll be missing some accounts likely #dev So now upon reconnection darkirc has to sync the accounts again before being able to operate properly #dev it's not a big deal since some messages might get through and you might have to retry sending until synched #dev They can be shared through the event graph although there's no consensus on that and is easily scammed #random i love customizable software like weechat, altho weechat has such bad defaults #random i guess that's an artifact of how old weechat is #math you need /join #random it's interesting some linux infra/IRC communities (like bitreich) which are almost like RPG communities: https://tilde.town/wiki/toc.html #random Title: table of contents #random they even have their own internal currency #random the bots are just simple scripts ez to make and setup #random just lil casual games for people #dev : @parazyd pushed 1 commit to master: 1e5e56c9ea: darkirc/nickserv: Feed RLN identity through REGISTER #dev brawndo: ACK #dev it can be an optional param on blocks sub, but I guess having a separate rpc method is more prefered #dev I think the former is better #dev You'll have less mgmt #dev Have every sub have optional topics #dev Then you can for loop easily and check which sub wants what #dev yy that what I was thinking #dev : @draoi pushed 1 commit to master: 5f55e877ae: net: enable hostlist migration + bugfixes... #random <#> test #random test back #random fun website lol: exo-science.com #random <#> AccessDeniedAccess denied. #random :D #random chloe21e8 follow NgoloTesla on twitter #random i like the concept of exo-science and the rejection of regimes of truth #random however this seems pretty anti-scientific method also, like a lol of peaty stuff is too #random just like "it was revealed to me in a dream" #random just need to find the right balance #random <Ɛ>> https://www.youtube.com/watch?v=-UrdExQW0cs #random Title: How Quantum Computers Break The Internet... Starting Now - YouTube #random <Ɛ>> Veritasium predicts end of cryptocurrencies by 2036, when quantum breaks all cryptography #markets https://twitter.com/tier10k/status/1770486264568959408 #dev hanje-san: > hanje-san | trait Wif { fn to_wif(&self) -> String { ... } ... } #dev if this is a blanket implementation, doesn't this require self to be of Display? otherwise how can I get self to convert to bytes or string for wif construction #dev : @skoupidi pushed 1 commit to master: 5623914db7: Removed swapd #math Hi everyone #math hi #math how's it going? #dev : @dasman pushed 2 commits to master: d47eac66a4: bin/tau: setting access types as read-write and read-only(default) #dev : @dasman pushed 2 commits to master: f7d0b7a5ac: bin/tau: print info on cli when access denied #dev draoi: I'm getting version errors on tau, should I update my nodes yet, or wait for your signal #dev Contributing with Tor - Verify your key by signing the message: echo -n 'XXX' | ssh-keygen -Y sign -n gitea -f ~/.ssh/id_tor #dev is this possible if the ssh key has a passphrase? got an error #dev couldn't find any option #dev ok, -P, but that leaves the phrase in plain text in history, wonder why such a sophisticated tool doesn't support prompting (unless I missed it) #memes https://x.com/icebergy_/status/1770477188527071348?s=46&t=Nq3m5XO0mBHfGVMSWBFaLA #memes txn from tornado cash to blackrock form north korea lol #dev loopr: append DISPLAY= before the sign command #dev echo -n 'XXX' | DISPLAY= ssh-keygen -Y sign -n gitea -f ~/.ssh/id_tor #dev likeso #dev aha! #dev thanks #dev its ssh-keygen thinking its not a terminal so it tries to open a gui or something #dev btw any disadvantage of using tor-browser instead of the normal browser with the socks proxy? #dev so I would not have to install another browser #dev normal browser still fingerprints, keeps cookies etc. etc., so its up to you on how tight you want to be #dev ah #dev well, considering one goes through the effort of using tor, feels best to do it thoroughly #dev lol manjaro linux is mentioned in https://darkrenaissance.github.io/darkfi/dev/learn.html #dev Title: Learn - The DarkFi Book #dev : @dasman pushed 1 commit to master: acb3aeb3b9: bin/tau: update cargo's package description #dev <;)> gm #dev ;): gm #random i started darkfid and modified the config with consensus=true. do i need to uncomment (consensus_p2p_accept),(consensus_p2p_externel), etc. #random what is the blockchain size #random test #random test back #random done syncing blocks. #dev greets #random JSON-RPC error: "Blockchain is not synced" #random test #random test back #dev these papers are interesting: https://scholar.harvard.edu/files/mickens/files/atlantis.pdf #dev https://mickens.seas.harvard.edu/files/mickens/files/veil.pdf #random anon: i think testnet will soon be reset since we're upgrading rn #random Ɛ>: where in the vid? bs #random what reset #random tell me #random im on v0.4.1 #random use master for the testnet #random should i checkout master and build hanje-san #random ok i didnt know #random but fyi it's liable to break since the new testnet is coming soon #random hanje-san is darkirc fucntional #random see also contrib/localnet/ #random it should be, we're testing it rn #random "tcp+tls://dasman.xyz:5262", #random "tcp+tls://ohsnap.oops.wtf:31337", #random "tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25552" #random seed nodes for darkirc #random hanje-san is the new testnet based on pos too #random allowed_transports = ["tcp+tls", "tor"] #random i heard pow #random no PoW #random yep its pow now #random thats nice #random so the monday meeting is held where? ircd or darkirc ? #random i guess ircd #random or both #random ircd for now #random Monday 16:00 CET #random in #dev #math hi fatback #random so does the docs explain the master testnet #random thanks #random not yet lol #dev gm #random stupid me too* excited #random thanks for the seeds of darkirc #random i made some bug fixes, those seeds need to update #random so do all the darkirc nodes (to latest master) #random i can provide an update to date seed in a min #random i see master testnet uses randomx. so pow for cpus specifically . isnt it . pardon my little knowlege. #random indeed #dev hanje-san: why is this a debug statement? that should be an error right https://codeberg.org/darkrenaissance/darkfi/src/commit/acb3aeb3b98ed21bce4503935dc7cb5c329ca8f9/src/net/message_subscriber.rs#L203 #dev Title: darkfi/src/net/message_subscriber.rs at acb3aeb3b98ed21bce4503935dc7cb5c329ca8f9 - darkrenaissance/darkfi - Codeberg.org #random hey draoi: which toolchain should i use to build master cause nightly-2024-02-01 giving me https://0x0.st/Xrvw.txt #random should be latest nightly #random fyi try these seeds: seeds = ["tcp+tls://anon-fore.st:5262", "tcp+tls://xeno.tools:5262"] #random peers = ["tcp+tls://anon-fore.st:26661", "tcp+tls://xeno.tools:26661"] #random brb #random b #dev draoi: because a node could send you faulty data that doesn't decode... it's not something wrong with the user's setup, nor with our code. #dev it could be a warning but sometimes people get spooked by those #dev ok true #dev loopr: as i said already please look at darkfi serial, Encodable and Decodable types #dev it would be helpful if you copy messages to a text file, and anything you don't understand ask rather than i have to repeat myself everyday #dev dasman: yes plz update #dev can't promise there won't be further updates due to bug fixes but it's mostly done, now just testing phase #dev i posted some up-to-date peers + seeds in #random if you need for bootstrapping #dev also hanje-san, if you wanted to review etc, that would probs be now #dev i have to finish the DAO first, it's delayed #dev cool take ur time #dev no stress #dev then i'll happily do that #dev ty #dev i now have 3 fixes for the dao and they're all kinda shitty #memes kek #dev codeberg tor is not working for me #dev Not working how? #dev Sometimes pushing hangs #dev yeah just hanging for ages. my tor is fine but i restarted it 3 times #dev It's codeberg not Tor #dev Happens with clearnet too #dev yep #dev https://agorism.dev/uploads/dao.md #dev can you look at this? #dev Just leave it or try again in a bit #dev ACTION clickety-clicks #dev i am tryin to push rn also #dev hanging #dev Yeah the third one is why I wanted to implement arrays in zkas #dev So you could have multiple spend hooks #dev I don't know what the correct solution is #dev i think #2 is the simplest, but also #1 is fine if you prefer #dev >Spent coins spent after the vote are proposed will still be able to vote. #dev This sounds bad #dev it's alright, new coins cannot vote #dev : @draoi pushed 1 commit to master: 0c23ba0947: manual_session: fix bug which caused peers to get stuck in Connect state... #dev It means that I can dump my gov tokens and still vote with them #dev yep but after all current proposals expire, you cannot vote #random oof done compiling... had to edit build files... #random can u recompile latest master lol #random just pushed a fix #dev That's not the point #dev It opens a path to hate-voting #dev what's the difference with voting then dumping? vs dumping then voting? #random srry it was not a toolchain issue... my poor skills ... #dev In the latter case there is a price change on a market #random okay let me see #dev There's no difference really in the way you put it though #dev But there's subtle game theory stuff #dev yeah but it's not catastrophic imho #dev Can't think of any bad scenario #dev Doesn't mean there isn't one :) #dev But sure #dev ;)) #dev lol #random i know no rust... C i know... so i got this compiler warning https://paste.debian.net/plain/1311468 #random idk \../ what that means whoops #random they are OK #random just warnings, you can ignore #random what did you run to get that tho? #random for darkirc you just need `make BINS=darkirc` #random draoi: i compiled statically #random ah so you comitted the latest fix. i guess its for darkirc #random ohh #random yes well specifically p2p net fixes which darkirc runs on #random ah okay #random if it was in shell or C/C++ i would have figured out myself but man rust is ... #random nvm i need to dig into it #random my rusty brain #random :) #random you will learn fast if you're a C/ C++ dev #random later now i wanna play with darkfi #random draoi: can you send me your darkfid_config.toml #random sec #random redis now becoming "source available" rather than opensauce #random i want to participate in block production. what should i set apart from miner=true. okay there are mainnet,testnet and localnet. and the deafault seeds are seeds = ["tcp+tls://lilith0.dark.fi:8342", "tcp+tls://lilith1.dark.fi:8342"] #random https://xeno.tools/uploads/darkirc-example.toml #random thnx #random oh sorry i misread #random u want darkfid but this is darkirc #random yea #random for darkfid u gotta talk to upgrayedd who is working on new testnet #random ok #random it's not finished or released yet, afaik he's just running locally #random there are 2 seeds given for mainnet though #random in darkfid i mean #random idk sorry, upgrayedd knows #random alrighty np #random https://news.northeastern.edu/2024/03/20/parrots-playing-tablet-games/ #random Title: Parrots Love Tablet Games. How Do They Play Them? #random > Last year, the team showed a group of parrots how to video call one another, finding that the birds both overwhelmingly enjoyed the activity and could make the calls themselves, when given the option. #random lmao wtf #random cute #random https://www.phoronix.com/news/Red-Hat-Nova-Rust-Abstractions #random Title: Red Hat's Long, Rust'ed Road Ahead For Nova As Nouveau Driver Successor - Phoronix #random birds seem like highly social beings #random they are constantly communicating #random imagine a parrot-phone and he rings his buddy, and they're both squawking at each other over a video call #random :D #random birds are cool #random I'm trying to feed the crows around my house #random amazing #random i heard crows spread rumors and will tell their friends that you are a crow-ally and word will spread #random Yes lol #random anon: there is no live testnet for current master, you can only test stuff locally for now #markets loading the security FUD for blackrock to buy lower to prepare for their ETF #markets https://www.bbc.com/news/uk-england-london-68620253 #markets Title: Woman found with £2bn in Bitcoin convicted of money laundering arrangement offence #dev : @draoi pushed 1 commit to master: 6ba22f7a85: manual_session: avoid risky op when all attempts to manual connect fail... #random hey upgrayedd ok. i have some questions i need to ask you. later. gtg someplace #random glhf #random [ #random thanks #random ;) #dev so I got a result: going from commit d160e9616 Mar 16 down in history, commit 532d67e97__2024-02-29 was the first I was able to test and build on arm64v8; the problem was mostly the harness test tests::sync_blocks failed #random test #random test back #dev root: that test should be fixed after 41c9bd28ba68beeb2efffdd75c5ea76ca4ef6b95 #dev afk #random anyone here? #random servt3: yeap #random We think most of the EU will start seeing very large scale mainstream adoption after MICA. #random It’s going to be draconian: KYCAMLCTF everywhere. Massive cultural shift in crypto. #random It’s going to be the beginning of mass adoption by real businesses #random This is from Vinay Gupta from Mattereum #random I highly respect him, he has shown quite some vision and outlook, and he still considers himself despite the above messaging as an anarchist #random However these views are peculiar indeed #random He believes his Mattereum will lead the way in this KYC everywhere world through linking crypto to real assets #dev : @skoupidi pushed 2 commits to master: 269cffbd1c: validator: purge unreferenced trees from sled when reseting forks #dev : @skoupidi pushed 2 commits to master: 23d49cd158: validator: use sled-overlay add diff functionality to rebuild forks #random crypto backed by real assets ? #random doesnt look good #random not backed by real assets, but a legal framework to be able to tokenize basically anything, to enable fractional ownership of anything - real estate, gold bars, artwork... #random how to fix my bug? #random which means a user can buy a house (or real estate fraction) with crypto anywhere in the world without involving fiat #random the price is KYC... #memes fyi agorism.dev letsencrypt expires today #random servt3: what bug? #memes oops wanted to go to #dev #dev fyi agorism.dev letsencrypt expires today #random ./drk: error while loading shared libraries: libout123.so.0: cannot open shared object file: No such file or directory #random servt3: did you install libasound2-dev? #random yup #random still not working #random what distro are you using? #random can you also install libout123-0 just in case #random thx green upgrayedd #random it's working now :) #random there's this conspiracy theory #random I think that all of the people here are bots #random made by Amir #random also the pics of Darkfi people #random and we can't know if these people really exist #random or Amir even real #random https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2Fpmb3863oeix61.jpg #random Title: Blocked #random now i got it yeah #random i was anon #random hold on dfa <=> nfa ;) #random i hate SQL. #random $ ./drk airdrop 1 #random Error: Failed to request airdrop #random Caused by: test #random test back #random airdrop pls #random servt3: are you on v0.4.1 or master #random did you sync the blockchain #random don't bother with current testnet, its getting nuked soon(TM) #random i had issues today with 0.4.1 and was adviced to go to master. #random dfa: there is no testnet network for master #random what's the difference between 0.4.1 and master #random the "advice" was for darkirc, not darkfid #random hey upgrayedd i was the anon guy today #random servt3: like a year of development #random 0.4.1 #random dfa: hey, welcome #random maybe i dont have access to the logs since im away from the computer. im not from europe though so i had no idea of mattereum. #random upgrayedd yes #random yup blockchain synced #random hmm agorism.dev is that your site upgrayedd #random oh got it it has books linked to the wiki #random servt3 is it working #random im curious though cause mine didnt. as it is said the testnet will be nuked soon #random and the master has no testnet. only local testnet deployment if you want to see #random do you know why it needs libasound2-dev. cause of the ping.mp3 #random nope. absolutely no idea. #random https://pastebin.com/mvvbU4z7 #random Title: git checkout mastererror: Your local changes to the following files would be o - Pastebin.com #random servt3 that doesnt open in my browser. can you use something simple like http://0x0.st or https://paste.debian.net/ #random Title: Debian Pastezone #random srry though my system is such #random https://paste.debian.net/1311534/ #random Title: debian Pastezone #random servt3: (git stash) and then (git checkout) #random did you edit Cargo.lock and doc/book.toml ? #random https://paste.debian.net/1311535/ #random Title: debian Pastezone #random yea those are same errors i got and as they said dont bother with current testnet #random they are moving to new testnet soon ... #random pardon me my english sucks. #random okie #random will wait for new testnet #random hey lets deploy one ourseleves *joking* #memes flash of the devil pic #memes spider #memes jesus? #philosophy My eyes #philosophy can't see #philosophy in the dark #philosophy wear sunglasses, it helps #philosophy Nor does the light would takes me #dev : @skoupidi pushed 1 commit to master: c15facda1c: validator: fixed not saving PoW module updates to db #random test #random test back #dev draoi: panics -> https://bpa.st/4KUA #dev Title: View paste 4KUA #random test #random test back #random test #random test back #dev dasman: can you send the full log? #dev it looks like your node tried to connect to a peer that it was already connected to, which is forbidden #dev it indicates a bug somewhere else in the program as that should never happen #dev but it's really hard to tell w/o logs, i haven't had this on my side #dev gm #random test #random test back #dev for evaluating the cost of a ZkCircuit, configure(meta) is unreachable!(), instead we have configure_with_params(meta, _params), but CircuitCost uses configure(meta). Can I rename configure_with_params() to configure(), and make configure_with_params() delegate to configure()? #dev let cost: CircuitCost = CircuitCost::measure(zkbin.k, &circuit); #dev wtf why are all the fields of ConstraintSystem pub(crate). that's so goddamn annoying i cannot access the debug info #dev since we're maintaining patched halo2_proofs, can we also make those fields accessible? #dev gm #dev hanje-san: No please leave it as is #dev We're following upstream #dev Changing such method names breaks a lot of things #dev https://fs.blog/chestertons-fence/ #dev Title: Attention Required! | Cloudflare #dev https://github.com/darkrenaissance/darkfi/blob/master/src/zk/vm.rs#L311 #dev type Params = (); #dev ^ If you do this, it'll call configure() #dev brawndo: the thing is that CircuitCost is calling configure #dev i'm not proposing to rename configure_with_params(), just simply to make configure() implemented #dev > Can I rename configure_with_params() to configure() #dev you forgot the second part #dev I'll just fix it in the halo2_proofs #dev thread 'zkvm_smt' panicked at src/zk/vm.rs:324:9: #dev internal error: entered unreachable code #dev i get this because CircuitCost is calling configure() (rather than configure_with_params()), but we don't actually use the params in configure_with_params() #dev could we change the visibility of the fields in ConstraintSystem? right now they are all pub(crate), and it's what's used by CircuitCost and CircuitLayout. But the images from CircuitLayout are really hard to see. I tried making it SVG and making the text tiny / super high res images, but I'd prefer the raw data rather than the image. #dev lemme check #dev I pushed a fix for CircuitCost, just pull darkfi #dev I'm going to implement the methods rather than exposing them, since usually you use `mut ConstraintSystem` so I don't want to give a way to fuck things up #dev ok gotcha #dev ty #dev btw i made a util method benchmark_wasm_calls(), i added it to src/contract/test-harness/src/lib.rs, is that ok? or should i put it in util.rs? #dev hanje-san: Which fields of ConstraintSystem do you need? #dev Yeah it's ok in test-harness for now #dev everything used by CircuitLayout/CircuitCost so we can properly inspect our circuits. I will add python bindings #dev commit bot is down #dev draoi: you can see github actions, there should be a commit notifier, then check the logs. most likely just it can't reach public IRC instance #dev hanje-san: Pushed #dev https://github.com/parazyd/halo2/commit/23d312ee30307c47388a810c2997a2d19186e24a #dev Title: plonk: Export ConstraintSystem methods for debugging · parazyd/halo2@23d312e · GitHub #dev I suppose this is fine, lmk when you try it #random https://www.tomshardware.com/pc-components/cpus/new-chip-flaw-hits-apple-silicon-and-steals-cryptographic-keys-from-system-cache-gofetch-vulnerability-attacks-apple-m1-m2-m3-processors-cant-be-fixed-in-hardware #random Title: New chip flaw hits Apple Silicon and steals cryptographic keys from system cache — 'GoFetch' vulnerability attacks Apple M1, M2, M3 processors, can't be fixed in hardware | Tom's Hardware #random Apple -_- #dev great will begin poking around next few days #dev Cool #random just like intel #random in dev channel they are speaking alien language. those nerds #random rusty rust. #random i like iphones #random ;) #random there will be microcode updates for those chips in the furure i gues. #random bamboo shoot pork is tasty af. im gonna make those 2day. going to the pork shop. #random man i wish you guys really wrote everything in C not google rust #random apart from stuff like randomx #random ''test'' #random 'test #random test' #random hola test #random test #random test back #random all the crypto halo2 etc is in rust #random so no can do #random u can theoretically write smart contracts for darkfi in C tho #random cos WASM #random but also it's inconsistent to complain about muh google crust while also shilling iphones #random :p excited for bamboo shoot #dev thanks upgrayedd | root: that test should be fixed after 41c9bd28ba68beeb2efffdd75c5ea76ca4ef6b95; started testing commits one by one from the current top, 48 to go #dev root: but why? #dev draoi: https://bpa.st/54ZQ #dev Title: View paste 54ZQ #random dfa: what do you mean by 'google rust'? Rust was developed by the Mozilla foundation #dev i should rm saved hostlist before connecting again right? #dev also, yse commit bot down because of this ^ #dev yes* #random deki you right i was just refering to google funding "rust". nvm me. i respect you devs all of you though. dont misunderstand me my english sucks. i am just not on your levels. ;) #random ah right, that's okay your english sounds fine #random I agree about using C though, but Rust handles all the memory stuff better even though syntax wise it feels a bit confusing at times #random https://dyne.org/software/dynebolic/ #random Title: Dyne.org :: Dynebolic :: Free & Live Creative Multimedia #random Dyne4 out #random wow after all this time? #random :D #random 10 yrs #random ACTION have never touched sound production software #random ACTION boots dynabolic to play with #random ACTION is something of a DJ himself #random lol #random test #random test back #dev gm! #dev o/ #dev gm #random https://x.com/willdepue/status/1770269315662840071?s=20 #dev I'm exploring ideas regarding the credentials scheme #dev First, the blockchain in this case would be needed to issue an credential-token, but the verification it is fine to verify it off-chain or it would be needed to be on-chain too ? #dev Second, I suppose that normally in Dark-fi the sender need to know the receiver address. But it would be possible right now.. I don't know let say that a party A locks a credential-token in a sm with a commitment of a secret attached, then A send to B the secret so that B can claim the token without A linking its address? #dev given that B knows the secret needed to claim the token #dev the secret is shared off-chain #dev the second is a more general question really (for any token, not credentials) #dev https://darkrenaissance.github.io/darkfi/arch/anonymous_assets.html #dev Title: Anonymous assets - The DarkFi Book #dev https://darkrenaissance.github.io/darkfi/zkas/examples/voting.html #dev Title: Anonymous voting - The DarkFi Book #dev https://darkrenaissance.github.io/darkfi/zkas/examples/sapling.html #dev Title: Anonymous payments - The DarkFi Book #dev https://darkrenaissance.github.io/darkfi/spec/contract/money/scheme.html #dev Title: Scheme - The DarkFi Book #dev there is a contract or issuer of the credentials #dev therefore there is a set of all issued credentials #dev to delete credentials, a nullifier is created #dev : @draoi pushed 2 commits to master: 0329e2b296: settings: delete deprecated quarantine setting #dev : @draoi pushed 2 commits to master: c2941c4726: error: more descriptive error handling for state transitions #dev to prove a credential is valid, i prove i have a credential in the set of all issued credentials #dev : @parazyd pushed 1 commit to master: 68214cde3e: chore: cargo update #dev if you want the ability to delete credentials then use the SMT (recently added) #dev to authenticate with a service, you attach a proof about the credential (which commits to several attributes) #dev maybe try to find a concrete example if this is too abstract #dev : @parazyd pushed 1 commit to master: 3192390fa3: chore: Update halo2 repo ref #dev Ideally that set is represented with a incremental merkle tree right? #dev : @zero pushed 2 commits to master: 70cce66740: doc: dao notes #dev : @zero pushed 2 commits to master: 05ea80bd99: wasm tests: add option to generate a CSV of benchmarks #dev ash: correct #dev the best thing to do is understand how the money::transfer() works, and then how you would use the same inc merkle tree + nullifiers to do voting #dev draoi: I set peers = [...] manually, and redelivered the missed commits :) #dev and then once you understand voting, you understand fundamentally how zk contracts work essentially because now you have sets you can add things to and remove from #dev the pinc stuff still happening #dev panic* #dev Good. What I have seen is that credentials are issued by signtures on documents. But I'm confused, in this case the proof of membership (I am a valid leaf of the tree) replace the need of the signatures right or not? #dev Trying to figure out the crypto primitives needed :S #random I use linux for "pro" (very much hobbyist) audio production since years, although I use paid software for that (bitwig and u-he soft synths) #random checkout https://holoniverse.bandcamp.com, or some older stuff at https://www.jamendo.com/artist/349194/holoniverse #random I used dyne for some time though too, so I will check it out, thanks brawndo for reporting #random : Test #random Test back #random holoniverse you should check this https://www.youtube.com/watch?v=pVixw9XeOhU you'll prob like it #random Title: eureka! - Tennis Girl (1999) [FULL ALBUM] - YouTube #random : hey #random test #random test back #dev hi there #dev hey loopr #dev Hi #dev brawndo btw you have my pub key? #dev ash: correct #philosophy https://youtu.be/m8VORE95D7s?t=1222 #philosophy Title: Can We Clone the Tasmanian Tiger? ~ with Professor Andrew Pask - YouTube #philosophy see 20:22, says we will have mammoths in a decade #random pangea: I do indeed very much so #dev good (y) #dev thank you #dev Now I have more clarity. My idea of the tutorial is to take as an example a contributor credentials. Where one of the attributesis the level of permission of the project: (1) Core contributor (full w/r); contributor (partial w/r); auditor (only read access). #dev Either you reveal it or make a proof about it #dev When it is ready I will send the document that I'm currently working #dev loopr: I don't think I do #dev This is my pubkey: 6NpTuikk64ejox5h7TyRJG7F3x1ea3tYWs7KwMvFw1HE #philosophy What are we gonna do with mammoths? #philosophy brawndo: ride them towards sunshine what else? #dev brawndo: mine: 4rzHWemAB35pLjGZeKeCdGYKRa3ZG5QNRGcrJecwjgU3 #philosophy eat them #philosophy brawndo: wolly mammoth herds in siberia would be pretty awesome #dev Mine: 3Jf8aEHStM3HKN1U2LRprpdiWL4hqSFkui8r38a922vZ #dev loopr: Can I text you to test private mssaging? #dev ash: sure, give me a sec to restart ircd with your pubkey #dev thanks! #random loopr: Did you receive my msg? #random test #random test back #philosophy heh #philosophy https://www.naturalhandyman.com/iip/infpai/shellac.html #philosophy Title: The Story of Shellac #philosophy > mfw when ancient india had thermoplastics #philosophy https://www.youtube.com/watch?v=iEkKwOWZS_E #philosophy Title: Why Melted Bugs On Candy And Lemons Fuel A $167 Million Industry | Big Business | Business Insider - YouTube #random https://difftastic.wilfred.me.uk/ #random Title: Difftastic, a structural diff #random export GIT_EXTERNAL_DIFF=difft #random git show HEAD --ext-diff #dev : @skoupidi pushed 1 commit to master: b70ade1922: validator: permanently store ranks as blockchain expands #dev : @skoupidi pushed 1 commit to master: 7edbac5c65: darkfid/tests: minor fix #dev dasman: can you confirm on which commit hash the panic happened? #dev draoi: 05ea80bd9944660105773ea050e255dca24e6160 #dev it only happens when I'm connecting to my own seed #dev ty #dev no problem at all #dev also can't recreate it locally #dev gm #dev hey #random this eink almost-smartphone has been making the rounds on twitter lately: https://shop.boox.com/collections/all/products/palma #random Title: BOOX Palma | Unleash the Power of Mobile ePaper – The Official BOOX Store #random runs android 11, but yo ucan't make any calls, so have to rely on wifi #random gotta admit, if it came with a simcard tray, I'd buy one #dev hi #dev ash: you can add me? #dev [contact."narodnik"] #dev contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #dev gm #dev : @draoi pushed 1 commit to master: 1d6f1175be: net: fix bug that was causing duplicate connections to seed nodes... #dev It's getting better :3 #dev wew #dev fixed fyi dasman ty for reporting #dev : @draoi pushed 1 commit to master: b5764d2c9f: store: remove redundant Result<()> type on register_channel() #random I like the idea if it doesnt have any mobile antenna, dont see any mention of it #dev : @skoupidi pushed 3 commits to master: 5cac7b404d: sdk: chore clippy and typo #dev : @skoupidi pushed 3 commits to master: 74ed38a7e6: blockchain/contract_store: added auxilliary fn get_all() to WasmStore and ContractStateStore #dev : @skoupidi pushed 3 commits to master: f46c3f7a68: script/research/blockchain-explorer: updated to latest darkfi structures #random https://blog.koehntopp.info/2024/02/13/the-matrix-trashfire.html #random Title: The Matrix Trashfire | Die wunderbare Welt von Isotopp #random lmao #random test #random test back #dev draoi: awesomely awesome! yw \o/ #dev : @skoupidi pushed 1 commit to master: 8871f0898d: validator: eat ze bugs #random test #random test back #dev https://github.com/informalsystems/quint #dev Title: GitHub - informalsystems/quint: An executable specification language with delightful tooling based on the temporal logic of actions (TLA) #dev we can use this to spec p2p #dev and check it for correctness #dev note to self: we have 2 "smart contracts" pages under arch on docs #random https://cointelegraph.com/news/eu-enacts-ban-on-anonymous-crypto-transactions-via-self-custody-wallets #random Title: Just a moment... #random if you're in the EU, pivot to leaving #random test #random test back #random wild #random test #random test back #random hey guys #random i want to ask how to proceed in this scenario: there is a login portal using jquery and it is http, no tls #random i want to bypass the login and get access #random if anyone wanna help me via private message lets exchange keys #dev brawndo: snapshot voting is common in eth: https://ethereum.stackexchange.com/a/127346 #dev Title: For decentralized governance on Ethereum, why is Snapshot considered "off-chain" but Tally considered "on-chain"? - Ethereum Stack Exchange #dev further votes can be announced ahead of time so people have opportunity to buy in #dev (we could later add a delay feature if needed - cosmos gov module has this) #random i will pay in xmr #random what's the url? #random lol #dev : @zero pushed 1 commit to master: 74b7d2f7b8: py: Proof.create() return None when failing rather than use .unwrap() #dev : gm #dev : someone is helping us test lol https://xeno.tools/uploads/testing.png #dev : @zero pushed 1 commit to master: 48d23df367: create zkrender tool to plot circuit layouts #dev : @zero pushed 1 commit to master: baa0146834: tests: add zk benchmark #philosophy https://alexanarcho.live/podcast/cypher-6 #philosophy Title: Lunarpunk w/ Rachel Rose O'Leary - AlexAnarcho #dev : @zero pushed 1 commit to master: ae0e8f6ff3: doc: add desktop zk benchmarks #dev : @zero pushed 1 commit to master: 544a7b7a21: doc: add laptop zk benchmark #random find someone connecting and snoop their traffic #dev : @zero pushed 1 commit to master: 783aea03b2: doc: add graph of zk benchmarks #philosophy https://languagelog.ldc.upenn.edu/nll/?p=63123 #philosophy Title: Language Log » Scythians between Russia and Ukraine #philosophy lol https://edition.cnn.com/2024/03/22/style/china-reaction-netflix-show-3-body-problem-intl-hnk/index.html #philosophy Title: Netflix blockbuster ‘3 Body Problem’ divides opinion and sparks nationalist anger in China | CNN #random https://www.msn.com/en-us/news/world/julian-assange-justice-department-exploring-guilty-plea-to-end-14-year-legal-drama/ar-BB1kePzH #random Title: MSN #random 3 body problem takes me back to my physics days. rip feynmann #random oops wrong channel nvm. #random am i from china. maybe #random netflix garbage #random it is #random the chinese adaptation was really good #random the book > chinese adaptation > netflix adaptation #random order of preference #dev haume: Sounds good #random they forgot the 2>&1 part thats why #random : test #dev : @zero pushed 1 commit to master: 99d5e54883: test-harness: change wasm benchmark to use microsecs instead of millisecs #random test back #dev : draoi: I doubt it's someone #dev : probably a bug storing outbound addresses? #random : echo #random echo back #random : ty #dev : hi #dev : is ircd fully dead? #dev : HCF: hi #dev : no #dev : ircd is still the main thing, but darkirc (this chat) is under development and test #dev : ++ thanks #dev : so I should build and run ircd from the release commit? #dev : np #dev : yes tag v0.4.1 #random test #random test back #philosophy test #philosophy test back #philosophy oh wow #philosophy it works #philosophy hey #random test #random test back #dev gm #dev so there is not a single commit that would pass the build and test on my ARM (rk3588) going from Mar 22 down to Feb 29 #dev but the funny thing is, between working and non-working git diff 532d67e9..bc1f903d, there is only python bin/deg and readme and toml cfg added #dev .. I feel lost :D #dev : check the ports dasman #dev : it's the same node accessing from many ports #dev : we had similar attacks/ testors before #dev : the good news is they were filtered out by the refinery #dev hi #dev o/ #dev o/ #dev !list #dev No topics #dev haumea: The benchmarks are likely incorrect since you're just increasing k but keeping the same circuit #dev : hi o/ #dev yeah i'll look into that too, there's a difference but i'm not sure how big it is #dev : testoor might be me? I am using my configs from a while back so maybe I'm connecting to the infra in the wrong way #dev : hey greptile #dev : config should be the same i think #dev : yeah it's working fine #dev : I signed in yday and you made a similar comment about the presence of a testor #dev : could be a big coincidence but I wonder if my machine is doing something odd #dev : it's as if there's a loop and someone is spinning up Connectors on different ports #dev : but seems i cannot connect to the addresses #dev : hm I'm running ircd and darkirc but I'd be surprised if that was the result #dev : when you say 'Connector' is that a component in darkfi code somewhere? #dev : btw set this in the config: hostlist = "~/.local/darkfi/darkirc/hostlist.tsv" #dev : or similar path #dev : thanks I'll take a look. #dev : Connector is basically the underlying thing behind outbound session. outbound connections creator Connectors and inbound sessions create Acceptors #dev : I let the bins regenerate my configs but I re-added manual peers and my contact list #dev : the automatic path for hostlist is null which means it gets deleted on stop #dev : ah I see #dev : but if you have a hostlist you should reconnect more seamlessly #dev : do I need to add to it manually or should the IRCs populate it? #dev : you need to specify the path but then yes it will be written to by the node #dev : the refinery is really cool. I haven't read that part of the code before #dev : that's new :) #dev : based on monero p2p #dev : it's called "greylist housekeeping" in monero #dev : ah makes sense, I remember seeing similar logging when I played with monero #dev : imo this is probably an attacker doing a 'port scan' of darkfi nodes #dev : it's really common, happens in normal web land all the time #dev : interesting #dev : most of the time people use a tool called `nmap` and it's not flexible enough to be able to trick the refinery #dev : it does create a lot of extra work for the node especially as there are more hostile addrs than safe ones rn #dev : but good that it's coping somewhat #dev : that's probably going to be true forever :) nmap takes just a second to launch and network requests are basically free #dev : do we have benchmarking on where the 'extra work' is taking place? there might be a way to more aggressively drop nodes #dev : and/or limit the number of attempts we try to ping them, because that could cause extra effort #dev : I've only skimmed that part of the code so maybe these mechanisms already exist #dev : the refinery just pings a node once and then deletes it if it's inactive #dev : but when we receive info from another node it could be re-added to our greylist and go through the refinery again #dev : ah ok #dev : this is intentional since we don't want to start banning nodes that have patchy connections #dev : however rn we have v little protection from attackers #dev : there's a method called 'blacklist' that we basically never use #philosophy https://www.dlnews.com/articles/regulation/tornado-cash-developer-alexey-pertsev-on-trial-this-week/ #philosophy Title: Why the $1.2 bn trial of Tornado Cash dev Alexey Pertsev will decide the future of crypto privacy – DL News #dev draoi: can't the refinery do something like "grouping" based on peers addr? I mean if all these "peers" use same addr but diff ports, you can easily identify them #philosophy crossing fingers for Pertsev #dev : maybe nodes that are trying to connect with the same ip but over many ports can be considered hostile, idk really #dev draoi: just remember that you need to account for some ports, as connections can be both ways #dev aka inbound and outbound #dev : another metric might be if they try to connect using ports that are always wrong or with protocols that are obviously wrong #dev : do different node services have expected ports? e.g. something like "we always expect RPC requests to happen on port XXXX"? #dev : if so it is possible to create a list of known-good ports and maybe consider connections to other ports to be suspicious #dev : diff services have default ports but the ports are configurable #dev : but i suppose we could restrict that #dev : or the known-good list could read from wherever that's configured #dev : it could be dynamic #dev : like when the node spins up it could make a list saying "these are the ports from which I am expecting connections" #dev : ah i see what you're saying #dev : so the nodes are restricting to the port configured in their node #dev : *restricted #dev : yes though 'restricted' might be a bit over precise #dev : connecting on ports other than 'known good' ones could be suspcious but not like an instant ban if that makes sense #dev : actually let me explain my whole thought process. the context might be helpful. I'll be brief #dev : - Assumption: someone is doing an nmap scan #dev : ++ #dev : nmap takes a range of ports as an argument #dev : ty #dev : so you can sweep the whole range of ports (a u16 so 0-65535 or something like that) #dev : this is inefficient so often times people will use a range of "top ports". these are the most common de facto ports for different servicesx #dev : so: 22 for ssh, 80/443 for HTTP(S), etc. #dev : if we see scan traffic that appears to be probing for "top ports" I think we should consider that very suspcious #dev : there is no valid case where a node should be checking if SSH is exposed, for example #dev : *exposed on another node #dev : ++ #dev : so I guess I'm suggesting to design _against_ that pattern #dev : makes sense #dev : another tactic: Solana nodes allow things to be configurable but only within a range. So you can expose e.g. your RPC port but only within the range of 8000-8020 #dev : connections inside the range can be considered normal and outside the range are suspcious #dev : so we have limit configuration in a sense but still leave plenty of options #dev : https://nmap.org/book/port-scanning.html#most-popular-ports #dev Title: Chapter 4. Port Scanning Overview | Nmap Network Scanning #dev : nice #dev : this makes sense #dev : great :D #dev : i'll reflect on how to implement that, the port range restriction seems v easy to do #dev : ++ #dev : I think it would be pretty effective too #dev : then for the "top ports" i suppose we just disallow them since they're out of range, and maybe reject connections from peers with those ports #dev : yep I think that's safe #dev : a good minimal solution could be to ban anything below 1024 #dev : nice #dev : these represent privileged root-only ports for the most part #dev : also anything that's specific to Microsoft services, mail servers and so on #dev : ++ #dev : I have to step away for a while. I hope to be back for the dev meeting but not 100% sure on that #dev : nw, tysm for your input #dev : :) #dev !topic p2p hardening #dev Added topic: p2p hardening (by draoi) #dev : np happy to discuss more later #dev : bye for now o/ #dev : see you o/ #random test #random test back #random nmap #random test #random test back #random test #random test back #dev hello #dev fyi running ircd on my rpi 3 was crashing the device periodically #dev running it somewhere else now #dev What's the crash? #dev !topic dao update #dev Added topic: dao update (by haumea) #dev gm! #dev hey ash, can you add me in DM? #dev [contact."narodnik"] #dev contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #dev hi o/ #dev sup #dev brawndo: not sure, it would just go away, I assume memory #dev but no traces of oom so ¯\_(ツ)_/¯ #dev I mean the whole pi would suddenly go down #dev hi #dev holla #dev bulla #dev bullish #dev hm weird perhaps you could tail dmesg #dev There's also netconsole in the kernel #dev Hey all #dev !start #dev Meeting started #dev Topics: #dev 1. p2p hardening (by draoi) #dev 2. dao update (by haumea) #dev Current topic: p2p hardening (by draoi) #dev loopr: I'm running ircd on a riscv soc with 1 core and 1gb ram, so I press (x) to Doubt re memory #dev haumea: sure #dev gm #dev hey so you may have seen the convo with greptile earlier, they had some good input on protecting against the nmap attack which we seem to be experiencing on darkirc #dev basically 1. restricting ports to certain ranges, 2. blacklisting peers that use "top ports" (anything below <1024) #dev any short summary? i'm feeling unwell (slight cold again) #dev ^ #dev Why is it an attack? #dev upgrayedd: I see, well didn't want to spend too much time debugging for now, but I might go back to it. thanks for the pointer #dev yeah why is that an attack? #dev I mean, what does it do to the p2p? #dev I stopped my darkirc node for now, couldn't sync dag #dev draoi: I don't think top ports is accessible #dev the "peer" is always hitting our advertised port #dev and then the kernel assigns a new port for the direct stream #dev !topic dag sync #dev Added topic: dag sync (by haumea) #dev so if for example you run a node, I can make 2 connections to you via lets say 1840 port #dev draoi: so what's the attack? #dev first will get some random 18401 and the second 18402 #dev sec, finding the name #dev the only think I see is having multiple connections for same end peer #dev ah yeah #dev port scan attacj #dev hence why I mention "grouping" based on addr earlier #dev attack #dev draoi: Doesn't explain the issue #dev port scan is a system attack #dev so the attacker is scanning for any open ports by #dev checking what ports are open in your advertised ip #dev it has nothing to do with our p2p #dev That's a systems problem, you should run sshguard or fail2ban #dev spinning up nodes on multiple ports like looping from port 6000 -> 7000 #dev the fact that our p2p is having so many same connection ports to same addr, is that they constantly retry to connect to us #dev therefore we store each new "attempt" under a different assigned port #dev by constantly retry to connect I mean the spawn a lot of processes that connect to us, not actual retry #dev why does restricting port ranges protect against port scanning? #dev haumea: its not, probably missunderstanding of the attack #dev bc you reject peers that don't use the ports within the specified range #dev draoi: the peer will always hit your advertised port #dev and then kernel will assign a port for that specific conn #dev yeah that doesn't make sense... #dev ok #dev that's what you store in hostlist #dev so if I constantly connect to you with different processes #dev you will have a list with all the connects you opened with me #dev all same addr/ip, different ports #dev basically, we have nodes with a single IP that seem to be running outbound sessions on multiple ports (we are talking like 50) and clogging up the hostlist #dev why is that happening? #dev draoi: yeah you should handle peers as a group of same addr/ips #dev umm that's totally normal #dev i do not know, greptile said it looked like a port scan attack #dev haumea: I explained why/how that can happen #dev yeah but your explanation makes it sound like a bug #dev Each outbound session will assign a port for a connection #dev I constantly create new processes and connect to you, so your kernel generates a new port for each con #dev s,port,random port, #dev and you end up having multiple records in your hostlist #dev because external_addr is set in the config file #dev that's the addr i sent around the network, not the address assigned when connecting to an inbound #dev external_addr has nothing to do with it #dev only external_addrs should be allowed into the hostlist #dev how are other addrs getting into the hostlist? #dev they're not #dev only external_addrs go in the hostlist #dev the other party can generate a list with N external_addreses #dev therefore sending you all of them #dev so are these node(s) with many external_addrs set and different ports? #dev same external_addr, different ports #dev yes possibly this #dev pretty easy to do #dev Nothing wrong with that either #dev you just spawn a proxy #dev lets say we restrict port range #dev like we do for tor #dev what's to stop me spawning tons of ips? #dev not much you can do against that #dev restrict port range is not the solution lol #dev we established that XD #dev esp since we're designing for tor too #dev yeah it's a weak solution, i'd rather do nothing #dev so normally for external addrs to be broadcasted they must be valid reachable addrs #dev m2 #dev Is there any issue in the current code relevant to this or what are we talking about? :D #dev idk #dev continue? #dev on darkirc there's a flood of nodes with the same addr but different ports *shrug* #dev Well that can happen anytime #dev wait, is there any issue with this? surely the network is able to operate #dev you will eventually filter them out no? #dev They should just be pruned if unreachable after a while #dev if not seems more a flaw of p2p design rather than needing to restrict port ranges #dev since the first failed ping, they should go into greylist and retry later #dev it's creating pressure on the nodes since we have no few healthy nodes on the network so it's 95% these #dev haumea: ++ #dev s/no/so #dev ok well if you want, you can try to vary hosts you pick #dev like i think nym tries to pick geographically distinct ip ranges, but we don't need to go that far #dev just when sampling random addrs, prefer addrs where we aren't connected to that host already #dev normally if the external_addr is unreachable it shouldn't be broadcasted, but these nodes seem unreachable, so maybe it indicates a bug- i will check #dev draoi: I guess the issue is that they are not getting filtered fast enough #dev if they are unreachable, the issue is as follows: recv addrs -> go to greylist -> get filtered out -> recv again -> and so on forever slowing down nodes with garbage #dev so they end up broadcasted since the node might not have actually checked them first #dev catch22 lol #dev since greylist is persistant you can check weither or not you filtered them out in the past #dev upgrayedd: for external addrs node actually pings themselves #dev and directly add them there #dev it's seperate to the refinery #dev greylist is not persistent, greylist forgets nodes that fail the refinery #dev ah yeah we removed the blacklist because of tor and it not being needed #dev but maybe there's a cash for some kind of temp buffer #dev aha ok didn't know that #dev *a case #dev blacklist still exists it's just not being used #dev well you can use sled as a cache in the disk #dev so its persistant #dev no pls #dev however you can still spawn loads of fake external_addrs #dev lol #dev haumea: normally if the external_addr is unreachable it will not be broadcast #dev maybe if a node sends too many unreachable addrs, ban them? #dev because it means their refinery is faulty #dev nodes cannot send unreachable addrs #dev since they ping themselves #dev oh i was talking external addrs #dev yes but if they do #dev then it means they're faulty/misbehaving #dev You can spam whatever addresses to whoever, it's not real #dev rn the network is still working even tho it's 95% these addrs, and it should still be OK even if it's 99% since we have "anchorlist" connections that are stable #dev however it does create pressure/ work on the refinery #dev so with this logic, when you add an addr, you take a weak ptr to the channel. after refining, you then get the channel ptr, and you raise the watermark #dev the watermark is the subsystem handling when connections breach DoS limits, and when breached then gets banned #dev which means if a channel sends N unreachable addrs, it gets closed/banned #dev rn nodes send their greylist #dev that means that you can close/ban the seed tho #dev in protocol addr the algo is like this: send from anchorlist, if there's space, send from whitelist, if there's space, send from greylist (cos we need peers with diff transports) #dev iirc the nodes send a % of whitelisted and % of greylisted #dev we set the limit quite high so it only happens if sending too many unreachable hosts #dev when the network has v few stable nodes and many many sketchy greylist nodes (like now), normal peers are broadcasting unreachable addrs #dev That's not a good solution #dev for a small network, anchorlist and whitelist will be small #dev so majority will be from graylist #dev You just need more efficient pruning #dev ok that also makes sense #dev therefore you will close the seed and never connect #dev if they mostly have unreachable graylisted addresses #dev does this problem disappear with more healthy nodes on the network? #dev it doesn't disappear but it improves #dev Likely #dev I don't think so #dev It depends on the number of your outbound sessions #dev wdym re: pruning brawndo can you elaborate #dev But most cases you'll want up to 20 or so #dev and what part of the network you connect you #dev More connections is just overkill #dev On a healthy network you should easily be able to find 20 peers #dev if you for example you only connect to border nodes you might end up in same situation #dev rn we have maybe 3 or 4 good peers lol #dev ACTION upgrading darkirc node now #dev ty #dev I can run a few too if things are rdy #dev when I am running my ircd I also am such a peer correct? #dev no we are talking about darkirc #dev loopr: we are talking public nodes #dev ah ok sorry #dev the ones who advertise an addr to connect to #dev if you haven't set an external_addr no you are not such a node #dev I can certainly run one or so too, are instructions on the docs page? #dev prob building a darkirc binary from master? #dev brawndo: lemme run a couple final tests then will give you the go ahead to spin up nodes #dev ACK[ #dev ++ #dev fine to move on from this topic, will read over and consider what was discussed #dev loopr: Yeah it's just darkirc from git HAD #dev *HEAD #dev ++ #dev !next #dev Elapsed time: 29.0 min #dev Current topic: dao update (by haumea) #dev i want to run more tests and understand broadly the costs between #1 and #2 #dev #1 and #2? #dev strategy #2 (the SMT) is more expensive but conceptually clearer #dev #1 is what we currently have and is more efficient, but less correct and makes impl wallets tricky #dev !topic consensus updates #dev Added topic: consensus updates (by upgrayedd) #dev i reckon the cost is not that bad so i'm slightly leaning towards SMT currently, but don't want to rush into committing to a bad decision #dev can you elaborate more on pros cons of each? #dev maybe it's wrong since i'm preferring on chain cost to make wallet impl simpler, but it seems worth it #dev and what the potential problems you looking to solve #dev https://darkrenaissance.github.io/darkfi/arch/dao.html#anon-voting-mechanics #dev Title: DAO - The DarkFi Book #dev i started doing benchmarks and improving tooling, https://darkrenaissance.github.io/darkfi/dev/bench.html want to understand the costs for zk proofs better #dev Title: Benchmark - The DarkFi Book #dev Spent coins spent after the vote are proposed will still be able to vote. #dev yes but this is fine, it's common on eth #dev if you also check the current money nullifiers they won't #dev https://ethereum.stackexchange.com/a/127346 #dev Title: For decentralized governance on Ethereum, why is Snapshot considered "off-chain" but Tally considered "on-chain"? - Ethereum Stack Exchange #dev yeah but that has 2 downsides: #dev - links votes across proposals (same nullifier) #dev - wallet needs to move coins simultaneously while keeping track of spent coin (i make a proposal then vote) #dev ain't that also means that I can spent the coins to myself to keep voting with my coins, no? #dev where spent=transfer #dev no because we snapshot the coins state #dev so new coins are unusable (this is the main issue why we're snapshotting) #dev aha hence why you need to spent the coins after vote #dev so they won't get linked #dev gotcha gotcha gotcha #dev yep #dev but with SMT you don't need to spend the coin after voting #dev since the nullifier isn't revealed #dev so it's nicer but more costly #dev our gadget is completely unoptimized so the circuit looks retarded #dev https://agorism.dev/uploads/smt.png #dev well thats when you live in the cutting edge of a space :D #dev so much wasted space #dev we could introduce more columns so less rows are used .etc #dev You're not counting the other chips that will be in that circuit #dev yep exactly #dev More columns means slower verification #dev yeah this requires k=14 but we don't use all the rows #dev mhm #dev i want to explore exactly what those chips are #dev but tbh maybe k=14 is not that bad #dev It's not bad #dev it starts getting terrible when k=16+ #dev We have the scaffolding for circuit optimisation too #dev Just need to come up with a really good algo #dev And that is a bit hard #dev i think it's so weird this stuff is done manually #dev really good algo: collumn empty: chop it XD #dev but i guess early days #dev Early yes #dev yeah i thought about that, if a gadget isn't used then disable the column #dev Also it's intuitive actually #dev but tbh we use most gadgets in nearly all prod circuits #dev But yeah a machine can do it well if you teach it well #dev ideally you could feed it some kind of expressions and it would figure out how to split the columns/rows. there's even a cost model #dev however lookup tables and other quirky things make it harder to reason about #dev You know all the gadgets that are needed and all the opcodes ahead of time #dev yeah i mean even the structure of the gadgets themselves #dev The algo needs to know how to lay it all out in the most optimal table #dev like what gates are used, or the shape of the gadget #dev each rotation is an exponentiation .etc #dev anyway off topic #dev !next #dev Elapsed time: 16.0 min #dev Current topic: dag sync (by haumea) #dev dasman: so there seems to be dag sync issues, tau is not showing tasks, my darkirc isn't relaying .etc #dev where is the tool to see the graph? #dev you have a load of tasks, what's happening? #dev I reckon it's peers issue, dag sync works and worked quite well #dev It's in bin/deg #dev ok nice #dev I've finished two of them, and working on event graph replayed rn #dev Replayer* #dev nice deg looks good #dev ty #dev will try to figure this out with tau #dev I updated my nodes, but darkirc node just crashed #dev maybe tau is too idk #dev so for deg, is it showing the graph? cos i just see a bunch of info but not the actual tree #dev you know like `tig` #random hi hi #random is ben here? #dev no it doesn't show the graph, it's a debugging tool to see the msgs and info about the graph #dev yeah but how do i know the structure of the data that i'm viewing? #dev it's just a list of hashes displayed #dev for example with tau, i have no idea what i'm looking at #random test #random test back #random oh hello ash #dev am i looking at darkfi-dev DAG or some other dag? #dev You also got unreferenced tips and boradcasted ids so you know what's has been broadcasted by you and what's received #dev yeah but how can i see the DAG? #dev i have this issue where i can see nodes connecting to eachother and doing protocol addr/ protocol ping but the event graph is not syncing #dev why would that happen? if the other peer also doesn't have the latest tip? #dev you can't actually veiw the tree using deg #random supp? #random hello #dev I'll make that happen, it actually makes sense #dev right now i have tau which is not properly synced, and i connected deg but it literally just shows this: https://agorism.dev/uploads/screenshot-1711382227.png #dev I went fully like dnet #random i'm following no starch python and not sure if i did them correctly or not #random and I can't find ben #dev it doesn't even need to be a tui, it could be a cli, but it's more important there's a viewable representation of what's happening internally #dev so when we see an error with sync, we can debug exactly which event causes the issue #dev there's no info here #random every single times #dev draoi: you ask for tips and compare them with your local tips and check what's missing, and then ask for missing tips /events #dev So if a peer is "undersynced" you won't sync from it #dev haumea: ++ #dev ok lets move on #dev !next #dev Elapsed time: 12.5 min #dev Current topic: consensus updates (by upgrayedd) #dev o/ #dev hihi greptile #dev o/ #dev hey #dev we missed you #dev <3 likewise #dev so I've been running contrib/localnet/darkfid-five-nodes over the weekend to see how the consensus protocall goes #dev so 5 miners #dev so far sitting at block 1550, no-one got ever out of sync, everyone always diverged to the correct fork #dev memory consuption for the darkfid is like ~3gb and another ~1.5gb for minerd #dev we should update the consensus page (but we're all busy), i got a master's in PoS friend who will happily take a look #dev so future looks bright #dev bright dark #dev obviously they are all local nodes, so some time in the very near future we should test out with real life net conditions #dev sled db size? #dev haumea: what page? #dev arch/consensus #dev brawndo: 32MB #dev ahahahaaha #dev haumea: its already updated to reflect PoW #dev do you mean something else? #dev That's nice #dev sled-1.0 will also have proper zstd compression #dev ACTION just realized (s)he must update the math formulas #dev well its empty blocks, just the coinbase txs #dev looks like some script shooting txs could be useful? re: sled db size #dev Yeah still good for 1.5k blocks #dev well iirc we haven't really setup the block bundaries #dev right now we still use just the 50 txs limit #dev i'm actually surprised how fast wasm is #dev You didn't believe me :p #dev 9 MICROsecs for an empty wasm call #dev 9 micros is literally 0 #dev haumea: last time I checked the consensus formulas they were good #dev unless something changed that I forgot #dev btw I made hella lot optimizations in the way we handle forks #dev moved finalization time from like 10secs to instant #dev oh yeah i tried showing him but didn't see the formula, just saw on the page it says: #dev "To measure that, we compute the squared distance of its height target from MAX_INT" #dev LMAO #dev all thanks to sled-overlay #dev i guess euclid or some other ancient greek wrote that #dev lol #dev >chad greek writes math formulas and leaves no explanations #dev anyway, to wrap up, still a lot of testing to do, especially wrt txs, mallicious attacks to forks, network conditions #dev shit like that #dev brawndo: there's no math formula, it's just text #dev :D #dev haumea: feel free to add all the formal stuff #dev yep will do, it's simple #dev also will be happy for anyone to read and discuss/feedback the consensus logic #dev my gate is always open #dev + anyone that wants to test stuff with me, with remotes nodes etc #dev ash: here? #dev Here #dev you added me? #dev Yes #dev sent you a DM #dev upgrayedd: does a txs load script exist? #dev ash: contact_pubkey = "3Jf8aEHStM3HKN1U2LRprpdiWL4hqSFkui8r38a922vZ" #dev (your key) #dev loopr: well we got some old benchmarks/tests generating random txs #dev but not one to test against a live net, since drk is not ready yet #dev so maybe a rust script could do the job #dev ++ #dev python #dev put some love in the bindings #dev rust/python whatever #dev there are also txpool optimizations I want to do #dev i love the python bindings #dev haumea: Give me a sec #dev since past impl had a lot of naivity #dev so yeah a script would be handy #dev ash: np #dev but these are not deal breakers, as they are more like worst case/full load scenarios #dev I'd be happy to give it a go if that's something we'd like to have #dev tldr: consensus/darkfid/minerd is getting close for proper PoW testing #dev next? #dev re:remote testing, how do you want to do that? #dev spin up some cloud vps or smth? #dev yy, tor nodes, shit like that #random haumea: I'm sure that I added and text you but it doesn't appear, cn you dm again? #dev btw loopr, when you merge upstream, rebase your commits on top, don't merge the branch directly #dev to not fuckup the history/graph #random yes #dev ah #random see me? if not i'll restart #random No #random Me too #random ok #random just in case #dev brb (restarting) #dev I had rebased 1st time, then today was doing again, and saw it wanted me to do the same conflicts again #dev so I resorted to merge... #dev a good workflow: git checkout ; git fetch origin/master; git rebase -i origin/master; git push #dev b #random b #random test #random test back #random test #random test back #dev yeah I started out with that #dev (it's then git push -f ) #dev greptile: git checkout ; git rebase master; git push -f #dev less commands #dev no fetch? #dev I didn't know rebase did a fetch if so #dev You need to fetch/pull first #dev well I assume you pull master locally #dev anyway !next #dev I never pull or merge but that's just me #dev !next #dev Elapsed time: 18.0 min #dev No further topics #dev anyway glhf everyone #dev Thanks everyone #dev thanks all #dev ty #dev o/ #dev ty #dev ty #dev I have some questions if someone will indulge me #dev ty all #dev cause I'm a bit behind on things #dev yes you also have me in DM #dev Go for it #dev yeah haumea I guess point 1: I have my old darkirc/ircd configs but no longer have access to the ggreptile github (or email) just FYI. can sort that out later #dev 2. are we still GH based or is codeberg involved in our workflow now? #dev we use codeberg over tor now #dev <3 amazing #dev https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html #dev Title: Using Tor - The DarkFi Book #dev OK I'll spin up another pubkey maybe someone can add it to codeberg later? otherwise I can do PRs, don't really mind #dev Sure just make an acc on codeberg #dev ++ #random test #random test back #random heyyyy #dev 3. my darkirc logs seem.. off. it tries to connect to a bunch of different ports on a few different hosts. so draoi I may be the "attacker" lol #dev not sure if anyone else is experiencing that. I did a fresh build off of master but maybe my old config has something strange in it? #dev !end #dev Elapsed time: 5.1 min #dev Meeting ended #dev 4. I missed the chat logs for the past couple of hours. lmk if anything came up with the p2p hardening that I can comment on. otherwise, all good #dev greptile: http://agorism.dev/log #dev i also recommend cycling your nick periodically ;) #dev any chance can you send logs greptile? #dev in DM if you prefer #dev ty for the logs #dev definitely planning to cycle the nick, just wanted to say hi again :) #dev welcome, glad to have you back :D #dev contact_pubkey = "GNuVxM7358FSbDqZZw5dhkK2CHdhyxpP9cS2WhYao2uW" #dev ^ if you can send me logs #dev contact_pubkey = "27A7XkNbqkfD3xDFqtPuaShkxs2jY5LicjzzWgZHA3R8" #dev there's another bug that's making CTRL-C hang on stop, trying to reproduce but can't get DAG to sync fml #dev ty #dev yeah I was having ctrl-c issues too #dev ACTION facepalms #dev my bad #dev what's the cmd to like reboot ircd without actually doing it again? #dev it's like send SIGHUP or smth #dev sorry too much of a linux noob to know what I'm doing there #dev I just killed the process with kill -9 #dev we are talking about reloading ircd w/o restarting errorist #dev but i also dno how to do that lol too fancy #dev I just pull my power cord to kill everything #dev :D #dev the only way you can be sure is to unplug and then leave town for a while #dev sell your belongings #dev XD #dev XD #dev rofl #dev just buy a new laptop instead of rebooting #dev i once unplugged and woke up in the machine world #dev haumea: that's deep #dev upgrayedd bull market vibes #dev mfw when unplugging https://c4.wallpaperflare.com/wallpaper/747/746/475/the-thirteenth-floor-abstract-wallpaper-preview.jpg #dev ok biab #dev haumea: did I get any closer? https://codeberg.org/darkrenaissance/darkfi/pulls/250 #dev Title: #250 - WIP: First iteration of task 17, WIF formatting - darkrenaissance/darkfi - Codeberg.org #dev prob not exactly the way you suggested, but maybe you like the blanket impl for Decodable/Encodable (courtesy idea brawndo) #random test #random test back #dev hey will check tmrw, i have a cold rn #dev haumea: sure, get better soon #dev ty #random anyone here? #random always #philosophy https://en.wikipedia.org/wiki/Hanseatic_League #philosophy Title: Hanseatic League - Wikipedia #philosophy "Decisions and actions of the Hanseatic League were the result of a consensus-based procedure. If an issue arose, the league's members were invited to participate in a central meeting, the Tagfahrt, that some argue already happened around 1300" #philosophy yeah quite interesting #dev upgrayedd: for a transaction generation script: 1. any example I can use 2. are there prefunded addresses (and their private keys) accessible in a local net/genesis? #dev or would you rather prioritize smth else regarding network testing stuff #dev loopr: you can generate a genesis mint tx for a wallet like we do in src/contract/money/tests/genesis_mint.rs and then feed that into script/research/gg to generate a genesis block containing that tx #dev that way you can have a wallet with a whatever amount of drk to play with #dev then you feed that genesis block into contrib/localnet/darkfid-* so the node(s) you wanna play with have that tokens minted and you start testing against them #dev upgrayedd: ok I'll see if I can make sense of this info, thanks #dev loopr give me some time #dev for? #dev patience frendo #dev haha null problemo #random test #random test back #dev loopr: you know how pipes work right? #dev yo #dev loopr: check contrib/localnet/darkfid-single-node/README.md to see how to init a new wallet while the node runs #dev then check script/research/gg #dev there you can do shit like: ../../../drk -c ~/darkfi/contrib/localnet/darkfid-single-node/drk.toml --wallet-path ~//darkfi/contrib/localnet/darkfid-single-node/drk/wallet.db wallet --secrets | head -n1 | cargo +nightly run --release -- generate-tx 10.54 > genesis_txs/test && cargo +nightly run --release -- generate > test_genesis_block_localnet #dev to create a new genesis block containing a genesis mint tx for your wallet #dev so you can then move that to bin/darkfid/genesis_block_localnet, rebuild darkfid and restart node after ./clean.sh to have that block as your genesis #dev then feel free to wreak havoc with random txs #dev noice #dev that's cool #dev I guess the anatomy of tx is somewhere in the docs #dev btw you should keep the secret of the wallet, as after .clean it should be lost in the darkfid-single-node folder #dev so you can just import it using --import-secrets #dev gotcha #dev for pipes we use bs58 encoding #dev or base64 #dev tx is bs58 #dev ++ #dev what do you me anatomy? #dev s,me,mean #dev tx structure I assume #dev fields, types etc. #dev the structure of a tx so it is valid #dev exactly HCF #dev sec #dev https://darkrenaissance.github.io/darkfi/dev/darkfi/tx/struct.Transaction.html #dev Title: Transaction in darkfi::tx - Rust #dev thats the actual structure #dev awesoman #dev I don't know why that matters tho XD #dev well if I want to create tx to create some load I need to know how they look like right? #dev oh I would suggest looking at src/contract/test-harness/src/* #dev there you can see how each call of our native contracts gets builded #dev cool will do #dev and drk obviously, the actual wallet, but its work in progress #dev thanks for all the pointers, this should be some fun #dev you will see that drk builds txs the same way as the test-harness #dev so they are mirror-like #dev I suggest you first get familiar with running a node and initializing a wallet(contrib/localnet/darkfid-single-node/README.md) and then start looking at creating actual txs #dev for sure #dev but as of now, all the tools are there to create custom genesis blocks for testing #dev feel free to reach if you want something more specific #dev appreciated #dev one note: I don't care about devex, hence the pipes #dev devex? #dev devs should learn to use the terminal and unix style tools #dev developer experience #dev oh no worry #dev a fancy new term for incepetence #dev of please make the tool use an json api for calling states #dev shit like that #dev you know the drill #dev yo #dev \o/ #dev oh and btw forgot to mention #dev use same addr in the node/miner #dev so you get the free rewards XD #dev but I guess with a custom genesis you can pretty much premint whatever amount you want to play with #dev why is that relevant for testing? to check the rewards are working? #dev its more relevant for forks testing #dev since we want to ensure that correct miners got the rewards #dev okey doke #dev for example minerA is the block producer for ForkA, minerB for ForkB #dev ForkA gets finalized, so minerA gets the reward and not minerB #dev ++ #dev HCF are you still here? #random test #random test back #dev gm #dev hey #markets https://apnews.com/article/binance-cryptocurrency-anjarwalla-custody-a7d94366049736286addbe5db220309a #markets Title: Binance executive detained in Nigeria amid a crypto crackdown has escaped custody | AP News #dev upgrayedd: Yeah I think the tx encoding should be base64 rather than base58 #dev It gets no benefit being base58 #dev b58 for humans, b64 for protocols #dev Yep #markets holy shit, today I wake up and I see a forgotten bag I held on Dogechain is now up 27612.8% in the last 24h, I can sell it for 6 figs #markets this market is insane #markets lmao nice #markets a CEX even listed it lol #markets siick #markets Winners never lose #markets :D #markets man i gotta dig up my old dogecoin bag #markets probably a lost cause tbh #markets some web wallet from 2015 #random test #random test back #random instead of migrating to matrix, why not make a webirc client that stores messages while offline #markets I have 0.2btc on a old bricked android phone #markets I bought the same phone for parts but it's very hard to repair #markets motherboard is dead and the UFS data chip needs to be removed and put onto the new phone, it's called chip off technique #markets data is encrypted but I know the pin, no idea how to recover that, maybe in the future I'll be able to read the cheap and decrypt it but will be hard, or transplant the chip onto the new phone and hope it all works and I can unlock it with the display #markets I'll wait till btc hits 1m and it then might be worth the hassle :D #markets so much lost btc #markets like tears in the rain #markets yeah, it's like 30% of the supply if i'm not mistaken, lost coins #markets crazy #markets i've done my part #random <666> i dont like matrix #markets errorist: i may be able to help. can you dm #markets ... #random https://blog.koehntopp.info/2024/02/13/the-matrix-trashfire.html #random Title: The Matrix Trashfire | Die wunderbare Welt von Isotopp #random <666> matrix is also not really "decentralised" #random yeah fake news, low effort "federated" #random https://www.theverge.com/2024/3/25/24108872/bluesky-ceo-graber-federation-social-media-decoder-interview #random Title: Federation is the future of social media, says Bluesky CEO Jay Graber - The Verge #dev brawndo: oh noice, I will update rest stuff from bs58 to base64 #dev should I also use deserialize_async everywhere possible? #dev i think it's good for network code since it minimizes buffering. you just immediately deserialize from the socket stream #dev altho we use buffers right now, so it's not really used #dev dasman: with eventgraph we need to be able to use a tool to output the tree for debugging so when our eventgraphs are not synced, we can see where they differ #dev ideally we could run a local eventgraph (maybe in python?) where we run the log through the simulator, and then try to feed it the missing events #random collaborative whiteboard https://drawpile.net/ #random Title: Drawpile #dev upgrayedd: Yeah it's good to use it #dev I didn't make DaoParams as base64, but I guess that can be too #dev brawndo: ok will update darkfid and rest tools that use encoded stuff to base64 #dev and deserialize_async #dev Thanks #dev Funnily enough I saw that drk<->darkfid do: #dev 1) drk decoded base58 tx #dev 2) drk encodes tx to base64 and sends to darkfid over RPC #dev :D #dev yeah thats because I try to minimize darkfid external deps so thats what you get :D #dev some building reults, the latest test (and zk bench) have eaten over 40 GB RAM, so I skipped the tests in docker builds #dev images for almalinux fedora ubuntu debian rocky oraclelinux for 2024-03-24_ecb3b833f created for x64 #dev let's see what my ARM is going to say ... #random http://nkn-riddle.netlify.app/drawingboard?hostAddress=79e40f30a4aa8e58e6b880b8231d8dbcc430d9e881c868bfe46d3a72a952ece0 #dev nice work #dev haumea: any idea why bench_zk.rs fails? #dev hey checking #dev it worked for me the other day #dev what error do you get? #dev root: btw you should use --release for zk stuff #dev cargo test bench_zk --release --all-features -- --nocapture #random test #random test back #dev it's working for me #dev upgrayedd: ^ #random test #random test back #dev haumea: perhaps pipeline vm uses not enough mem? #dev checking locally #dev haumea: how long does the test take? #dev I'm on k=16 #dev in general benches shouldn't be included in pipelines but run on demand, so the test should be ignored #dev upgrayedd: ok i will change this to cargo bench #dev the reason i didn't already was because i couldn't find how to do named variants, but i found yesterday benchmark groups .bench_with_input() #dev https://github.com/getsentry/relay/blob/master/relay-cardinality/benches/redis_impl.rs#L137-L165 #dev Title: relay/relay-cardinality/benches/redis_impl.rs at master · getsentry/relay · GitHub #dev so will change to this for k=... #dev will do that later today (quick errand in meatspace) #markets ssd: let's exchange keys #dev noice #markets [contact."errorist"] #markets contact_pubkey = "855RitmfR499dBRGFFZHH33vCBxF77q8D3uX65vSFW52" #dev btw so far I'm seeing >4GB of ram consumption #dev so I'm pretty sure the pipeline can't handle that #dev I don't think it has that much memory #random https://www.aljazeera.com/news/liveblog/2024/3/26/julian-assange-live-news-uk-court-set-to-issue-extradition-ruling Julian Assange extradition ruling #random Title: Julian Assange US extradition ruling live: UK court issues ruling | Julian Assange News | Al Jazeera #random https://yewtu.be/watch?v=e6ztGN3FbU4 LIVE: WikiLeaks statement on Julian Assange extradition #random Title: 429 Too Many Requests #dev can we add this for benchmarks? https://github.com/bheisler/criterion.rs #dev Title: GitHub - bheisler/criterion.rs: Statistics-driven benchmarking library for Rust #dev https://bheisler.github.io/criterion.rs/book/getting_started.html #dev Title: Getting Started - Criterion.rs Documentation #dev then i can create a testing group #random Judges Victoria Sharp and Jeremy Johnson have ruled that Assange will not be extradited immediately. #random The US has been given three weeks to provide additional guarantees, including that Assange will not face the death penalty. #random If the US provides the requested assurances by April 16, a second hearing could be held on May 20 for the court to consider whether to grant an appeal. #dev also it does graphs: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html #dev Title: Plots & Graphs - Criterion.rs Documentation #dev but this is what i need: https://bheisler.github.io/criterion.rs/book/user_guide/benchmarking_with_inputs.html#benchmarking-with-a-range-of-values #dev Title: Benchmarking With Inputs - Criterion.rs Documentation #dev has changed since the last benchmark run #dev where does it store stuff? #dev it doesn't store anything #dev bbl #dev cya #dev How Should I Run Criterion.rs Benchmarks In A CI Pipeline? You probably shouldn't #dev lol #dev glhf #dev only src/contract/dao/ can create a csv file if you uncomment some line of code #dev https://darkrenaissance.github.io/darkfi/dev/bench.html #dev Title: Benchmark - The DarkFi Book #dev ok afk #dev btw k=18 uses >16GB of ram lol #dev dasman: commit bot is down btw #dev haumea: when you are back please check b6c7b5ff3cb44cb2685705d474a12d92dda72434 #dev haumea: Yeah criterion is nice #dev haumea: apart from the deprecation comment, using just the funcid and not a prefix can lead to collisions #dev Oh wow, all nodes are down #dev [WARN] No connections for 81035s. Refinery paused. #dev and keep connecting to the same ip/diff port #dev haumea: don't you mean this: tau SjJ2OA ? #dev : hihi #dev : @skoupidi pushed 2 commits to master: 4d74247c9f: drk: fixed erroneous eprintlns #dev : @skoupidi pushed 2 commits to master: 7e6a9a937b: script/research/gg: GenerateTx added to create genesis mint txs #dev : @draoi pushed 1 commit to master: afde25dd1d: store: don't store whitelist entries in greylist on stop()... #dev : @skoupidi pushed 1 commit to master: 2956207cc5: chore: clippy #dev : @skoupidi pushed 1 commit to master: 4b12c9de4f: chore: clippy #dev : @skoupidi pushed 3 commits to master: 3fc0fb19ed: minerd: use (de)serialize_async #dev b #dev test #dev test back #dev upgrayedd: check darkfi/src/contract/money/proof/token_mint_v1.zk:30 #dev this is how the token_id is calculated now #dev ACTION adding criterion.rs to dev-depends #dev ^ it only impacts benchmarks, the core code remains unchanged. it's a unit test framework #dev brawndo: fyi #dev hanje-san: oh ok so the user info gets into user_data as the poseidon hash of their public key x,y #dev https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change #dev Title: Command-Line Output - Criterion.rs Documentation #dev upgrayedd: for the canonical token_id derivation (including user_data), see darkfi/src/contract/money/proof/auth_token_mint_v1.zk:42 #dev indeed the mint key (x, y) #dev Sounds good #dev still a prefix is needed to avoid collisions no? #dev check native token for example: DARK_TOKEN_ID = TokenId::from(poseidon_hash([*TOKEN_ID_PREFIX, pallas::Base::zero(), pallas::Base::from(42)])); #dev while a normal token is: let token_id = poseidon_hash([func_id, user_data, blind]); #dev you shouldn't get collisions if the blind is properly generated. that's like a prefix (it has a dual use) #dev unless you mean adding a field which says "this is a token_id", we could do that but we aren't doing it anywhere else (it's like type safety for cryptographic commitments) #dev yeah that what the prefix is for, to showcase that this is a token id #dev otherwise since only auth/user knows the blind/user data, can't they generate a token_id thats equal to the native one? #dev therefore have control over native mint #dev they cannot since the DARK_TOKEN_ID cannot be minted. in fact it should just be an invalid pubkey #dev wdym dark_token_id cannot be minted? #dev PoWRewards mints them #dev i mean the derivation should be changed so it's an EC point created by hash to curve #dev so yes it's incorrect since we don't use the derivation for DARK_TOKEN_ID, it's just a constant #dev oh ok so also make the native token follow same mint auth, but using an "invalid" one nobody can use? #dev yep #dev aha #dev I thought I was going crazy lol #dev hash_to_curve("foo") #dev lol no it's good ty #dev :D #dev i just made the change locally... running unit tests and will commit if all good #dev noice #dev : @zero pushed 1 commit to master: f8f446f916: money: change DARK_TOKEN_ID = hash_to_base("DarkFi:DRK_Native_Token") #dev BLOCK_HASH_DOMAIN is unused, should we remove this? #dev : @zero pushed 1 commit to master: afa1856236: tests/bench: delete bench_zk, add zk_arith (uses criterion crate) #dev fix'd #dev btw we can benchmark async functions https://bheisler.github.io/criterion.rs/book/user_guide/benchmarking_async.html #dev Title: Benchmarking async functions - Criterion.rs Documentation #philosophy hello #dev dasman I was able to connect after I increased my outbound connection limit. but yeah the greylist is malfunctioning a bit #dev I think increasing the limit helps with throughput of pruning bad greylist entries #dev but somewhere in the network I think bad greylist entries are being sent back-and-forth through the network and aren't pruned fast enough #dev I spent some hours the past couple of days reading through the design and implementation and trying to think of a solution #dev I think adding a bit of logic to delay retrying on an IP address we've recently tried could be helpful (i.e. don't retry on different ports in a short time window) #dev I'm still pretty much convinced it's outbound connections being stored, because recently a node of mine discovered 167 addresses all I could see was my own ip with different ports #dev What should work best at least for now is to set outbound connections to 0 and connect to peers manually #dev peers = ["tcp+tls://xeno.tools:26661", "tcp+tls://anon-fore.st:26661", "tcp+tls://dasman.xyz:26661"] #dev And comment out seeds #dev ok trying that now #dev it's an attack #dev i don't recommend testing rn #dev i'm working on a fix #dev will push 2m #dev the attack is: anyone can fill their greylist with garbage info and this will get propagated by honest nodes #dev i have a solution, will push asap with documentation in the commit that explains everything #dev s/greylist/hostlist #dev draoi: thanks a lot #dev draoi sounds good #dev lmk if I can help with testing later #random https://twitter.com/ameensol/status/1772655426171023564 #random Ameen Soleimani(@ameensol): this trial is so fucked up the judges ask him “do you think your using the chainalysis sanctions oracle prevented criminal use” Alexey explains “there is nothing anyone could do to prevent users from interacting with the smart contracts” then, in the next question - “why didn’t you consider implementing KYC to prevent criminal use” the judges are being willfully ignorant #random these judges don't understand the tech at all #random test #random test back #dev If I run ircd (it's a daemon), and use weechat as a client, am I adding a routing node to the network or am I just connecting to the network? #dev can other people use my ircd in other words? #dev loopr: not if you set irc_listen to a public ip (or resolvable address) and share it #dev otherwise you're safe #dev ah ok but the listen address is the only item blocking my node from the public corret? #dev so if I wanted to add a _public_ node to the network (I am assuming this helps for stability?) I would just change the irc_listen to a public ip and voila? #dev yeah you usually set it to localhost, so it runs locally on your machine #dev cool thanks dasman #dev and yes, but ircd is pretty much stable plus darkirc should be coming up soon depricating ircd #dev no problemo sir #dev ah ok then I'll wait out darkirc #dev upgrayedd: played around with drk and stuff a bit so far, then wanted to run "drk... ... | cargo +nightly run --release -- generate-tx..." and that errors #dev Error: Io(PermissionDenied) error: a bin target must be available for `cargo run` #dev searched what that meant but dunno what to point it to #dev loopr: the command is supposed to run inside script/research/gg, hence all the ../../ and ~/ paths #dev aaaah ofc, that's what gg stands for #dev gg stands for genesis generator #dev I was running stuff from contrib/localnet/darkfid-single-node/ which has the same 3 levels of indentation... #dev yeah #dev got it now, thanks #dev gg #dev :D #dev :D #dev XD #dev hi #dev building darkirc now to test the new changes #dev that's nifty, so that stuff generates a new genesis block for my very own wallet, no need for pre-minted addresses and stuff #dev I like that #dev well you still need to recompile darkfid, reset/restart the node(s), import wallet again and scan #dev not a perfect solution, but gets the job done when you know what you are doing #dev ya it's actually still generating the block...that takes quite some time #dev well if you never runned cargo run before it needs to compile everything first #dev I ran it first just to see what the generate-tx would do (without value), so that compiled it there already #dev now it's just the actual task and it's also taking pretty long #dev did you ever run make test in repo root to generate vks/pks caches? #dev yeah I'm a bit unclear on how rust/cargo caching works. small changes to a codebase seem to generate a lot of logs that look like rebuilds #dev not just in darkfi #dev also what exactly did you run? #dev yep observed that too #dev like, when I just change something in a unit test, it still recompiles quite a few things #dev > did you ever run make test in repo root to generate vks/pks caches? #dev most probably yes (you might remember you suggested to do so some time back) #dev send the command you executed #dev obfuscating paths if necessary obviously #dev ../../../drk -c ../../../contrib/localnet/darkfid-single-node/drk.toml --wallet-path ../../../contrib/localnet/darkfid-single-node/drk/wallet.db wallet --secrets | head -n1 | cargo +nightly run --release -- generate-tx 900 #dev I got a large string as output #dev but this is not the genesis block? #dev in your instructions you added #dev ... generate-tx 10.54 > genesis_txs/test && cargo +nightly run --release -- generate > test_genesis_block_localnet #dev no thats not the genesis block #dev thats the encoded tx for the genesis mint of your addr #dev aaah ofc #dev that's why the rest #dev > genesis_txs/test this puts it inside the folder the tool uses to gather txs to build the block #dev ++ #dev && cargo +nightly run --release -- generate this generates the block using the txs from that folder #dev (you can use diff folder via arg) #dev understood #dev and > test_genesis_block_localnet outputs the stdin of previous command(the block generation) into a file called test_genesis_block_localnet #dev yep #dev so the full flow is: invoke drk to get wallet secrets -> pipe that to head to grab fist line, aka first wallet -> pipe that to geterate-tx 900, since it grabs the wallet secret to generate the tx from stdin -> store stdoutput to file -> invoke gg to generate block -> store stdoutput to file #dev sorry if the paths become confusing, I'm just lazy and run everything from current folder #dev you can script that very easily, since invoked commands use stdin/stdout if you prefer #dev yeah that's why I wanted to do every step on its own, to understand what it's doing #dev how much is 1000 drk? how much is a tx? how long last 1000 drk? #dev 1) What #dev in localnet #dev they are all the same question really #dev I understood 0/3 #dev If I am generating a new genesis block with 1000 drk for my wallet, how many txs can I do with those 1000 drk? #dev I don't remember if fees are enabled in current darkfid build #dev but in general, a lot #dev Ah ok so no need to generate 1e9, or 1e12 or so #dev nah I don't see the point #dev ++ #dev upgrayedd do you know much about how sled works? #dev HCF: I believe I have a good understanding yeah, why? #dev I'm taking a look at the TODO in src/irc/client.rs about pruning the 'seen' items from IRC #dev I think a good solution is to add a timestamp value alongside the event_id in `fn mark_seen()` #dev and prune when either the length of the tree is long or after a time. but if we do that we probably want to prune older msgs first #dev so I'm just wondering if there's a different/better way to get the time, like if there's a way to retrive a timestamp from sled itself. not seeing anything in docs though #dev first of all I haven't take a lool lately on darkirc code so I don't know exactly what is going on there #dev but anyway since its tied to a dag, pruning can happen on each tree reset #dev no need to bother with sled, other that dropping the keys #dev OK I'll check that it's there. if that's already being done I'll delete the TODO #dev I don't see a remove_seen fn or something so its not there #dev ++ #dev going afk, glhf everyone #dev o/ #dev \/ #random gm #philosophy hi #philosophy what is a fundamentalist in programming? #dev ok,so dockers are built for aarch64 as well, no alpine, though it worked before, udev libs in conflict.. #dev no amazon linux as it's more like rhel7 and it needs some fiddling to get sqlcipher and wabt there #dev re - AI for SW development - it might come as a surprise to some, but it seems not laughable anymore #dev Devin correctly resolves 13.86%* of the issues end-to-end, far exceeding the previous state-of-the-art.. #dev https://www.cognition-labs.com/introducing-devin #dev Title: Introducing Devin, the first AI software engineer #dev https://techcrunch.com/2024/03/20/githubs-latest-ai-tool-that-can-automatically-fix-code-vulnerabilities #dev Title: GitHub's latest AI tool can automatically fix code vulnerabilities | TechCrunch #dev but again, as I said before, I came here to sync efforts, not to argue #dev gm #dev HCF: It just has to be deleted daily #dev HCF: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/darkirc/src/main.rs#L197 #dev Title: darkfi/bin/darkirc/src/main.rs at master - darkrenaissance/darkfi - Codeberg.org #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/event_graph/mod.rs#L124 #dev Title: darkfi/src/event_graph/mod.rs at master - darkrenaissance/darkfi - Codeberg.org #random that root guy lol vscode licker ai sucker #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/event_graph/mod.rs#L162-L174 #dev Title: darkfi/src/event_graph/mod.rs at master - darkrenaissance/darkfi - Codeberg.org #random lol #random what should i talk about in AI panel with logos today #dev It's left as a TODO because I don't have an idea where the pruning should take place in darkirc #dev I was first thinking that perhaps EventGraph should also take a slice of sled::Tree in order to prune them alongside the main graph #dev But that didn't seem good after I implemented it and read it #dev hey #dev o/ #random my concern about AI is that big tech/corporations with money can afford the expensive hardware to run the infrastructure while for a normal person to run his own AI it's basically impossible to afford it right now, this can give big tech an advantage #random there are open source models but if you have slow hardware.. #random also big tech has the advantage of having so much data they collected over the years, that maybe a layman doesn't have access to #random idk i feel like blaming AI is kinda counterproductive #random it's like saying guns are bad because some people use them to commit crime #random obviously AI in the hands of states will just result in Chinese level mass surveillance and control #random there's no escape from it apart from the dismantling of state systems #random i'm curious to listen to the panel but the framing seems a bit defeatist #random yeah i agree it has that vibe #random i mean AI doomer #random was planning to go jocko willink on them like 'good' #random it can only lead to the improvement/ hardening of anon systems #dev : @draoi pushed 1 commit to master: 4bad13e687: net: create `darklist` for unknown transports + share darklist (not greylist)... #dev HCF, dasman: checkout the commit msg #dev have done some small local testing and seems to work fine, gna try it out now in the wild #dev there may still be other bugs etc, like the hanging CTRL-C and potentially what dasman was reporting wrt storing nodes- should be easier to catch tho now #dev ah noting this update does require a hostlist refresh (delete your hostlist before re-running) #dev : gm #dev : network should self-cleanse from all the garbage once a sufficient amount of nodes update #dev i mean it doesn't "require" it, like nothing bad will happen if you don't, but the old hostlist will be useless since the format changed #dev : @zero pushed 4 commits to master: 4c049778bb: sdk/crypto: FieldElemAsStr trait which provides to/from_str() for Fp/Fq #dev : @zero pushed 4 commits to master: a1c48a39c7: zk/debug: add import_witness_json() #dev : @zero pushed 4 commits to master: 4532b8d229: for most .zk proofs, provide a corresponding witness.json file which is usable with zkrunner, benchmarks and other utils (using import_witness_json()). #dev : @zero pushed 4 commits to master: 19016fb521: bench: add generic zk_from_json() which will benchmark most .zk files using witness.json files provided. #dev Fp/Fq already implement Display #dev You just need to strip the 0x #dev yeah i copied that code #dev Also: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/sdk/src/crypto/mod.rs#L80-L124 #dev Title: darkfi/src/sdk/src/crypto/mod.rs at master - darkrenaissance/darkfi - Codeberg.org #dev You don't need the to_str() function #dev Also it's not a str but a String #dev Use the Rust traits #dev There is TryFrom #dev ah great, so .to_string() converts bytes to hex now? #dev Fp::from(1).to_string() gives 0x0000000........1 #dev yeah that's using Display #dev pub trait FieldElemAsStr: PrimeField { #dev fn to_str(&self) -> String { #dev This is unnecessary #dev And wrongly named #dev from_str also should be traited #dev ok thanks #dev TryFrom #dev i don't think that's allowed #dev implementing an external trait for an external type #dev You can wrap it #dev Why do you need the hex stuff btw? #dev see import_witness_json() in zk/debug.rs #dev ah so because of python? #dev actually for benchmarks #dev see bench/zk_from_json.rs #dev aha ok #dev also all the proofs now, have a corresponding witness.json file, see */proof/witness/ #dev Yeah I'd prefer if you prefixed it with 0x tbh #dev so you can easily import them for debugging .etc #dev That will match the pasta crate Display, and it's easy to strip_prefix when doing FromStr #dev ok i can do that, then in from_str() check the first 2 bytes == 0x #dev https://doc.rust-lang.org/std/primitive.str.html#method.strip_prefix #dev Title: str - Rust #dev You'll have an option #dev >If the string does not start with prefix, returns None. #dev nice ty #dev i cannot find how to implement TryFrom on Fp, i think this trait has to stay #dev https://stackoverflow.com/questions/37904628/implement-stdconvertfrom-on-type-from-another-crate #dev Title: rust - Implement std::convert::From on type from another crate - Stack Overflow #dev although that's old #dev You're supposed to wrap it (unfortunately) #dev you mean wrap Fp into Fp2? #dev Yeah so like we have Coin or DaoBulla #dev struct Foo(Fp) #dev Fp2(val).try_into()? like this? seems weird, maybe i can try specify trait FieldElemAsStr : TryFrom<&str> #dev I mean I guess it's fine like this too #dev There's likely a reason they didn't implement this in the pasta crate, but I can't see it #dev most likely just forgot #dev or didn't want to #dev Probably they just want to you deal with encoding the bytes yourself #dev So you have the repr() and you'd have to hex it yourself #dev And then Display being a debug-only thing #dev It is more correct, but annoying #dev loopr: much better now, but this function should be left blank: #dev fn wif_prefix(&self) -> u8; #dev and you must check the prefix is correct when decoding #dev also can you remove verify_checksum()? it should be called by from_wif() on the *decoded* bytes #dev so remove #1 from verify_checksum(), and then call it inside from_wif() #dev also you don't need an individual test for each function, just make a single one testing all of them in sequence #dev also in verify_checksum() this is bad: #dev match bs58::decode(&darkfi_serial::serialize(self)[1..]).into_vec() { #dev it's wrong. i'm not even sure what it means because the comment doesn't match the code #dev seems like you think there Self = String, and then you are serializing the String which adds a prefix byte for the length so you remove that, then deserialize the base58 #dev yet in the rest of the impl, Self is a concrete type so it's inconsistent #dev let wif = WIF::to_wif(&pk); #dev assert_eq!(wif.verify_checksum(), true); #dev no #dev you have: fn from_wif(wif: String) -> Result; #dev so Self is a type T, but then your verify_checksum() assumes Self = String #dev : @zero pushed 1 commit to master: b1ba95b9e0: bench: correct paths and add missing EcNiPoint to import_witness_json() #random js cuckdevs upset library switched from MIT to GPL to stop providing free shit to their proprietary startups: https://github.com/tinymce/tinymce/issues/9453 #random Title: What happened to TinyMCE's license? · Issue #9453 · tinymce/tinymce · GitHub #random lel #dev gm #random wow this is really cool http://legacy.earlham.edu/~peters/nomic.htm #dev I was taking a look at the TODO in the darkirc code that mentions pruning the 'seen' msgs #dev upgrayedd mentioned it would probably be a good idea to prune it whenver the Dag itself is pruned #dev to do that, does it make sense to create a StoppableTask or Subscribed for pruning sled? or is that overkill? #dev basically I'm unclear how to notify that a Dag prune has occurred to then trigger the sled pruning for 'seen' msgs #dev What I was saying, there is already a backround task running that does this #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/event_graph/mod.rs#L480 #dev This one #dev Title: darkfi/src/event_graph/mod.rs at master - darkrenaissance/darkfi - Codeberg.org #dev ok i might have missed your msgs. my set-up doesn't always have ircd running #dev I thought of "solving" the TODO by modifying this function to accept an arbitrary number of sled trees that would also get cleared #dev But not sure if that is a proper solution, it feels like a plug-in #dev yeah I'm unsure too. I like how the event_graph is separate from darkirc right now #dev that's why I was thinking of creating a new Task or Subscriber or something #dev so we don't make a strange exception for this one case #dev Yeah #dev Although it'll be hard to sync them up #dev So perhaps yeah, the eventgraph pruning task can push a notification upon pruning #dev yeah I don't know if they need to be totally synced for this one example #dev And we can subscribe to that #dev If they can it would be prefered #dev Also just triggering it rather than polling seems better #dev yeah for sure. especially if we need this solution more than once #dev by polling you mean Subscribe/notify code? I didn't look into how it's implemented deeply #dev No sorry, by polling I meant another looping prune task #dev I think the darkirc task can just wait for notifications on when to prune the "seen" tree #dev ++ #dev yeah polling seems like not a good approach if we can avoid it #random https://www.phoronix.com/news/SDL-3.0-Wayland-Possible-Revert #random Title: SDL Developers Weigh Reverting Wayland Over X11 For SDL 3.0 - Phoronix #random Reality kicking in #dev idd #dev thanks for the input. I'll go back into the code and see what I can do . it's sort of a nice small way to learn how the StoppableTasks work #dev like I think I understand them conceptually but have not worked much with Futures #dev Thanks a lot :) #random :o #dev So essentially I think you need to add a notification mechanism in the eventgraph prune thing #dev ++ #dev And then anyone should be able to subscribe to it #dev Yeah this is the better solution :) #dev would that be a JsonSubscription or a system::Subscription? #dev The latter #dev ok #random im in #wayland on oftc, and there's people nonstop everyday pushing commits/discussing, and a lot of spinoff projects like #wlroots ... a lot of activity on wayland #dev also I sent an SSH key for codeberg in a priv msg, did you (or someone else) see that and add it? #dev again I probably missed a reply. sorry for that #dev I added the sighup account to the codeberg organisation #dev : @draoi pushed 1 commit to master: 10404a962e: doc: fix various hosts documentation #dev https://codeberg.org/sighup #dev Title: sighup - Codeberg.org #dev perfect #dev draoi darkirc seems better now, not getting the spam like before #dev good #dev there will still be nodes sharing hostile lists before the network has fully updated, but they will no longer be shared by honest nodes #dev (providing they have updated) #dev yeah I guess that will always happen #dev back later o/ #dev o/ #dev me too, gna go lift heavy things #random test #random test back #random test #random test back #random https://www.youtube.com/watch?v=cQoQE_HDG8g #random Title: [Linux.conf.au 2013] - The real story behind Wayland and X - YouTube #random by an X dev #dev cya #random Daniel is a wayland dev #random collabora... #random he says he worked 10 years on X #random They convert foss devs to be open source consultants #random I know him from Maemo days #random woah nice, you are an elite haker ;) #random Dude literally worked on the iphone #random really, wth #random test #random test back #random for the AI logos discussion, i thought the Thiel video from a few years ago at least briefly touches on this topic (AI trends towards centralizing parties, and mentions crypto as decentralizing), there is the Nick Land approach to AI as well (go, go, go) #random AI is also something of an opposite to crypto #random Where crypto is governed by maths and is deterministic, AI is nondeterministic #random a few tools mentioned: lmstudio.ai - run LLMs locally #random cryptotalks.ai - pay for AI access with btc or xmr #random test #random test back #random ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff #random new windows will use AI so people can just write things to be done on the computer #random it's like the comback of the CLI but with a huge serverfarm processing your requests to figure out what you wan #random I'd use that if it could work without surveillance #random . #random NO YOU MUST > READ THE FUCKING 1000 PAGE MANUAL !!!! #random haha #random https://www.youtube.com/watch?v=uXsZz4bwEY #random Title: - YouTube #random damn #random https://www.youtube.com/watch?v=uXsZz4bwEYQ #random Title: Playstation 1 nostalgia ambient atmospheric jungle drum and bass mix - YouTube #dev hanje-san: We're done with the zkvm, will push soon likely #dev draoi: excellent <3 #dev great news, looking forward to it #dev i want to move on from dao soon and finish drk, but also interested to deep dive more into benchmarks/cost analysis #dev : @therealyingtong pushed 2 commits to master: ce35921cab: zk::vm: Refactor range checks to reuse table #dev : @therealyingtong pushed 2 commits to master: b0df9d5f38: chore: Clippy lints #dev hanje-san: ^ Now the sinsemilla lookup table is also reused in the range check chips #dev wonderful news #dev Which also means no need for NUM_WINDOWS const #dev // Domain prefix used for block hashes, with `hash_to_curve`. #dev pub const BLOCK_HASH_DOMAIN: &str = "DarkFi:Block"; #dev btw can we delete this? #dev it's unused #dev : @parazyd pushed 1 commit to master: 19b0325dd9: contract/test-harness: Update PKS and VKS cache hashes #dev That was used for hashing the blockhash into a point #dev In PoS #dev hanje-san: The witness json files get changed when I run tests #dev This is extremely annoying #dev they shouldn't do #dev https://termbin.com/w4at #dev This happened after running `make test` in money just now #dev are you on latest master? #dev ah my bad i forgot to comment those lines... will fix it later #dev Yes as you can see I pushed commits #dev darkfi/src/contract/dao/src/client/exec.rs:117 #dev it should be commented like this #dev i need to regen them anyway since now we want the 0x prefix, then when i commit that i'll comment this #dev ok thanks #dev np #dev if in rust i want to do sth like #ifdef GEN_WITNESS, would i use a feature flag for that? #dev Yes #dev ok nice #dev But we run things with --all-features usually #dev So you might want to do a negation #dev ah yeah ok so not(not_gen_witness) #random SIN: I'd like to dm you. this is my pubkey --> 5J7EBWjYGkp9FnjSxQBz4Ydw7LWDBsLLAF5wDaUJ9ivn could you share yours please? #dev Yeah it keeps the makefiles simple #dev now i finally understood why we use double negation everywhere #dev :D #dev it's so confusing for a peabrain like me, i have to read it out loud 2-3 times #dev https://parazyd.org/pub/dev/random/states-of-a-programmer.png #dev I'll bbl, gonna get some air #dev enjoy #dev rightfully earned a daily bag of sun #dev woah i'm like in a superposition of those two states #dev inside me there are two wolves #random cool! #random https://twitter.com/JuusoAlasuutari/status/1532075892725297153 #random twitter spaces on the desktop with waydroid #random related https://gatgpt.defcad.com/digital-second-amendment #random Title: GatGPT #random beautiful #dev hanje-san: hanje-san │ loopr: much better now, but this function should be left blank: #dev you mean each implementation has its own prefix? #philosophy kanon: whoever writes code in the basement #philosophy servt3: actually #philosophy anyway, I know, my jokes aren't the thing :p #random test #random test back #random test #random test back #random hey theree #random The learn section in the documentation doesn't seem to be redirecting to the correct links, thought I'd let you guys know about it #random Yo? #dev fyi: https://github.com/darkrenaissance/darkfi/pull/256 #dev Title: Fix dev link to dev section by holisticode · Pull Request #256 · darkrenaissance/darkfi · GitHub #random airpods69: https://github.com/darkrenaissance/darkfi/pull/256, maybe you mean those #random I'll check it out, also apologies if that "Yo?" sounded me being impatient. I was just confirming if the messages are going out or not cause there were some outbound connection failure to onion users #random Also this is the link I was talking about: https://darkrenaissance.github.io/darkfi/dev/contrib/dev/learn.html #random Title: Page not found - The DarkFi Book #random it can be found here https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #random Title: Contribute - The DarkFi Book #random no worries, I didn't understand it that way #random and no, doesn't seem to look the same #dev hanje-san │ and you must check the prefix is correct when decoding #random yepp yepp not the same #dev do I? I mean, doesn't the checksum already take care of that? #dev hanje-san │ seems like you think there Self = String #dev no I don't, but Self is a , so I use `serialize` to get a vector from T #dev otherwise, how am I going to get a vector of something I don't know what it is? #dev that was the whole idea behind using Encodable/Decodable, so one blanket implementation covers a lot of different types #dev nvm, after moving verify_checksum() out of the WIF it became clearer and it's now fixed #dev if I wanted to generate some amount of transactions, can I just use TestHarness::transfer to create txs, and then execute them in a batch? Or should I use a different pattern? #random SIN: trying to get in touch. if you responded earlier I missed it and havent seen it I'm sry. Please share your pubkey, I need to dm you. #dev : draoi: which seeds are you using? #dev where is this mirrored from/to? #dev loopr: darkirc #random hey reka #random contact_pubkey = "37m4LDGUEaRN4pPf5Mpxp7dphEbRy3Z5EzVbn7u8txWP" #random my pubkey #dev dasman ++ #random how many peers are connected right now devs ? #dev loopr: commit messages like > first iteration #dev should be avoided, see our commit log #dev also you should move verify_checksum() back inside the impl, but keep the function the same (without &self) #dev i think it's better to do pub trait WIF: Encodable + Decodable { ... } and just move the functions all inside the trait #dev fn wif_prefix(&self) -> u8 { 80 } <--- remove this! #dev in from_wif() you aren't checking the prefix is correct #dev also in to_wif(), your numbers in the comments are 1, 2, 5, 6 ... you should just delete the numbers #dev so for the commit messages, can you use git rebase -i (lookup usage), and squash all the commits into a single one and rename them to sth meaningful with a description of what's being added and what it does #random hmm i'm not sure we don't collect stats #dev then git force push to your branch #random how is the url related to stats? or did I miss out on any message? #random question to hanje-san ^ #random this question #random paranoid> how many peers are connected right now devs ? #random ohhh fair, thanks! my bad #random btw there's logs here fyi https://agorism.dev/log/ #random Title: Index of /log/ #dev --- #random Ohh this makes it so lot easier! (sorry, new to darkfi and still trying to figure out things here and there) #dev brawndo: Fp.to_string() doesn't exist and that code is for Debug, not Display. Are you sure it's correct to make a conversion function rely on that? for now I'll add "0x", and if we want to use that then i can change it to return format!("{:?}", self) #dev : @zero pushed 1 commit to master: 61661052ce: sdk/util: rename Fp.to_str() to Fp.to_string(), and encode/deocde hex strings with 0x prefix. #dev : @zero pushed 1 commit to master: cb80b9a69f: money/dao: regen zk witness json files, and comment out zk::export_witness() from money clients #dev now you can do: #dev [~/src/darkfi]$ ./bin/zkrunner/zkrender.py -w src/contract/dao/proof/witness/exec.json src/contract/dao/proof/exec.zk /tmp/circ.png #random np ;) #dev : gm #dev : gm #dev : dasman: i'm using these seeds: seeds = ["tcp+tls://anon-fore.st:5262", "tcp+tls://xeno.tools:5262"] #random test #random test back #random i want those cool darkfi wallpapers #random test #random test back #random aliceinchains I want those too! #dev : @zero pushed 2 commits to daosmt: 1cb0b10772: dao::propose: add SMT for benchmark (improper impl) #dev : @zero pushed 2 commits to daosmt: 6b999d5906: dao::vote: add SMT for benchmark (improper impl) #dev ^ this is on a branch, so can run benchmarks on various machines #dev : @zero pushed 1 commit to daosmt: 11c121a6fd: DAO propose/vote: update witness json #random pangaea: https://www.youtube.com/watch?v=huQW-wZKhc0 #random Title: Parasite Eve Opening [Remastered 4K 30FPS] - YouTube #random ah yeah we should upload them to the website #random draoi: ^ maybe you can link them #dev : @zero pushed 1 commit to master: b2d29aaa0a: sdk/python: add missing SparseMerklePath #random noted #random hi airpods69 #random where you from #random aliceinchains, I found darkfi from lainchan so I guess I can say I am from there? XD #random I don't like to associate to the country I am from for the bad reputation these guys have made for themseleves in the tech world #random i am from netherlands #random i dont think they have made any bad reputations #dev gm #dev been testing nymvpn, it's in alpha/beta state, works for apps like tg or signal but for ircd I can't make a connection, dunno why #random ohh thats a nice country to be in, would love to visit someday there #random airpods69 what distro you using #random im using kiss #random void linux here #random glibc #random i haven't heard of kiss before, will check it out #random glibc here too, wine with musl would have been a problem #random what de wm you use #random i3 #random i3-gaps, just works out of the box #random what do you need wine for ? gaming? #random though I am thinking of switching to sway cause some people are like "try it you will love it" #random wine for gaming, yess #random you play cs go? #random ;) #random want to play some sauerbraten #random hahaha cs2 doesn't run on linux afaik, pretty shit #random I spend most of my time with games like euro truck simulator and just started off with red dead demeption 2 today #random Sauerbraten? whats that? #random i dont play steam anymore #random i used to play csgo and was pretty good at it #dev gm #random damn that is great. I am really bad at shooter games #random a monkey has a 70% chance of winning against me #random 30% if the monkey gets a bad PC to use XD #random do you know what will happen if i type large amount of characters here #dev hanje-san: I suppose it doesn't matter #random 6666666666666666666666666666666666666666 #random 66666666666666+:--------:+66666666666666 #random 6666666666:-+66666666666666+--6666666666 #random 6666666:` /666666666666666666+ `-6666666 #random 66666--66``--66666666666666:..`66:.66666 #random 666+`66666 66+./66666666/.+66 66666`/666 #random 66:.666666:.6666/.+66+./6666--666666--66 #random 6+`66666666`+66666- .666666 66666666.:6 #random 6 6666666666 666:.6666--666 6666666666 6 #random .:66666666+./`666666666666 /.+66666666/` #random .:666666.:6666 6666666666`6666:.666666/` #random 6 -` :++++++++: /++++++/ :++++++++: : 6 #random 6+ 666666666666+ 666666 /666666666666`/6 #random 66/.666666666666.-6666/.666666666666.:66 #random 6666`666666666666 6666 666666666666`+666 #random 66666--6666666666+`66`/6666666666--66666 #random 6666666:.666666666.:/`666666666.:6666666 #random 6666666666:./666666 666666/.:6666666666 #random 66666666666666+/---``---:+66666666666666 #random 6666666666666666666666666666666666666666 #random sloww #random Ohhh lol I would have been concerned if it led to a buffer overflow #random would have been real concerned about that one #random lol #random what an edgy and ironic img, now try saying something true and beautiful #random lol #random I had this really good ascii art of a cat but I lost it (tried looking for it but idk how to search for it) #random ohh also also I know that lainchan is an anon imageboard, I am really curious about who this person was https://lainchan.org/%CE%BB/res/38069.html#q38621 #random Title: /λ/ - Programming Employment #dev ++ #dev : @zero pushed 1 commit to master: 03ca4794eb: bench: simplify and improve zk-from-json benchmark #dev : @zero pushed 1 commit to daosmt: e7ae5eb6d8: bench: simplify and improve zk-from-json benchmark #random I love ascii art #random There was some dope ascii art during the torrent scene, some of these NFO files had amazing ascii art, also the keygens for software usually had ascii art, damn I miss those times #dev : @zero pushed 1 commit to master: 79b6276fc8: Makefile: add missing dependency 'contracts' to bench target and rm src/contract/test-harness/*.bin #dev : @zero pushed 1 commit to daosmt: 018425006b: Makefile: add missing dependency 'contracts' to bench target and rm src/contract/test-harness/*.bin #dev hanje-san: Use `rm -f`, otherwise it'll be an error if the file doesn't exist #dev : @zero pushed 1 commit to master: dd5c4d747f: Makefile/bench: add -f to rm so nonexistent files don't block target #dev : @zero pushed 1 commit to daosmt: b07ce229db: Makefile/bench: add -f to rm so nonexistent files don't block target #dev hanje-san: Also don't use underscores in makefile targets, dash (-) would be preferred #dev ok thanks #dev hanje-san: And finally add the non-file targets to PHONY #dev (Bottom of the file) #dev : @zero pushed 1 commit to master: 452a6740f2: Makefile: s/bench_zk-from-json/bench-zk-from-json/ and add bench* to PHONY #dev : @zero pushed 1 commit to daosmt: 6fd86856bc: Makefile: s/bench_zk-from-json/bench-zk-from-json/ and add bench* to PHONY #dev done ty #dev ty #dev btw PHONY is used to mark targets that aren't expected to be an actual file #dev Everything else a Makefile will always expect to result in a file with the target's name #dev PHONY ensures they will always run #dev gr8 got it #dev https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html #dev Title: Phony Targets (GNU make) #dev my benchmark script: https://agorism.dev/uploads/run_bench.sh #dev oh ffs forget sth, one sec #dev Are the changes I made to halo2 enough for benching? #dev : @zero pushed 1 commit to daosmt: e1da305960: Makefile: change baseline from master to daosmt (for daosmt branch) #dev we will see, i will make python bindings and implement the cost function from halo2 in python, then make a tool for analysis #dev ok now the script should work #dev cargo bench -- --load-baseline daosmt --baseline master #dev then after this will output the comparison #random alkaloid: did you trust those and ran on your computer #random if it was from a trusted source, I did yeah and it was never a problem in the early days :) but later used to run these on a vm #random RETVRN #random darkfi retro futurism #random i spammed characters in another channel and got slashed #dev Cool #dev yeah the benchmark framework is nice, it does repeated sampling until the variation is below a significance level (using statistical hypothesis testing) #dev so you don't need to worry about not using the computer at the same time. the results are guaranteed to be accurate #dev and then when doing the comparison, it always shows you if the performance increase (or decrease) is statistically relevant #dev so it's very accurate and reliable #dev also it 'warms up' the tests lol by doing initial runs #dev Yeah I used it before #dev ah nice #dev https://github.com/parazyd/kyber-kem/blob/master/benches/ops.rs #dev Title: kyber-kem/benches/ops.rs at master · parazyd/kyber-kem · GitHub #dev nice, you can make an benchmark group for those params #dev then it draws you a graph #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bench/zk_arith.rs#L56 #dev Title: darkfi/bench/zk_arith.rs at master - darkrenaissance/darkfi - Codeberg.org #random : test #random test back #random : draoi: can you see my test msg? #dev : test #dev test back #dev : @zero pushed 1 commit to master: edf36acc88: Cargo.toml: add bench=false to disable libtest benchmarker #random : hey #random : yeah i can see you #random : thanks for updating #random : np, I see your messages now too, just not the reply back from testbot, I only see that in ircd #random : yeah i think the testbot is only deployed on ircd side #random : test #random test back #random : yeah #random : it seems pretty stable... lmk if you encounter any issues #dev : @zero pushed 1 commit to master: 5bfd718575: doc: add desktop nullifier/SMT benchmarks comparison #random some nfo files still do have some good art alkaloid #random : awesome, will do #dev : @zero pushed 1 commit to master: 2527dd0812: doc: add laptop nullifier vs SMT benchmarks #random reka, added your pubkey, you can dm me #random https://x.com/202accepted/status/1773242745789792494 #random airpods69 you online ? #random alkaloid ? #random online #random test #random test back #dev brawndo: https://darkrenaissance.github.io/darkfi/dev/bench.html #dev Title: Benchmark - The DarkFi Book #dev nullifier < SMT < nullifier + money::transfer() call #dev (in terms of speed) #dev so SMT offers much benefits, and it's faster (when considering nullifier combined with moving the coin for anonymity) #dev so tmrw i will begin implementing SMT into dao #dev Thanks I'll have a look #dev ++ #dev Speed is not the only thing though #dev You should look at proof/tx sizes, and wasm gas usage #dev wasm gas usage is the same, but will look at the proof size #dev Also make sure the wasm host functions you added account for all the gas (those ones are not automatic) #dev Impossible that it's the same #dev How so? #dev because the SMT computation only happens inside ZK, in fact we remove code from DAO #dev unless you mean money, in which case it's a small impact on adding nullifiers to the tree #dev but i can benchmark that #dev Yeah pls review it #dev And if you don't mind, clean up runtime/import/smt.rs a bit #dev Code styling can be improved #dev (It's sensible to have blank lines separating things sometimes) #dev btw I think nullifiers are slow mainly because we hold them in a vec rather than a tree #dev That's a free optimization we can make #dev With how many nullifiers are you testing anyway? #dev ACTION wouldn't try with less than 1M #dev ok will cleanup smt more, i need to add more comments in general #dev i can see your code is well commented 'like a boomer' #dev wdym holding in a vec? we use the sled DB which is a b-tree, although the fastest is a hash-set (which sled doesn't have) #dev sec #dev nullifiers aren't slow, it's just the SMT avoids us having to make a concurrent money::transfer() call which involves an extra signature + 1 input proof + 1 output proof + extra wasm call (which is fast tho in general) #dev oh sry yeah I got confused by something #dev It used to be in a vec before #dev about nullifiers being slow, the main concern is overhead in money::transfer() since we have to calculate 256 extra hashes and writing the nodes to DB #dev Gotcha #dev it's a tough decision here since generally we prefer offloading work to wallet, but here SMT is conceptually cleaner and might be faster even #dev i'm a bit impatient tbh to get moving and close this, but don't want to make the wrong decision either #dev since we then have to live with it #dev will look at: SMT vs dao nullifier proof sizes, analysis of overhead for SMT in money::transfer() #dev Yeah we should likely start looking into the zkvm layout optimisation too #dev incrementing k is logarithmic tho, so k=14 is better than 2 k=13 proofs #dev Because once that changes, it will invalidate old proofs #dev we should add version to zkas for that #dev Although we have zkas versioning, but still it'll become double-maintenance #dev There's binary version in zkas #dev yep, we can just move things into sub-trees and delete after some time #dev people can checkout old versions to access old compilers #dev > hanje-san | also you should move verify_checksum() back inside the impl, but keep the function the same (without &self) #dev https://darkrenaissance.github.io/darkfi/zkas/bincode.html#binary_version #dev Title: Bincode - The DarkFi Book #dev nice #dev afaik private methods are not allowed in trait implementations? #dev SMT is a single k=14 proof, whereas dao nullifier + money::transfer() is 3 k=13 proofs #dev > hanje-san | in from_wif() you aren't checking the prefix is correct #dev loopr: well you can put it outside the trait, but not in the impl block for Encodable #dev in fact there should be no impl block at all #dev you may have missed my earlier comment, why is this required? doesn't the checksum check already take care of that? #dev no #dev checksum checks the integrity of the data #dev but you aren't checking the wif is for this type we are decoding #dev ah you're right, during the checksum check I think we strip the prefix #dev ok #dev ++ #dev last thing I still don't get #dev each type should indicate support for Wif #dev impl Wif for Foo { fn wif_prefix() -> u8 { 110 } } #dev last thing I still don't get #dev hanje-san | fn wif_prefix(&self) -> u8 { 80 } <--- remove this! #dev pub trait Wif : Encodable + Decodable { ... } #dev who provides the prefix then #dev yes delete the entire impl block #dev impl Wif for Foo { fn wif_prefix() -> u8 { 110 } } #dev plz read the rust book chapter on traits #dev >SMT is a single k=14 proof, whereas dao nullifier + money::transfer() is 3 k=13 proofs #dev actually I did, but reading without applying isn't same effective #dev Solid yeah #dev yeah surprising huh? #dev loopr: its the same as C++ virtual method #dev virtual void foo() = 0; #dev hanje-san | impl Wif for Foo { fn wif_prefix() -> u8 { 110 } } #dev you cannot use the type which inherits Wif, unless that type also implements the foo() method #dev how is that different to what is there now #dev your wif_prefix() is completely useless #dev every type has a prefix of 80 #dev can you go on libera IRC and join ##rust? #dev aaaah so every type will have its own prefix? #dev yes ofc #dev wasn't clear to me #dev plz join libera IRC, and go to ##rust #dev it's like a free rust 24/7 support channel #dev THEY DO IT FOR FREE #dev yeah haha use them #dev ok #dev so I can add the libera server right from this same client I assume #dev Yep #dev ++ #dev https://libera.chat/ #dev Title: Libera Chat | A next-generation IRC network for FOSS projects collaboration! #dev ##math, #ethereum, #maemo-leste, #cyberpunk, #electrum, #monero-* #bitcoin-* <- some channels for your amusement #dev yeah I have been there before #dev use /list to view #dev also lainchan #programming is pretty good #dev before people forced me to use slack,discord,tg and whatnot so it was too much :) #dev i have a special work computer for all that, it's always a hassle turning it on #dev IRC = fun #dev ++ #dev btw what happened to freenode #dev libera #dev oh that's what it became #dev ++ #dev hanje-san: sorry for my rookie slowness, but afaics I can't move the impl into a default trait implementation #dev in the default implementation I don't know how to convert self into a byte array / vec #dev in order to concat and then hash #dev or what am I missing #dev that's what `serialize` was doing for me with impl #random SIN: I cant see your pubkey here. pleasr share again #random contact_pubkey = "37m4LDGUEaRN4pPf5Mpxp7dphEbRy3Z5EzVbn7u8txWP" #random ty #random test\ #random test #random test back #random test #random test back #random lez go finally it works! #random I somehow had two darkfi folders in different directories and I was like whaaa why does this not work #random :) #random : next step: see if you can get darkirc working :D #random : bonus if you get it running over tor #random is the old ircd totally deprecated? #random : https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #random Title: tor-darkirc - The DarkFi Book #random hey anon, no not deprecated #random we're testing darkirc rn #random cool, it's adi here [9UQtqP4B5wYaDXB55KK5Q8vVSkK99dSQyPUfw6Hqd9U1] #random hey :) #random hi, setting up the configs again #random sure thing draoi. im waiting on narodnik and for some kind of communication establishes between me and them. #random test #random test back #random test #random test back #random hmm weird, ircd won't go through tor for some reason... alrighty #random test #random test back #random Fuck this shouldn't work #dev are the tor peers in the default darkirc_config.toml expected to be live? #dev can't connect to darkirc via the tor transport #dev : @foo pushed 1 commit to master: 1383e7bd47: doc: Remove reference to quarantine settings... #dev HCF I recall having issues connecting to tor nodes because one setting about the tor transports in the default toml wasn't right. Thawt was for ircd though, may not apply to darkirc #random airpods69 wdym "wont go through tor for some reason" #random sam bankman fried #random test #random test back #random Ohh finally I am back in yayy, so darkirc was returning an error "IO Error: Connection Refused" again and again #random couldn't figure out how to debug it :\ #random aliceinchains also by not going through tor, the connections were being made without the use of tor despite me specifying to use tor which was weird (maybe I did something wrong, idk) #random did I disconnect again? getting some slow connection failed errors #random test #random test back #random huh weird nvm my bad it works lol (sorry for the spam) #random airpods69 how did you specify to use tor? did you use torsocks, torify? did you use proxychains? dont be ssorry for the spam, i am spamlord myself #random use torify #random test #random test back #random okay yeah it works nice I am back again #random aliceinchains Hmmm good question, I just had the tor daemon running and didn't do anything fancy like torsocks or torify #random I followed this page: https://darkrenaissance.github.io/darkfi/clients/tor_inbound.html #random Title: Tor Inbound Node - The DarkFi Book #random (also also just to give an idea of my level of understanding, I am a dumbass intern who knows a bit about linux system and such services, for whoever helps me out) #random test #random test back #random ayee ircd still works yay lol #random airpods69 for connecting with tor type (torify ./ircd) #random for that install torsocks and torify with xbps #random doing it, one second #random aliceinchains, any config changes that I should do? or let it be? #random you know what, I'll do it without changes and if it doesn't work I'll let you know, brb #dev hey HCF #dev try with these two: #dev tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551 #dev tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25554 #random airpods69 you there? #random usually not needed #random test #random test back #random test #random test back #random so I am back to report that I miserably failed #random not needed to modify torrc #random pretty sure that torrc is stock cause I removed the changes #random how did you fail #random ahh it shows that I am not connected to any channels and connection failed errors #random ah it happens #random then you restart ircd again and see #random but first try this #random alrighty, brb doing that #random open a terminal #random and type (tortify curl https://check.torproject.org) #random see if it shows you are using tor #random it will show This browser is configured to use Tor #random test #random test back #random alright, I wasn't recieving text for some reason #random also apologies for again being not that good at this ;-; #random Output of the torify curl command: Congratulations. This browser is configured to use Tor. #random huh so it should work with ircd #random . . #random \`-"'"-'/ #random } 6 6 { #random ==. 6 ,== #random /^^^\ . #random / \ ) #random ( )-( )/ #random "" "" #random that does make sense, if torify works then ircd should have no problem with it but here we are... #random also nice cat #random just use (torify ircd) and if it does not connect Ctrl-C and restart again #random 1 sec not related to darkfi #random (torify nc dsdxchxnfaaqayj6lzzwosq3sxwkrw5l2kulh4eu4yg7iighoyjmpbyd.onion 666) #random type that ^^ and say hi to me #random also just for extra information, I didn't "make install" darkfi. just did a make and I run it with ./ircd (shouldn't really make a difference but I thought of letting you know) #random hmm you compiled ircd so fine #random well torify nc is working then #random (you did recieve the message, right?) #random test #random test back #random yeah yeah i did #random gonna try torify again brb will get disconnected #dev hi #dev which seeds should i use for darkirc #random just keep on retrying some time #dev loopr: copy my text and make notes cos i keep spelling things for you but you don't listen #random i see that darkirc has tor connecting built in #dev > pub trait Wif : Encodable + Decodable { ... } #random but darkirc is still developing #random : s/ developing/ testing #random : get on here frens :) #dev : gm #random test #random test back #random alright I am back and it did not work #random same error as last time that I am not connected #random i dnt have much experience using torify with ircd, but we did need to make some modifications to have it working well over darkirc #random so i encourage you to try there #random you should follow the guide on the docs tho, it's a different method #random Yeah I read it yesterday when you told me to try it out (failed but then it was 3 am in the morning and I was up since 5 am XD) #random oh no #random get some sleep #dev : brb #random no noo I did sleep been a while since we had that exchange of messages #dev : b #random i have no idea why its happening so , usually i get disconnected from default ircd seeds in the config when using with tor whether torify or pihole any, when it happens i restart and repeat and it works #random yea you can try darkirc they have built in tor connection i guess #random have fun #random I am damn sure that I probably am making some kind of mistake but can't find it #dev seeds = ["tcp+tls://anon-fore.st:5262", "tcp+tls://xeno.tools:5262"] #dev nice sled logo https://docs.rs/sled/latest/sled/index.html #dev Title: sled - Rust #dev i send both since once accepts only ipv6 conns, the other ipv4, some server issue #dev ok should i upgrade to those? #dev probably, what seeds are you using now? #dev but yes you should upgrade #dev ohsnap, d4sman, and a tor one #dev ok i dnt know about them #dev you can try and see if the old ones, i think ohshap did some reconfiguration of ports recently #dev so might not work #dev dsman not sure of upgrade status etc #dev tor i have no idea #dev there were also 2 tor seeds/ peers/ addrs linked above #random test #random test back #random okay nice back again, soo I get this when I try to use darkirc "Failed syncing DAG (DAG sync failed), retrying in 10s..." #random test #random test back #random airpods69: you need to set some seeds #random huh i dont use darkirc but i think you need to put the seeds #random ++ #random try these ones: seeds = ["tcp+tls://anon-fore.st:5262", "tcp+tls://xeno.tools:5262"] #random I had the default ones from: https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #random Title: tor-darkirc - The DarkFi Book #random putting the ones you just sent draoi #random ty #random brb #dev configured the above 2 addrs as peers and they're working fine #dev brb #random test #random test back #random naah darkirc didn't work with the seeds. The logs are here: https://pastebin.com/ufhwTHRH #random Title: 08:37:24 [INFO] Initializing DarkIRC node08:37:24 [INFO] Instantiating event D - Pastebin.com #dev : @zero pushed 1 commit to master: 45f0e1ab5e: bench: add sled benchmark #random tnx for logs #random checking #random u are getting tor errors #random could be a config issue #random want to share an anonymized version of ur config? #random can DM if you prefer #random also looks like you are using torsocks #dev SLED writes on laptop=470ns, desktop=261ns for 32 bytes (starting DB size is 1M keys, we delete the key after every insert) #random did you follow this guide? https://darkrenaissance.github.io/darkfi/clients/tor_inbound.html #random Title: Tor Inbound Node - The DarkFi Book #dev insertions are constant size, so no different between DB size of 100k vs 1M #dev *const time #random I did follow through that guide #random and sure I'll drop the config here, its pretty stock and shouldn't have anything in it #dev overhead for money is 256 insertions vs 1 insertion, but 256 insertions of 32 bytes is simply laptop=120μs and desktop=67μs #random ty #dev verifying signatures or ZK proofs has a much larger overhead #random here's my /etc/tor/torrc https://pastebin.com/U1aZNUnG #random Title: tor config - Pastebin.com #random and here is the darkirc_conf.toml https://pastebin.com/QHtWzqtJ #random Title: darkirc toml - Pastebin.com #random there's some small config issues i can see immediately, but shouldn't impact ur ability to connect #random external_addr = ["tor://onine-link.onion:25551"] >> obv this should be the onion specified in /var/tor/darkfi_ircd #random the inbound addrs are incorrect, for tor they must be on tcp, since your onion will redirect traffic to a port on localhost #random Ohh yeah, I changed that before sending the config, wasn't sure sure if it was meant to be private or not #random the correct inbound addr is: "tcp://127.0.0.0:25551", #random ++ yes better to keep your onion private #random do you mind pointing out where the inbound addr is mentioned? can't see it in darkirc_config.toml #random line 45, it's commented #random oh okay checking it to the one you mentioned #random also wait shouldn't it be 127.0.0.1 since that is the one I have in my torrc as well? #random oh yes sorry #random good catch #random brb in 10 mins gonna eat my lunch (can't keep food waiting) #dev : @zero pushed 1 commit to master: 031aac7f65: fee/swap: migrate nullifiers to SMT to match money::transfer() #random so i think u need to address this error: ERROR torsocks[2468]: Connection refused to Tor SOCKS (in socks5_recv_connect_reply() at socks5.c:543) #dev i added those darkirc seeds #dev 09:13:59 [ERROR] [P2P] Channel send error for []: IO error: connection reset #dev that's my own external_addr, why do i get that message? #random maybe there's some help here: #random https://askubuntu.com/questions/874637/torify-and-torsocks-not-working #random Title: 16.04 - Torify and Torsocks not working - Ask Ubuntu #random https://tor.stackexchange.com/questions/22819/tor-socks5-not-working-with-anything-other-than-tor-browser #random Title: tails - Tor SOCKS5 Not Working With Anything Other Than Tor Browser - Tor Stack Exchange #dev 09:15:46 [WARN] [P2P] Failure contacting seed #1 [tcp+tls://xeno.tools:5262]: IO error: timed out #dev 09:15:46 [WARN] [P2P] Greylist empty after seeding #dev 09:15:46 [INFO] [P2P] Seeding hosts successful. #dev bc you ping yourself before sending ur addr to the seed #dev yeah but why would it fail? #dev oh wait the port is wrong #random test #random test back #random alright im back #dev why does it use that port? #dev i have external_addrs=["tcp+tls://[2a02:aa13:8342:1400:81b3:9662:6650:690d]:26661"] #dev it's probably the inbound port of ur connection to yourself #random I changed the config inbound addr to 127.0.0.1:25551 and still didn't work out #dev disconnecting #dev which is expected behavior #random but the error you mentioned didn't appear in logs #dev 09:15:30 [INFO] [P2P] Connected Inbound #0 [tcp+tls://[2a02:aa13:8342:1400:81b3:9662:6650:690d]:37580] #dev 09:15:30 [ERROR] [P2P] Read error on channel tcp+tls://[2a02:aa13:8342:1400:81b3:9662:6650:690d]:37580: IO error: connection reset #dev is that because i disconnect from myself? #dev yes #dev it's normal and part of how the channel stuff gets cleaned up #random checking out the resources you sent #dev ok well normal behaviour shouldn't display errors but nbd for now, but should be fixed eventually #dev i can't connect to any seeds #dev it displays the same error since it's using the standard net code for channels etc #dev i mean i connect to anon fore but it has no hosts to share #dev Error: DagSyncFailed #dev weird, that's wrong #dev so i end up here #dev 09:15:46 [INFO] [P2P] Disconnecting from seed #0 [tcp+tls://anon-fore.st:5262] #dev 09:15:46 [WARN] [P2P] Greylist empty after seeding #dev 09:15:46 [INFO] [P2P] Seeding hosts successful. #dev also why does darkirc IRC keep disconnecting and reconnecting? #dev that's really annoying, it does it like 5-6 times #dev i need to see the full log output #dev since i get this on seed #dev ffs can't copy paste from server #dev it says 'Sending 4 addrs to...' #dev possibly you filtered out all the addrs, i need to know why #dev i don't know re: darkIRC, i get that too #dev https://agorism.dev/uploads/output.txt #random aliceinchains and I did establish though that torify is working fine, doing a curl to torproject with torify #dev can you run w -vv #dev $ ./darkirc -vv &> /tmp/output.txt && doomp /tmp/output.txt #dev ty #dev fuck my server was killed #dev trying to compile darkirc #dev yikes #dev https://agorism.dev/uploads/output.txt #random if you can resend the most recent log that would be helpful #dev view it with less -R output.txt #random sure thing gimme a second #dev 09:25:44 [DEBUG] (26) net::hosts::insert(): Filtered out all addresses #dev btw did you delete your hostlist before re-running? #dev no #dev ok will do #dev still the same issue #dev ok i need to add some debug statements #dev 09:31:35 [WARN] [P2P] Greylist empty after seeding #dev fyi this node doesn't support tor? #dev no #dev i can only connect to anon-fore #dev yes but i can see it storing tor addrs in its dark list #dev which means it's an unsupported transport #dev should i enable tor? #dev nbd #random test #random test back #random finally, back again #dev i should be able to at least connect to the seed nodes #random Latest logs for darkirc draoi : https://pastebin.com/cybFgF2R #random Title: ➜ darkfi git:(v0.4.1) ✗ torify ./darkirc09:30:07 [INFO] Initializing DarkIRC - Pastebin.com #dev or at least anonfore #dev yes ofc #dev you are connecting fine fyi #dev the issue is that ur node is filtering out all the addrs it recvs #dev i need to add more debug statements to understand why, since the only thing i can see from this log is that it put a tor node on the dark list #dev can you run again with trace #dev -vvv #dev (saves you having to recompile) #dev $ rm -fr ~/.local/darkfi/darkirc* && ./darkirc -vvv &> /tmp/output.txt || doomp /tmp/output.txt #dev ty #dev gm #dev that's not trace #dev or maybe i have the prev log #dev gm #dev https://agorism.dev/uploads/output.txt #dev ok good #dev ok this is a bug #dev nice catch #random test #random test back #random pretty weird that this is happenning, tor should be working just fine though #random hey it's the same error as before #random ERROR torsocks[16706]: Connection refused to Tor SOCKS (in socks5_recv_connect_reply() at socks5.c:543) #random yeahh it came up again when I logged it (like the second time, didn't report when I said it didn't) #random Are you even running your Tor daemon? #random yep, I checked it 3 times and just did it again (would have been pretty funny though if it was down) #markets https://milkroad.com/news/us-and-uk-investigate-20b-usdt-transactions-linked-to-russia-garantex/ #markets Title: US and UK Investigate $20B USDT Transactions Linked to Russia's Garantex #random wtf https://arstechnica.com/tech-policy/2024/03/why-every-federal-agency-must-now-appoint-a-chief-ai-officer/ #random Title: Biden orders every US agency to appoint a chief AI officer | Ars Technica #random goddamit i fucking hate soycuck MIT 'opensource' people so much #random https://www.computerworld.com/article/3714821/software-vendors-dump-open-source-go-for-the-cash-grab.html #random Title: Software vendors dump open source, go for the cash grab | Computerworld #random ends the article: "For once, Stallman and I agree." #random corporate FOSS #random Redis did the worst thing possible to lose trust in my opinion... like come on people loved you and you do that for a couple of bucks? #random should've used the GPL #random "make them dependent on us and then milk them", I doubt they'd want to use GPL if they want to do this xd #random Redis is not even good anymore #random Never made anything so big or intense that I need redis. A simple database does the job well #random honestly I could get away with a hashmap for most of the stuff I build even if it is for some corporate #random sometimes i wonder if these complex dbs would actually perform better with fast on disk hashtables #random and no cache, just direct to/from disk #random sled is really good #dev : @draoi pushed 1 commit to master: 1c5586cf6e: store: fix bug in filter_addrs() that was causing peers with the same ports as us to get dropped #dev hanje-san: make clippy is returning some errors #dev ^ your darkirc node connects now #random what exactly is the difference between ircd and darkirc btw? #random also gonna check out sled and maybe have it into the internship project, what exactly is an embedded database? #random like embedded into the project or the embedded systems? #random embedded in your program, in contract to standalone dbs like sql and similar #random s,contract,contrast, #random In essence there is no client-server, you just use it directly #random ohh so very close to a hashtable and what hanje-san said #random It's a binary tree map but yeah #random (B-Tree) #random https://en.wikipedia.org/wiki/B-tree #random Title: B-tree - Wikipedia #random my bad... didn't dive into the readme to know about it #random There's a good talk about it from the author himself https://archive.fosdem.org/2020/schedule/event/rust_techniques_sled/ #random Title: FOSDEM 2020 - sled and rio #random oh nice i will watch it #dev fixed #dev : @zero pushed 1 commit to master: ef71a31ffe: sdk: fix broken unit test #dev wonderful, it works! i'm connected #dev : yoooo #dev why does dnet not show any packets for me? #dev oh wait it does nvm #dev i only have one connection to anon fore.st, i guess this network is so small #dev : hey :D #dev yeah it's small + the bug i just fixed may have stopped nodes from propagating properly #dev i tried upgrading my server but it's not connecting #dev i need to update my servers too #dev what's the connection issue? #dev updating now, should lead to better network topology #dev it simply won't connect to any seed #dev connection refused? #dev 11:28:33 [WARN] [P2P] Failure contacting seed #0 [tcp+tls://anon-fore.st:5262]: IO error: timed out #dev same for xeno.tools seed? #dev there's some firewall issues on my servers i think #dev 11:29:03 [INFO] [EVENTGRAPH] Syncing DAG from 0 peers... #dev maybe DAG should not try to sync when there's 0 peers, it should pause #dev 11:29:23 [WARN] [P2P] Failure contacting seed #1 [tcp+tls://xeno.tools:5262]: IO error: timed out #dev weird #dev could be an issue with my servers #dev rather than net, hard to tell #dev i'm updated now anyway #dev anon-fore works locally but not on my server #dev yeah possibly to do with ipv6 #dev can you try this seed: "tcp+tls://ohsnap.oops.wtf:25553" #dev s/updated/updating #dev 11:33:16 [INFO] [P2P] Connected seed #2 [tcp+tls://ohsnap.oops.wtf:25553] #dev 11:33:16 [INFO] [P2P] Disconnecting from seed #2 [tcp+tls://ohsnap.oops.wtf:25553] #dev 11:33:16 [INFO] [P2P] Seeding hosts successful. #dev ohsnap works #dev i think ipv4/ ipv6 firewall issue #dev on my servers #dev brb #dev ash: here? any news on TxPipe.io? #random : echo #random echo back #random test #random test back #random nice, atleast ircd works with the vpn #random also I was going through the employement section of darkfi, is it really necessary to have arch installed? /s #random tesr #random test #random test back #dev Hi trying to connect to testnet. is lilith the best seeds? #dev hanje-san: Fede told me that it would be good to organize a meeting to see how they can help #dev hanje-san: They said to me to wait bit until they organize though. #dev I want to contrib to the documentation, just open a PR? #random test #random test back #dev hanje-san: you're right, apologies, I was listening but not paying attention to detail #dev PR should be better now #dev what's the guideline regarding adding new errors? #dev from_wif can return a checksum error or a wif_prefix error; currently returning DecodeError with distinct strings #dev the tests would benefit from not having to check the error string, but it's a minor thing I guess #random : echo back #random test #random test back #random airpods69 you play ctf ? #random it also happens outside of software world imo where people take advantage of the creators "free" stuff #random money is the god of this world #random aichain, ctf -> Capture The Flag? nope, never got the chance t oplay that #random https://arstechnica.com/security/2024/03/backdoor-found-in-widely-used-linux-utility-breaks-encrypted-ssh-connections/ #random Title: Backdoor found in widely used Linux utility breaks encrypted SSH connections | Ars Technica #random update your os #random and see downgrade #random i want to find out what is really going on #random oh yeah I saw this, gonna wait for the update to come up. Cant update my internship server though, Idk why those guys love sticking to the oldest possible lts version ;-; #random what internship you doing #random i want to research this backdoor im curious #random https://www.openwall.com/lists/oss-security/2024/03/29/4 #random Title: oss-security - backdoor in upstream xz/liblzma leading to ssh server compromise #random fyi it should be a downgrade now #random yeo yepp #random s/yeo/yep #random I think that old lts server should be fine though, never gets any updates #random ohh also shoot I missed the internship message aichain so sorry about that #random its a cybersecurity internship but those guys asked me to do their software development stuff (just an internal chatbot for them) since that is what I wanted to do #random that is nice #random test #random test back #random ndeed it is nice aichain, though I am still out looking for other places to work at. I ranted out about the internship on lainchan and someone was like "cuckhold mentality, you should come work for darkfi" #random Exact words if you want those: https://lainchan.org/%CE%BB/res/38069.html#38621 #random Title: /λ/ - Programming Employment #random test #random test back #random lol #random nicee I am here from tor aichain! lez goooo #random `torify ./ircd` is what I used #random that person has a point though dont you think #random about trying to join big corpos? #random yes #random the darkfi docs has link to resources you need to learn before you can contribute if you want #random it will take some time to master #random indeed, they do have a point. I did reply to their post which is here: https://lainchan.org/%CE%BB/res/38069.html#q38646 #random Title: /λ/ - Programming Employment #random and yea I have been going through the darkfi docs and also saw what all I need to learn #random Started off with reading this book on C programming so I was planning to finish it off first before jumping into rust and other requirements for darkfi to understand the code. #random Big corpos isn't my goal, like I mentioned in the reply #random you can do it #random yes! would definitely need alot of mentoring though #random https://boehs.org/node/everything-i-know-about-the-xz-backdoor #random Title: Everything I know about the XZ backdoor #random whats up with these chinese people's cover being blowing up recently #random some google guy (chinese) got caught for being a mole there and workign for 2 other chinese orgs #random then now jia tan too seems a bit sus? #random interesting #random test #random test back #random ah yes, works. Like I was saying aichain, I am sure there are moles all over the place in different big tech organizations which make big moves #random also idky I keep hopping between hexchat and weechat, both are good and irc didn't use that often previously #dev loopr: just add the error, WifDecodeError is sufficient #dev hanje-san: Hi! #dev hihi #dev loser: upgrayedd will know but he's afk until monday #dev *she #dev I have question #dev The proof of membership over the merkle tree is just single use? Or I can send multiple proof without using the nullifier? If so, how replay attacks are prevented. #dev brb #random test #random test back #random help #random test #random test back #random fair this works but darkirc still doesn't... weird #random hey airpods69, did you get my DM? #random Just did #dev ash: i don't understand? wdym single use? #dev : @zero pushed 1 commit to master: 37e642922b: doc: add section specifying DB formats for sets #dev By proof of membership I mean a proof that states "I have a valid leaf of the merkle tree". #dev so you have a ZK proof that some item C is in the tree R #dev Once that proof is sent it becomes null? #dev haha no ;) #dev a ZK proof is always valid #dev In this case the item C is my credential #dev hanje-san: Sure, it is always valid, but if someone intercepts the proof can do a replay attack. #dev So, to explain myself better, can I construct different proof without making my commitment null? #dev The replay attack in this case is to intercept a proof and then impersonate the user using the same proof. #dev no, you cannot do replay attacks on zk proofs for invalid witness values #dev you need full knowledge of the witness values, there is no weakness in ZK itself #dev (there might be a flaw in your scheme though, but i'd need to see it to know more) #dev brawndo: when you're around, could you review/approve this doc? https://darkrenaissance.github.io/darkfi/arch/dao.html#tree-states-on-disk it's in the DAO section just randomly (will move it later). I have a couple of Qs there for you. #dev Title: DAO - The DarkFi Book #dev Hmmm, that means that I can construct differents proofs proving that some C is in R? #dev Otherwise, if an attackers gets a valid proof of a user, can just copy-paste it and the verifier party would notice the difference #dev wouldn't #dev * #dev correct #dev usually you don't just prove there's some C in R, you *must* say other stuff about C #dev like maybe C is a public key (or commits to a public key along with other values), and then you prove you know x such that P = xG #dev (x here is the private key) #dev a proof of ownership for x, is the same as a signature, which is equivalent to a ZK proof showing you know x such that P = xG #dev Understood. But still I don't get how the replay attack is avoided. My feel is that one should construct different valid proof using a public input that changes. #dev proofs* #dev Like a counter, idk #dev Or other dynamic value #random wtf github nuked the xz repo so you cannot see what happened #random retards #random dickheads #random some good info here tho: https://news.tuxmachines.org/n/2024/03/29/A_backdoor_in_xz.shtml #random Title: Tux Machines — A backdoor in xz #random the link by aichain is good too #random ah cool just spotted #random lainchan #programming has some good info too #dev maybe you could try to describe what you're trying to do, maybe type up a document with your solution, and i will iterate with you #dev I'm working on a document #dev right now, but is very messy #dev once I have it done I will share #dev np, but i want to help you with your issue, but just hard to imagine rn since i have no context #dev It is true #random rekt vid is back up https://www.youtube.com/watch?v=QA3YZVDUN5s #dev Hmmm. I'm working on the zk-credential tutorial. So, the first thing is to authenticate as a user of a service (or a member of DAO could be too). #random Title: Lunarpunk and the Dark Side of the Cycle - YouTube #random > Released days before the Tornado Cash case... You are prophets #dev My idea up now is to use the merkle tree to represent the set of active users. #dev so give me an example of an action then #dev active user = credential, so the merkle tree contains the list of credentials. A credential is a hash of several values (attributes) associated with that user. #dev Exactly #dev here's an action: posting on a forum. you must have a valid user account #dev well lets start with 1. making an account #dev One attribute could be the privileges of the user so that he can perform actions #dev ++ #dev ok good #dev i create a credential C = hash(username, ...) and a ZK proof that it's constructed in such a way without revealing the attributes themselves. I give C and the proof to the forum owner who makes a signature using their forum public key. #dev now C has a signature, all this data is posted on chain, and C is added to the merkle tree. #dev ++ #dev 2. now i want to post on the forum #dev (well lets ignore username and say everyone is Anons) #dev agree #dev C = hash(P, ...) where P is a public key #dev I prove (without revealing C), that C is in the tree R, and I know x such that P = xG (without revealing x or P), and that C = hash(..., P, ...) #random :D #dev done #dev any problems? #dev So far so good #dev Want to add something more? #dev *ash is listens* #dev *ash listens* #dev well maybe now you want to delete the forum post #dev or modify it #dev when you posted the message M, you also added a keypair #dev There the privilge part comes to play, so that C = hash(P, permission) #dev it is ok? #dev so now the ZK proof is that either you know q : Q = qG OR (you have a user_id >= 2 AND C in R AND P = xG AND C = hash(..., P, user_id, ...)) #dev here Q is the random public key for M which allows editing it, and the : means such that #dev the OR clause is what you're after (sysadmin editing your post) #dev got it #dev *nods* #dev nice! feel free to shout #dev Each time I want to authenticate as a user, I send proof that demonstrate that (1) C is in R; (2) that P = xG; (3) that P is in C. How we avoid to someone doing the replay attack. #dev Normally the authentication is done by an encrypted channel I suppose, but supposing that wouldn't be the case and the attacker could intercept messages. #dev Of course I can make my credential null each time I authenticate, and append a new one leaf to the MT. But in a blockchain that is a transaction fee. #dev : @draoi pushed 1 commit to master: 6504ceceb7: net: fix bug in outbound session that was restricting slot connections... #dev test crypto::util::test_fp_to_str ... FAILED #dev fyi #dev : gm darkirc usoooors #dev : there was a bugfix. plz update. tysm <3 0w0 #dev lol #dev ok running test #dev ash: first thing you say is correct, but then you say "how to stop replay atk" #dev Maybe... I guess to avoid replay attacks on proof of ownership, I would have a circuit that proofs simultaneously that I know a x such that xG = P; and I can construct a public product P = private_key * other_private_number. #dev you cannot take a ZK proof, and swap some part of it with another part #dev so all that extra stuff you show inside the ZK proof *must* be part of the same ZK proof #dev the important part is just C = hash(..., P, ...) and P = xG since nobody knows x *except* the owner of the credential #dev note you could also do P = hash(x) too #dev : @zero pushed 1 commit to master: f92fc9b096: sdk: add missing "0x" prefix to unit test strings #dev ^ fixed #dev When you say swap some part of it you mean the inputs? #dev : darkirc works now, bam instant connect and DAG synced #dev : amazin yeah that was an important fix #dev ash: i mean if I have a proof that a = hash(x), b = hash(y), then if i want to make another proof that a = hash(x), c = hash(z), then i must know both x, z. I cannot use the first proof to construct the 2nd #dev : upgrading my server too #dev : ty #dev : server doesn't connect #dev : https://agorism.dev/uploads/darkirc_config.toml #dev : ty #dev : i'm running the same binary as on my computer #dev : anon-fore and xeno-tools are timing out #dev : oh wait #dev : deleting hostslist #dev : yeah i think it's to do with firewwalls on the server, idk tho i'm rebuilding those now #dev : nope not working #dev : lemme rebuild #dev : fyi you didn't need to delete this hostlist this time #dev Yes #dev : i think you can do: #dev : # iptables -L #dev : to see if any firewall exists #dev : (i might be wrong tho) #dev : ty #dev One cannot take one to make the other, that part I get it. But If one of that proofs perform an action, I can copy the proof that you constructed know x,y or x,z and to perform the same action. That's my point really. #dev knowing* #dev yes but the proof specifies the action #dev Of course that one has to know the valid inputs to construct the proof, but once the proof is created a person can just copy it. #dev And that actions is variable, there some uniqueness to it I suppose. #dev darkfi/src/contract/dao/src/model.rs:122 #dev check this, it's how the DAO works. You make a proposal to call some contracts. All of those actions are put into a single pallas::Base which is used inside ZK #dev https://darkrenaissance.github.io/darkfi/spec/contract/dao/scheme.html#propose #dev Title: Scheme - The DarkFi Book #dev Each time that you create a proof there something regard it that changes. Maybe is a specific value of the action, an id, or nonce, idk #dev Otherwise the proof would be the same and replayeable #dev correct #dev we should have functions in zkas ^^ then it would really help code reuse #dev and structs #dev Is very late here, I'm going to think about it this more and check the docs you shared. #dev I appreaceate a lot the help and time <3 #dev I learned, thank you #dev gn! #dev gn #dev : i think my seeds were misconfigured since i was setting accept_addr to the external addr rather than inbound addr #dev : have redeployed now, hopefully that fixes it #dev : found another bug... fixing ... #dev gn #dev : ok lmk when to redep #random what's darkirc? new chat? #random yup #random nice, i'm still on the old one. need to switch? #dev gm #dev >we should have functions in zkas ^^ then it would really help code reuse #dev Yeah they should be like macros actually so the compiler unrolls it #dev hanje-san: I'll read the doc a bit later #dev What are the questions? #random not yet unless u want to help test #random still debugging #random >systemd lmao #dev they are marked Q: in the text #dev there's 2 but i'm interested in your general opinion #dev ok going offline now, cya later #dev afk #dev : bug a lil tricky... needs thought #dev : ok figured it out #dev : but gtg afk for a bit so will probs push 2m #random brawndo, what's the context for that? #random The xz backdoor #random ahh haven't read the blog post yet. Guess my runit system was safe either ways :p #random :) #random void linux ftw #dev hanje-san added the new error and edited the code accordingly #random test #random test back #dev gm #dev maybe you want to elucidate on the generator constants task #dev hey #dev o/ #dev loopr: I dm you #dev sorry will check later again #dev ash: are you sure you sent a dm to me? can't see any message #dev vanished into the void #random ikr anon, void is fun to use even though it doesn't have as many packages as arch #dev possibly #dev oh also question, what happens if someone sends a DM when my ircd/darkirc is not running? I am guessing it just gets lost? but I don't think that should happen, the dm should have been logged by others, right? #dev actually not just dm but any kind of message #dev yeah but only you can decrypt a dm #dev to you #dev yeah but the dm still exists, can't I retrieve the dm to decrypt it? #dev depends if the daemon discards or not messages it can't decrypt I guess. don't know these details. #random test #random test back #dev airpods69: the DM still exists because it's stored in a buffer #dev so you'll get it next time you open the chat #dev ahh so if I were to stop the ircd process and you send me a dm while I am away, then I'll get it the next time I turn on the ircd process again? Got it #dev yep, pretty sure that's how it should work #dev neat, thanks for clearing that out #dev np #random : test #random test back #random : test back #random test #random test back #dev hmmm it could be that sometimes I switch between master and v0.4.1 so the config file changed #dev loopr: #random test #random test back #dev loopr: forget it, the config file is in another folder #dev separate folder #dev Sent you another DM #random test #random test back #dev deki: hi #dev hey ash #dev Hope you doing great, I have a contribution to the docs, just send a PR? #dev I'm doing alright thanks, hope you're well too. And yeah pretty sure it's just a PR same as usual #dev I'm not part of the dev team btw, but from what I've seen, doc changes are PR too #dev I'm fine too #dev thank you #dev :) #dev :) #dev Good, so I will open it. #dev ash: still no see dm #dev loopr: I have just send you another one #dev hang on might be a config issue on my end #dev can you share your pubkey again pls? #dev yeah #dev a sec #dev nvm I got it #random test #random test back #random test #random test back #random test #random test back #dev gm #dev gm draoi #dev sup #dev working on my internship project so that I can rest off tomorrow (sick here), what about you? #dev working on a bugfix for darkirc #dev feel better soon #dev whats the bug? #dev also thanks #dev https://darkrenaissance.github.io/darkfi/arch/p2p-network.html#hostlist-filtering #dev Title: P2P Network - The DarkFi Book #dev basically we have an abstraction called HostState which keeps track of whether a host is pending, connected, moving between hostlists, etc #dev when a channel disconnects a peer's host state can become invalid if the following thing happens in the wrong order: channel disconnects -> move_host to greylist -> reset state to none #dev so i'm just moving some things around to ensure the atomicity of that process #dev Does that thing happen in the wrong order though? (ig it happened thats why it is a bug?) #dev very rarely but yes it can happen #dev we have these subscribers that we use in p2p that many different processes can be listening to: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/system/subscriber.rs #dev Title: darkfi/src/system/subscriber.rs at master - darkrenaissance/darkfi - Codeberg.org #dev so in this case, different parts of the code base receive a stop signal for a channel that has disconnected, and so the code execution that follows can happen in different orders depending on which part of the code base receives the stop signal first #dev so i'm aggregating what needs to be atomic into a single function, rather than it happening in seperate places where wires can potentially cross #dev everything in order using a single function sounds like a good idea. #dev but can't the "wires" be forced not to cross each other though? Would lead to the same result but with a bad solution in my opinion. #dev (also take this for a pinch of salt from me, still learning) #dev you can generally force atomicity with rwlocks/ mutexes etc, but we're trying to avoid overuse of those in the code #dev we could also add a hoststate which is "Disconnecting" and try and force the order of execution via this State #dev but i think the simpliest thing is just to do the channel cleanup atomically in a single function which we already have for this purpose: https://codeberg.org/darkrenaissance/darkfi/src/commit/f92fc9b0969c47bbee34c74e013055b30646a798/src/net/session/mod.rs#L49 #dev Title: darkfi/src/net/session/mod.rs at f92fc9b0969c47bbee34c74e013055b30646a798 - darkrenaissance/darkfi - Codeberg.org #dev ohh if a function already exists then code reuse is a no brainer. #dev ++ #dev yeah i think it's conceptually correct #dev but it means we will add some conditional logic into remove_sub_on_stop() since it's code we do not do in all cases #dev i.e. happens for outbound and manual sessions, not all sessions (previously was called in outbound and manual seperately, but that led to bug described above) #dev there's a good overview of the p2p and main abstractions here: https://darkrenaissance.github.io/darkfi/learn/dchat/dchat.html #dev Title: P2P API Tutorial - The DarkFi Book #dev gm #dev : y0 #dev : sup #dev : lil update incoming #dev airpods69: only darkirc ^ (see mirror-bot) buffers offline messages, ircd does not #dev : kk #dev : @zero pushed 1 commit to master: bfcd383f3b: doc: on disk states, use (block_height, tx_index) tuple instead of tx_hash since it's 1. more compact 2. the info we actually need #dev hanje-zoe: The doc is clear, looks good #dev When you say "coin type", what does it mean? #dev huh hanje-zoe now I am more confused... how does mirror-bot buffer offline messages? (lets supposed in dms, I dont think it is present there right?) #dev : darkirc buffers offline msgs, not mirror bot #dev : mirror bot just mirrors msgs from darkirc to ircd #dev ah yea thats what I thought but now im wondering what hanje meant by that #dev : he meant see the mirror bot for darkirc msgs #dev also I'll read he p2p api tutorial in a bit that you sent earlier (fell asleep that time) #dev : s/he/she #dev : nice #dev : fyi for anyone coming to darkirc and reading this msg log- i am replying to a person in ircd #dev via the mirror bot, probs shouldn't do that lol #dev lol mirror-bot doesn't do it the other way around? #dev I'll try again to get darkirc running as well. Attempt No. IDK lets see how it goes #dev i think the last time the difficulty was related to tor (i think your tor setup), you could also try with a non-tor setup/ standard config #dev i'm about to push some changes tho #dev Yep last time it was my tor setup, gonna try in a vm so that I don't have to turn off ircd #dev you don't need to turn off ircd, you can run both at the same time #dev just configure different ports etc and run a seperate client #dev if weechat, run like `weechat --dir [path_to_second_directory]` #dev for darkirc that would be the irc_listen port in config right? #dev I could have opened docs, my bad doing that #dev ty, yes the port specified by irc_listen_port should be the same as your client #random test #random test back #random oh so it's actually just systemd distro's that were impacted by the exploit #random yay #random yep, seems like latest version of fedora and debian sid were the ones #random arch doesn't patch the systemd notification stuff so it was fine but still sent out the downgrade #random yeah void linux too #random i saw the downgrade in the install list and kinda panicked lol #random yeahh but void isnt a systemd distro anyways, unless you changed it from runit #random nah all good #random yepp then we were fine as well #random but funny how just a 500ms delay ruined 2 years worth of work to backdoor #random draoi, seems like it still doesnt work and gives "Sync: Could not find any DAG tips" error #random I changed the irc_listen and commented out external_addr which had the onion link in it. darkirc config: https://pastebin.com/YuPjyGrf #random Title: darkircconfig - Pastebin.com #random Logs: https://pastebin.com/9aU9gFBF #random Title: darkirclogs1 - Pastebin.com #random cp the config to a new file like wip_tor_darkirc.toml #random then regenerate the default config by running ./darkirc #random then edit the seeds to these guys: seeds = ["tcp+tls://anon-fore.st:5262", "tcp+tls://xeno.tools:5262"] #random and try again #random oh also change your irc_listen_addr #random make sure you're on darkirc latest master too #random okayy #random oh u will need mv rather than cp to actually delete the config so it regenerates on ./darkirc first run #random yepp yepp, I mv-ed it #random ty #random compiling on master right now #random nice #random New config: https://pastebin.com/icp8dxDK #random Title: newconfigdarkirc - Pastebin.com #random logs: https://pastebin.com/KvryJ1Mc #random Title: darkirclogs2 - Pastebin.com #random I get timed out to the seeds you asked me to add #random yeah idk my seeds aren't that reliable, server issues #random lemme check #random sure thing, I can ping anon-fore.st so thats a plus I believe? #random try adding these seeds as well: "tcp+tls://ohsnap.oops.wtf:25553", "tcp+tls://dasman.xyz:5262" #random DagSyncFailed error again: https://pastebin.com/HHYq5a0K #random well at least you were able to connect to those nodes #random issue is i think they're on old version so not returning reliable peers #random s/nodes/seeds #random let's try one other thing #random can you try again w just the first 2 seeds i have you? #random if that doesn't work i'm afraid we have to wait for more ppl to update #random s/have/gave #random sorry for the late reply draoi, thanks for clarifying about darkirc. i'd like to help test, but just in a busy time right now #random nw wow #random sure thing #random draoi: my seed is updated as well, did it yesterday while reading quietly the chat lol #random I'll go grab something to eat, brb real quick (also I am getting timed out errors again) #random ah so maybe try with the dasman seed #random and delete the ohsnap one #random logs: https://pastebin.com/EgFYSCMS #random Title: ➜ darkfi-darkirc git:(master) ./darkirc 13:29: - Pastebin.com #random : test #random test back #random : test back #random connected through my seed ^^ #random airpods69: lmk when you're ready to try again #random : test #random test back #random : test back #random : haha tnx everyone #random : maybe u saw the msg in #dev this AM- am working on some fixes, gna push asap #random : test #random test back #random : test back #random dasman ready to try again #random Dag sync keeps on failing even if I can connect to the seed https://pastebin.com/e4G4BAu8 #random Title: dasman only seed darkirc log - Pastebin.com #random can you delete your hostlist? #random sure thing #random and try again #random also if you could run with -vv that's ideal #random tho i can see pretty clearly what's happening tbh #random OH MY LORD -vv was a big log I wasn't expecting XD #random hhaha #random here are the logs https://pastebin.com/JryhgWct #random Title: darkirc -vv logs - Pastebin.com #random also one thing I noticed was that it still tried to connect to xeno.tools or I could be wrong. (it is commented out in the config) #random that's cos the seed is sharing info on a xeno peer #random dasman: your seed is sharing multiple peers with the same port, could you verify that those peers are in your whitelist? you can do that by running dnet (it will display your running hostlist for lilith) #random sorry i mean same ip, different port #random oh okay (for the seed sharing info) also what exactly is happening? (I have no clue ;-;) #random can reply in a bit, just working on something rn #random okii #random draoi: I haven't updatedd my server in a long time I'm still on python 3.9 can't seem to run dnet, probably need python3.10 upwards #random but cat hostlist shows only grey tcp+tls://xeno.tools:26661 #random ah so I forgot to remove a hostlist in my local machine which contained couple of those ips - diff ports #dev brawndo: either coin (0) or nullifier (1) #dev !topic Header::height should be u32 #dev Added topic: Header::height should be u32 (by hanje-zoe) #random hmm hmmm (makes absolutely no sense to me) #dev : @zero pushed 1 commit to tx_idx: 86f373667e: validator/runtime: add missing tx_idx #dev upgrayedd: ^ lmk if good and i'll merge tmrw #dev !topic add call_idx to env => remove from process() ix #dev Added topic: add call_idx to env => remove from process() ix (by hanje-zoe) #dev hanje-zoe: whats the usage of tx_idx? #dev and index against what? insider the block? total txs? #random <φ> test #random test back #dev upgrayedd: hey, it's the index of the tx inside the block #dev hanje-zoe: Yeah they should definitely be different dbs #dev hanje-zoe: They can collide #dev ok #dev they can't collide #dev because the type separates the rows #dev i mean value index #dev upgrayedd: needed for this https://darkrenaissance.github.io/darkfi/arch/dao.html#db-merkle-roots #dev Title: DAO - The DarkFi Book #dev ah you wouldn't index them by the field element #dev yeah so c1, c2, n1, n2 would have indexes 0, 1, 2, 3 #dev Well it also depends on your storage, if sql you can keep it all in one db and separate the tables as you see fit #dev anyway it's the wallet so doesn't really matter tbh #dev i can make 2 or 1 with little diff #dev It would be nice if you can backup a single file #dev And that being your wallet #dev ah yeah we use sql, i could use sql for this #dev yy #dev actually having to write all the coins might be quite slow #dev (into sql) #dev this is all of the coins (not just ours), so for every new tx, we'd be writing to sql which is non-ideal #dev anyway nbd, we can figure it out, the main one is the DB * Roots dbs #dev hm yeah #dev : @zero pushed 1 commit to tx_idx: 3e1a2e7ffc: validator/runtime: add missing tx_idx #random https://boehs.org/node/everything-i-know-about-the-xz-backdoor #random Title: Everything I know about the XZ backdoor #random here is a good timeline of the xz backdoor #random <φ>: test #random test back #random : test back #random <φ>: plant some tor seeds baby #random me with my non tor setup not working, "whaaa" XD #random <φ>: tcp+tls://ohsnap.oops.wtf:25553] #random <φ>: 16:58:01 [INFO] [P2P] Disconnecting from seed #1 [tcp+tls://dasman.xyz:5262] #random <φ>: 16:58:01 [INFO] [P2P] Seeding hosts successful. #random <φ>: 16:58:01 [INFO] [P2P] Connecting outbound slot #6 [tcp+tls://31.10.162.198:63346] #random <φ>: 16:58:01 [INFO] [P2P] Connecting outbound slot #3 [tcp+tls://31.10.162.198:63354] #random <φ>: 16:58:01 [INFO] [P2P] Connecting outbound slot #2 [tcp+tls://51.89.153.112:40756] #random <φ>: 16:58:01 [INFO] [P2P] Connecting outbound slot #4 [tcp+tls://31.10.162.198:63283] #random <φ>: disconnect connect disconnect connect ... #random hmmm yup #random <φ>: only 2 seeds [tcp+tls://ohsnap.oops.wtf:25553] #random <φ>: [tcp+tls://dasman.xyz:5262] #random <φ> it werks dude hacsenwerks #random <φ> dont forget to git pull #random <φ> there are many small commits lol #random <φ>: 17:10:43 [INFO] [P2P] Connecting outbound slot #2 [tcp+tls://49.36.144.96:49212] #random <φ>: 17:10:43 [INFO] [P2P] Connecting outbound slot #6 [tcp+tls://185.247.224.96:60778] #random <φ>: 17:10:43 [INFO] [P2P] Connecting outbound slot #7 [tcp+tls://31.10.162.198:63346] #random Are you talking to me or to someone on the other side and I can't see their text? ;-; #random stop spamming logs #random especially ones containing IPs #random <φ>: obunto #random what is happening here ;-; #random overexistment is happening here #random *insert confused.png #random s,overexistment,overexitment #random whats the confusing part? #random φ does a test and then test again from darkirc and then says "plant some tor seeds baby" and then starts spaming logs which make no sense then goes don't forget to git pull and then spams logs again and then you come in to stop them and then he says obunto...??? #dev hey i'm trying to set up a local dev environment and have a single node running but i get an error with `./drk wallet --keygen` #dev Failed to generate keypair: QueryPreparationFailed #dev the wallet.db in the drk config exists #random <φ>: cracks me up #dev noot: are you using contrib/localnet/darkfid-single-node? #random <φ>: poorly written i need to pr #dev yeah exactly #random <φ>: confusing #random <φ>: :P #dev you need to keep using the -c flag #dev so from in that folder: ../../../drk -c drk.toml wallet --keygen #dev as shown in the contrib/localnet/darkfid-single-node/README.md #dev cool that worked thanks! #dev i'm getting an error with wallet --address though #dev Failed to fetch default address: RusqliteError("[default_address] Default address retrieval failed: RowNotFound") #dev also using -c #dev i already got the address with --keygen but not sure why --address doesnt work? #dev iirc --address brings the default one #dev so it will fail if you haven't set one up #dev hence the inbeetwin step of --default-address 1 #dev ah okay cool #dev sorry was going off the main docs, will go off the readme #dev all working now :) #random <φ> upgrayedd why #random <φ> i wont again i promise #random does it server anuy purpose to send these log lines? #random if the answer is no, stop. #random <φ> those are seeds arent they #random read the lines you send and answer yourself #random only a single one contains a seed #random everything else is peoples IPs #random <φ> lmao #random you think its funny? #random <φ> i came from twitter #random <φ> its not my fault ips of people were showing #random <φ> mine was showing too thats why i posted #random <φ> as i said │17:03:35 mirror-bot │ <φ>: only 2 seeds [tcp+tls://ohsnap.oops.wtf:25553] │ #random <φ> i knew #random lol what garbage excuse is that? #random you are the one sharng these logs #random <φ> not excuse darling #random cut the bullshit, "darling" #random take the L #random <φ> the ips should not be shown in the first place #random <φ> not my fault #random <φ> okay ? #random what you are saying makes 0 sense #random yeah it is your fault, because you are sharing them #random <φ> im saying why log ips #random you could obfuscate the IPs and share the logs just fine #random <φ> really #random do you understand what alpha software is? #random <φ> what about attackers finding them the ips of people i mean #random log targets are whatever is more helpful #random <φ> lol #random attackers? #random these are your local logs #random i they can access them, your machine is in more danger #random <φ> lol #random you are the one shared them, you enabled them, hence why I told you to stop #random <φ> those ips are not mine dude #random yet you don't want to take the responsibility and find excuses #random they were logged on your machine, and you shared them here #random guess who is the culprit #random how hard it is to understand? #random <φ> upgrayedd: im just revealing whats already revealed but public #random lol #random <φ> so people are alert because of me and i posted cause i got bit pissed dude #random <φ> also darkirc maintainer is poor #random > i came from witter #random checks out #random I was typing out the same thing lmao #random <φ> eh now make fun of me for saying twitter lo #random sure thing, I always am on a lookout for opportunities to do that #random this is not a safe place, darling #random <φ> i know #random <φ> the fact that ips are being logged is something to talk about #random <φ> lol #random yeah lets talk about alpha software that is being actively tested logs something usefull to development #random <φ> test #random test back #random <φ> darkfid also logs ip lmao and there are not many peers #random <φ> bye #dev had an issue using drk as a dep in the external swapd repo, opened a pr to fix https://github.com/darkrenaissance/darkfi/pull/267 #dev Title: load contract bytes at runtime in deploy_native_contracts by noot · Pull Request #267 · darkrenaissance/darkfi · GitHub #dev let me know any thoughts or if theres another preferred method to fix #dev noot: I don't think that fixes the "problem" #dev *.wasm are build artifacts #dev oh okay, this loads them at runtime so they should be built right? #dev i tested it and it fixes the compilation err #dev it loads the already building .wasm file to store in the contracts db #dev the wasm itself comes from the contract compilation #dev are you using a local path to the repo to check that compilation passes? #dev it works for patch with git = "https://github.com/noot/darkfi" #dev the issue is the path in include_bytes #dev its looking in src/validator/../contract/money/darkfi_money_contract.wasm`: No such file or directory #dev like its not expanding the path correctly when its being used as a lib? #dev yeah probably, since its not part of the darkfid lib #dev so its an explicit path #dev so inside cargo cache, it will try to find the .wasm files two folders up #dev which are not darkfid root #dev the question is, is CARGO_MANIFEST_DIR set up when invoking build, or its something you need to set manually? #dev its auto set by cargo #dev to wherever the cargo.toml for that crate is #dev aha and since its a workspace it gets the repo root Cargo.toml #dev hence it can find the contracts path #dev yeah exactly #dev just makes it nonrelative so it always expands correctly #dev does the repo build normally using that? #dev I mean did you execute make clippy on darkfi? #random test #random test back #dev yep it builds #dev could be usefull to do the same in all instances of include_bytes! inside src, so we don't come to same issue in some other import #dev obviously by a new macro like include_bytes_using_manifest or some shit #dev cool yeah, i can do that in a follow up pr #dev im planning on restructuing the bin/drk crate so that i can use it as a wallet lib, unless theres another lib that would be better for using as a wallet? #dev i think bin/drk is what i need for stuff like initializing/generating keys, checking balance and sending txs right #dev well bin/drk is the wallet impl itself, it can act as wallet related functions as well I guess #dev but its not a lib perse #dev yeah im planning on restructuring it so i can use it as a lib #dev basically just making a lib.rs #dev is there another crate thats already a lib that has wallet functionality? #dev no everything is confined into bin/drk #dev ok cool #dev https://github.com/darkrenaissance/darkfi/pull/268 #dev Title: restructure bin/drk as a library by noot · Pull Request #268 · darkrenaissance/darkfi · GitHub #dev smol pr ready #dev noot: it will compile, but running will fail, since Drk uses an RpcClient, to perform requests towards the nodes rpc endpoint, and when that gets created it checks if it can establish connection #dev so when the code that uses must also have an active rpc client #dev if thats ok all good #dev yeah, thats fine #dev this is just to make the drk structs/methods accessible #dev yy gotcha, btw cargo.lock changes should be in a separate commit, better to not commit it all, since we do deps version updates regularly #dev anyway I'm off, will check more thorough tom #dev oh okay, the cargo.lock changes were autogenerated tho #dev should i just remove? #dev sounds good :) #dev yy probably because your local caches use later versions #dev so they got pushed into the cargo .lock #dev since they are all minor versions #dev anyway glhf #dev ahh true #dev okay will change back #random morning people #random morning airpods69 #random sup deki #random I'm about to get a coffee then spend the day learning about Rust! #random you? #random oh, thats cool #random if you don't know it, worth learning https://doc.rust-lang.org/stable/book/title-page.html #random Title: The Rust Programming Language - The Rust Programming Language #random I woke up a bit too early and now I am thinking if I should sleep again or not. Gotta work throughout the day on internship then gonna learn some more C before I start with rust #random noice, C is definitely a good language to start #random anyhow I'll bbl, need to get this coffee lol #random I know some rust but I need to read the book properly. I chose C cause A) I can XD B) I had it in first year of university and I liked it but never worked on it cause I was always stuck with python #random sure thing #random yeah I recommend not falling into the python trap :p #random I started out with C, then got too comfortable with python #random test #random test back #random deki, yea the python trap is real. I have been trying to get out of it but most of the people I have worked with only know python thus forcing me to make the project in it and no other language #random Ohh I started off with python, then C for uni then C++ for uni (basics only nothing really good) then back to python again. Did some rust in between but couldn't give my 100% to it #random yeah my uni was very similar, we had C then C++ mainly, then Python kinda just followed from C #random Python's good to know, just don't want to rely on it #random same here, I'd say it is good for quick prototyping #random some projects are really cool with python but then those are C++ in the background like pytorch or tinygrad #random haha yeah, oh I've used pytorch it's really good for ML stuff; #random if you are into ML then tinygrad is like a fun toy to play with #dev fyi clocks changed #dev hanje-zoe, what do you mean the clocks changed? (just curious cause idk) #random : some rust learning tips : https://github.com/rust-lang/rustlings; videos at https://www.youtube.com/@codetothemoon/videos or https://www.youtube.com/@NoBoilerplate/videos; and last but not least : ChatGPT via "how to write xyzw in rust" or "explain code" #random : Title: Code to the Moon - YouTube #random Title: Code to the Moon - YouTube #random Title: No Boilerplate - YouTube #random : Title: No Boilerplate - YouTube #dev gm #dev morning brawndo #dev Clocks changed means daylight saving time #dev oh okayy, thanks. #dev loopr: delete "impl WIF for Foo" from wif.rs completely. #dev introduce a WifError enum and use that instead of using Strings. WifDecodeError(&str) becomes WifDecodeError(WifError) #dev .is_err_and(|e| e.to_string() == "WIF decode failed: checksum failed to compute"), #dev so normally there's WifDecodeError but if you're interested in the specific Wif error itself, then you can unwrap and look at the inner WifError to see it #dev // take the first 4 bytes of the second SHA-256 hash; this is the checksum. #dev this comment is wrong #dev builder.extend_from_slice(&darkfi_serial::serialize(self)); #dev self.encode(&mut builder).unwrap() #dev (same for checksum) #dev for the checksum, you have the code to compute it written twice, instead remove verify_checksum(), and make a function called "compute_checksum()" (or similar) #dev anyway that's nbd tbh #dev the main ones are 1. the error strings 2. the impl specializations 3. the serialization #dev also the last lines in from_wif() are uneccessary. why are you doing this? Err(e) => Err(crate::Error::from(e)) #dev also you don't check the decoded bytes length so your code will panic #dev : @zero pushed 1 commit to master: 2919a595f1: runtime/merkle & smt: implements DB_roots format documented in the book arch/dao page. We store all merkle roots together with information about exactly when that root occurred. To store when the root occurred, we use an absolute location of (block_height, tx_idx, call_idx). Right now tx_idx and call_idx are hardcoded to 0 since the env doesn't yet have access to this info. #dev You can't have the tx_idx (if that's a block) inside runtime during verification #dev It's agnostic to that #dev is that because of the mempool? #dev we have the block_height #dev block_height is the height at verification time #dev It can be different in the mempool and inside a block #dev ok is there a way to get the height and idx from a tx hash? #dev Maybe from an existing finalized tx #dev so i store tx_hash instead of (height, idx) but later once confirmed, i want to get its (height, idx) from the tx_hash #dev .get_tx_location(tx_hash) -> (u32, u32) #dev u64,u64 #dev they should be u32 #dev u64 is too big for block height #dev We'd need a database modification for those kind of pointers #dev upgrayedd worked on it, perhaps something is in place already #dev Why is u64 too big? #dev ok, yeah it should exist esp for block explorers #dev the max size of u32 is 4.3 billion which is more than sufficient. that would take 12,257 years to reach #dev ok #dev i'm happy you're aiming long term tho #dev :D #dev u64 is 52,644,817 MILLION years. I think humans will be long extinct by then #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/blockchain/tx_store.rs #dev Title: darkfi/src/blockchain/tx_store.rs at master - darkrenaissance/darkfi - Codeberg.org #dev So here we have k=hash,v=tx #dev We can likely have an additional tree that maps the hashes to blocks #dev yeah or just add it with the tx data #dev how do i get the tx_hash inside wasm? #dev (of the current tx) do we need to pass it into the runtime params? #dev i guess yeah the Env should have it #dev Ot #dev It's not there but I suppose you can add it #dev ++ #dev you don't need to map hashes to blocks, since you have the other way #dev so from runtime you can get a blocks txs by its height #dev I don't remember if we have that, but its already mapped #dev You don't know which height a tx is in #dev the only reason to store the actual idx is for performance, so you don't have to look for your tx inside the vec #dev brawndo: you do, verifying height #dev wait I'm talking finalized #dev hanje-zoe: ^ #dev if you mean a new one, then yeah there shouldn't be a tx_idx when you are verifying it #dev Can you explain what you need to upgrayedd? He knows this inside-out :) #dev since its not index against a block #random test #random test back #dev hanje-zoe: the way I understand it, you only need the tx hash, since this is going to happen inside runtime, for which we have the verifying block height(actual block height for blocks, next block height when we are verifying new txs in the mempool) #dev so we only need an fn which gets the verifying_block_height and the tx hash as parameters #dev if the verifying block height exists, find the index of the tx_hash in its vector #dev and we crate a runtime function invoking that db function #dev since you will have the tx_hash store as part of the contract execution params, you don't need to pass it to the runtime again #dev so runtime changes will be just a new function we expose #dev let me know if I don't understand something #dev I don't think its required to pass the tx_hash as part of the Env, but surely can be added since it might be a common contract execution param #dev : @zero pushed 1 commit to master: 51d7f2996a: dao::propose(): when a proposal is made, we snapshot the current coins root (old) AND nullifiers root (newly added) #dev upgrayedd: i will add tx_hash to runtime, and use that instead of (block_height, tx_idx) since you both made good points, esp re: mempool #dev but we still should have tx_hash -> (height, idx). You could even include that data in the tx_hash -> tx_data DB so that it becomes tx_hash -> (height, idx, tx_data) #dev Yeah those can be baked in on finalization #dev as to why i need it: well there are many reasons this is a good idea in general. Given a tx_hash, you should be able to lookup the data and also find when/where it was confirmed (for example you want to display in a wallet the timestamp, or count the number of confirms, or show in a blockexplorer when it confirmed .etc) #dev specifically my need is this: #dev yeah tx_hash -> (height, idx) can be an auxilliary tree, with the record created on finalization as brawndo said #dev very easy and fast to do #dev - i lookup some data which was added in a tx, but this data should not be too old. So i want to get the block height from the saved tx_hash (used when saving this data) and check it's not too long ago (current_verifying_height - tx_block_height) #dev aha so its like looking for an olders record absolute position #dev ok yeah the tx_hash -> (height, idx) is a very standard call to have #dev gotcha gotcha gotcha #dev yep ++ #dev kk will add it then in a bit #dev you want it also exposed in the runtime right? #dev to call it from inside wasm #dev yep #dev but i can do that part #dev nah I will add them all in one go #dev ok hehe ty #dev brb rebooting srv #dev yesterday i told you about my branch but it's incorrect so i'll delete it (based on above convo) #dev hanje-zoe: we should confine these additions into single commits, so they are easily reversible #dev since its basically a new fn we expose to both runtime and db #dev yeah its not needed #dev just one clarification: the tx_hash you want to add as a runtime field, will be the tx_hash of the verifying tx, not the old record you want to access its absolute position, that have to be a contract param #dev yes correct #dev ok so you just add it as an extra abstracted info that might be usefull to all contracts #random test #random test back #dev b #dev !list #dev Topics: #dev 1. Header::height should be u32 (by hanje-zoe) #dev 2. add call_idx to env => remove from process() ix (by hanje-zoe) #dev : @zero pushed 1 commit to master: affcde18d8: book/arch/dao: change (block_height, tx_idx) to simply tx_hash since mempool txs won't have this data. #dev upgrayedd: ^ check this, it should give you specific context #dev when making a DAO proposal, anybody can pick any merkle root, but they shouldn't choose one that is really old #dev brawndo: just a tldr of what you missed: gonna add a new auxiliary tree storing tx absolute position in tx_store and then a get_tx_with_absolute_position(tx_hash) -> (block_height, idx, tx) exposed to the runtime #dev Sounds good #dev Remember to include gas fees #dev if you add an auxilliary tree, why make the call also return the tx? why not just the location? #dev hanje-zoe: maybe the runtime exposed fn should be split #dev brawndo: lol I was thinking about the fees exactly #dev yes split them because the tx data will waste gas #dev since grabing both the indexes and the tx means more gass #dev ggizi #dev i avoid doing unncessary serializations and hashes, often precomputing stuff because it's easy to exhaust gas #dev hanje-zoe: well they are both useful #dev yes but make it 2 calls then #dev yeah that what I'm saying #dev aha yeah good #dev darkfi/src/contract/money/src/entrypoint.rs:177 #dev re: exhausting gas #dev get_tx_absolute_position(tx_hash) -> (block_height, idx) and get_tx_with_absolute_posotion(tx_hash) -> (block_height, idx, tx) #dev is it 1 DB or 2 DBs? #dev one db #dev different trees #dev the second call also grabs the tx from the main tx_store tree #dev while the first one just the record from the auxiliary tx_store tree #dev yeah so better is get_tx_location(tx_hash) (or absolutely_best_position) and get_tx(tx_hash) #dev is there any benefit to combining the calls? #dev aha so you mean to skip it all together #dev since we already got get_tx(tx_hash) #dev we just need to expose that to the runtime #dev so instead of doing a combined call, you will do: get_tx_location(tx_hash) and then a get_tx(tx_hash) if you also need the full tx #dev yep it's better imo #dev ++ #dev it might be faster to use a single tree #dev but nbd #dev you can always do &data[8..] just for the tx data #dev let me think #dev iirc sled will grab the full bytes for the record #dev so when you want just the position you will also load the full tx into memoryu #dev Yeah you'll still use the memory for a bit #dev so not optimal #dev ah annoying, ok nvm #dev btw run make clippy and fix failling stuff :D #dev my db in libbitcoin would return a record and you could indicate which data you will read #dev aha ty will do #dev oh like an indexing record #dev or metadata #dev showing which bytes are what, so you just grab those #dev we can't do that with sled, as the stored bytes are retrieved as a whole #dev hence why we use the aux trees #dev record just is a pointer to a location but the get doesn't return any bytes #dev you then have to call read on the record and indicate which part of the record you read #dev like a cursor huh? #dev which you specify the position to read from #dev yeah like a cursor #dev gotcha gotcha gotcha #dev there's a lot of cool tricks you can do where you write all the txs to disk non-atomically. #dev it's nbd if you rollback because the tx_hash still exists in the db but who cares #dev : @zero pushed 1 commit to master: 4f2f660d61: money/integration: add missing import for `darkfi_sdk::blockchain::expected_reward` #dev : @zero pushed 2 commits to tx_hash_unwrap: a5026e9684: tx: change tx.hash() -> Result to tx.hash() -> TransactionHash, by calling .unwrap() on blake3 hasher. This should be safe (see code comment in tx/mod.rs:188 inside fn hash() ) #dev : @zero pushed 2 commits to tx_hash_unwrap: 6a6a664d3e: runtime: add tx_hash to runtime params #dev upgrayedd: can you check this branch ^ before i rebase on master? #dev this commit: a5026e9684 #dev because tx.hash() no longer returns a result, it means a lot of validator functions can return () instead of Result<()> #random test #random test back #dev hanje-zoe: Blake3 hasher .update() method never fails. #dev source: "Trust me bro"? #dev upgrayedd: https://docs.rs/blake3/latest/blake3/struct.Hasher.html#method.update #dev Title: Hasher in blake3 - Rust #dev oh ok #dev then yeah removing result is good, less clutter #dev i'm checking the blake3 code to confirm #dev yep it's safe #dev https://github.com/BLAKE3-team/BLAKE3/blob/master/src/lib.rs#L1524 #dev Title: BLAKE3/src/lib.rs at master · BLAKE3-team/BLAKE3 · GitHub #dev literally just self.update(input); Ok(input.len()) #dev : @skoupidi pushed 1 commit to master: f9a58ca5ad: runtime/import/util: minor optimizations retrieving block info stuff #dev yy checked it also XD #dev : @zero pushed 2 commits to master: 5c9e3bd4a1: tx: change tx.hash() -> Result to tx.hash() -> TransactionHash, by calling .unwrap() on blake3 hasher. This should be safe (see code comment in tx/mod.rs:188 inside fn hash() ) #dev : @zero pushed 2 commits to master: 0967744635: runtime: add tx_hash to runtime params #dev i only recently learnt about git add -u and it's been a gamechanger #dev : @zero pushed 1 commit to master: 9878fff12d: runtime::{merkle, smt}: change value for roots_db from (blk_height:3, tx_idx:2, call_idx:2) to (tx_hash:32, call_idx:2) #dev What about -p ? #dev i know that one, but -u is more useful #dev hanje-zoe: what ACL should get_tx_location(tx_hash) and get_tx(tx_hash) have? I reckon Exec is enough for now, or you need it anywhere else? #dev metadata likely #dev yes metadata and exec only #dev : @skoupidi pushed 3 commits to master: 254af116f4: blockchain/*: minore code look cleanup #dev : @skoupidi pushed 3 commits to master: 0475a8e2d3: runtime/import/util: corrected some log targets #dev : @skoupidi pushed 3 commits to master: 7d4151c230: sdk: fn get_tx(hash) added #dev : @draoi pushed 6 commits to master: 69c6530a5d: net: move downgrade to greylist into remove_sub_on_stop()... #dev : @draoi pushed 6 commits to master: 11c65a7705: store: cleanup move_host() to reduce code reuse... #dev : @draoi pushed 6 commits to master: 1f1bfd3dce: net: flatten move_hosts() so unregister call happens outside function... #dev : @draoi pushed 6 commits to master: c794507458: store: fix logic error in is_connection_to_self() #dev : @draoi pushed 6 commits to master: 1cd330b798: net: create RefineSession... #dev : @draoi pushed 6 commits to master: 52e6ea0530: net: implement greylist downgrade and goldlist upgrade #dev : @skoupidi pushed 1 commit to master: 70aeb839f5: blockchain/tx_store: unified main tree with the pending tree into single store structure #random test #random test back #dev !topic darkirc status #dev Added topic: darkirc status (by brawndo) #dev !list #dev Topics: #dev 1. Header::height should be u32 (by hanje-zoe) #dev 2. add call_idx to env => remove from process() ix (by hanje-zoe) #dev 3. darkirc status (by brawndo) #dev biab #dev Anyone there? #dev vn7: yes #random test #random test back #random test #random test back #random test #random test back #random howdy people #random : echo #random echo back #random : echo back #dev : @skoupidi pushed 2 commits to master: ea93623ff8: blockchain/contract_store: unified wasm and states trees into a single store structure #dev : @skoupidi pushed 2 commits to master: 34dd60a9b7: blockchain/block_store: unified all trees into a single store structure #random also draoi if you got time, do you want to try again? or leave darkirc as it is for now? #dev : @draoi pushed 1 commit to master: cb821b651e: chore: move excessively verbose debug statements to trace #dev draoi: since you are doing p2p log targets, move everything into at least debug #dev wydm why #random airpods69: hey, so default config with dasman.xyz seed didn't work for you? #random we will discuss darkirc status in the dev meeting today #random dasman: did you delete the hostlist on your seed? #random I did yes #dev to not log stuff like connected ips or connection errors to peers(not seeds) under info #random Also shared the log with you in dm #random i didn't recv it #random there's been a big upgrade just now tho #random yeah seen, tysm #random but i'm still receiving garbage nodes from your seed #random but also the log contained a panic #random yeah that's fixed now #random I'll check the seed again #random ty #random thanks, if you could rebuild and delete hostlist before rerunning that would be ideal #random ++ #random and if you have it on debug mode and track the log, check if you are receiving hostile peers and which node they are coming from #random so we can tell them to update #dev oh rly, isn't that useful tho? #random dasman nope the seed didn't work for me #random : dag synced finally #random : it was complaining about a missing parent tip #dev upgrayedd: lets discuss in meeting, i think p2p output is quite reasonable #dev : @zero pushed 1 commit to master: fbe13ed480: DAO::propose(): goodbye nullifiers, hello SMT #dev !topic remove get_verifying_block_height_epoch() #dev Added topic: remove get_verifying_block_height_epoch() (by hanje-zoe) #dev hi #dev greeets #dev draoi: yeah but they shouldn't be part of main bin/app logs, hence why moving them to debug #dev hanje-zoe: sure #dev brb #random airpods69: updating nodes, will try after meeting, if you got time #dev i just realized a bunch of functions in runtime/util as missing proper ACL #dev like? #dev b #dev height, time .etc #dev these are read functions, anyone can call them anywhere #dev you're not allowed to read in update() section #dev 4Hi #dev 5hellos #dev ain't the call going to fail then? #random <50483700256457450.0> test #random test back #dev if not then yeah ecl should be added #dev get_verifying_block_height_epoch #dev oops i meant #dev darkfi/src/runtime/import/util.rs:222 #dev i'll go through runtime after dao and check everything has proper perms #dev yo3 #dev glhf #dev frens? #dev !list #dev Topics: #dev 1. Header::height should be u32 (by hanje-zoe) #dev 2. add call_idx to env => remove from process() ix (by hanje-zoe) #dev 3. darkirc status (by brawndo) #dev 4. remove get_verifying_block_height_epoch() (by hanje-zoe) #dev hi #dev ohaiyo #dev height, tx_idx and other indexes should be u32 #dev !start #dev Meeting started #dev Topics: #dev 1. Header::height should be u32 (by hanje-zoe) #dev 2. add call_idx to env => remove from process() ix (by hanje-zoe) #dev 3. darkirc status (by brawndo) #dev 4. remove get_verifying_block_height_epoch() (by hanje-zoe) #dev Current topic: Header::height should be u32 (by hanje-zoe) #dev >t. isn't planning on living forever #dev gm #dev brawndo: your face when https://www.youtube.com/watch?v=uD4izuDMUQA #dev Title: TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K) - YouTube #dev nice vid #dev whats the u32 life expectancy? #dev 13,000 years #dev yeah what's the rationale for decreasing the size? #dev u64 is like 500,000 million years or sth #dev also nonce should be u32, it will take 1000s of years to generate the max number of hashes #dev darkfi 1000 year dynasty #dev darkfi forever #dev ok about nonce, but why reduce the height? as HCF whats the ranional? #dev >>> (2**32 - 1)*90/(60*60*24*365) #dev 12257.326755136986 #dev 32 bits is more than adequate to represent 12,257 years of darkfi blockchain #dev so the argument is to save space? #dev whats the practical implication #dev u64 is still smol to store #dev it's the wrong data type #dev there is no wrong data type #dev u64 is for fine grained data like nanosecs or bytes in a computer, for measuring things #dev only wrong usage #dev u32 is for counting objects, measuring sizes .etc #dev https://developer.bitcoin.org/reference/block_chain.html #dev Title: Block Chain — Bitcoin #dev the practical thing I'd be concerned about is potential bugs with casting, e.g. `as u32` and so on #dev it might not come up #dev well i have to cast to u32 everywhere #dev but the codebase is kinda loose with these sorts of conversions #dev it's possible to truncate values by mistake #dev sure but we will never have a block index that doesn't fit in u32 #dev i agree with you on that, and sure u64 is probably way bigger than necessary #dev just noting that we have to be careful with conversions if we change something #dev it's an easy thing to miss. clippy can help though if we configure it to flag those things for us #dev the best way to deal with those conversions is to use specialized types like BlockHeight #dev I'm not opposed to that #dev https://docs.rs/lightning/latest/lightning/chain/trait.Listen.html #dev Title: Listen in lightning::chain - Rust #dev The type aliases can still be cast at will btw #dev https://developer.aleo.org/leo/operators/#blockheight #dev Title: Leo Operators Reference | Welcome to Aleo Documentation #dev everyone using u32 #dev is 90 in the above calc in seconds, the block finality time? #dev re btc: block production is capped so it makes sense to use the smalles appropriate data type #dev yes #dev ++ #dev the "everyone using it so let's also" is not a proper argument... #dev upgrayedd: you mean the reward, right? blocks still get produced when reward goes to 0 #dev I'm not opposed to change it, just saying that argue the change with real stuff #dev cosmos and solana use u64 #dev hanje-zoe: yy, whenever you have something cap you can always use whats best to reduce storage footprint #dev ah well it's the most meaningless pointless optimization #dev upgrayedd: bitcoin blocks will still get produced and everything operates as normal (with fees) #dev its not meaningless or pointless... #dev yeah I gave it as an example to when it makes sense to use smaller types #dev ok i put the decision to you guys ;) just offering my input that u32 is big enough, but if we want u64 for other reasons like compatability or so then it's nbd #dev saying "oh we will have died by then" is not an argument imho #dev we will have died 130 times over lol #dev I wan't to produce eternal code that will run in a blokes neurallink in 10m years #dev why cap it from now, when I know I can make it future proof? #dev lol #dev (again not imposed, just stating my views) #dev 13,000 years in the future #dev ok i admire the sentiment, lets cont...? #dev ++ #dev ++ #dev ++ #dev ++ #dev !next #dev Elapsed time: 17.5 min #dev Current topic: add call_idx to env => remove from process() ix (by hanje-zoe) #dev ok so i want to use (tx_hash, call_idx) as the absolute location of a call, so in runtime host functions, i need access to the call_idx #dev i was thinking to add this into the runtime. It could even be updated between calls to avoid spawning Runtimes in the loop #dev if it's added to the runtime params, then we don't need to pass it into ix anymore (it's redundant) #dev darkfi/src/contract/money/src/entrypoint.rs:133 #dev call_idx is (or has been) used in wasm functions to check the position of "self" call, but also other calls within the transaction #dev ^ it's also missing from Deploy #dev yeah so it would get moved into being a host function #dev For various verification reasons, and data retrieval #dev "avoid spawning Runtime" in the loop -> Not good behaviour, it should be reinstantiated with each call #dev ok that's better #dev should i move it out of ix, and into runtime then? #dev Why do you need it in the host? #dev https://darkrenaissance.github.io/darkfi/arch/dao.html#db-merkle-roots #dev Title: DAO - The DarkFi Book #dev i have the tx_hash but not the call_idx when creating a snapshot #dev also it is missing from some places like Deploy #dev see here: darkfi/src/contract/money/src/entrypoint.rs:133 #dev right now runtime has: verifying_block_height, tx_hash, ... it seems natural to add call_idx too since it's a part of the 'calling frame info' #dev Sure #dev ok #dev ++ #dev !next #dev Elapsed time: 6.6 min #dev Current topic: darkirc status (by brawndo) #dev Just make sure all the tests work #dev Write rustdoc #dev Do clippy lints #dev etc. #dev will do ty #dev What's the status with darkirc, I see people are using it? #dev Should we be deploying more nodes? #dev there was a major update to net here: 1cd330b7986fb1a575ce3813e1db10f21b774b30 #dev it fixed a panic #dev so if everyone could update that would be great #dev i've updated, seems to work #dev i'm nearing finishing dao. was hoping to finish today, then will review net code #dev however i also want to modify src/net/test.rs to be more expansive and cover many diff cases #dev Nice, I'll setup a public node then and observe it for a while #dev i had some trouble syncing the event graph from my local node post-upgrade, it was complaining about a missing parent tip #dev dasman: what's the status on the event graph debugger tools? #dev nice you made the refinery into a new session, that's a good use of session #dev draoi: we have a working model rn, but working on a better one to read, like a browser #dev also about darkirc, there are some garbage nodes being shared around the network (i.e. not accessible peers that clog up the hostlist), i believe updated nodes should no longer share these peers, but lmk if anyone notices anything to the contrary #dev navigating through layers, and then in each layer navigate through events themselves and more details #dev yes hanje made my life easier aggregating everything in Session and having a bitwise indicator to distinguish refinery processes #dev yes hanje, ... (i didn't do that) #dev also now there's an ownership structure, so the proceses get destroyed on p2p.stop() #dev i was replying to you #dev was just clarifying for others #dev ++ #dev Nice #dev !topic xz #dev Added topic: xz (by HCF) #dev !list #dev Topics: #dev 1. remove get_verifying_block_height_epoch() (by hanje-zoe) #dev 2. xz (by HCF) #dev upgrayedd: can i delete this call? #dev !topic repo status (wallet) #dev Added topic: repo status (wallet) (by brawndo) #dev there's a few cleanups still to do, now for example since we can distinguish refinery stuff we don't need to print an error when a node disconnects following refinery process (expected behavior) #dev is it used anywhere? #dev !next #dev Elapsed time: 5.9 min #dev Current topic: remove get_verifying_block_height_epoch() (by hanje-zoe) #dev darkfi/src/runtime/import/util.rs:240 #dev darkfi_sdk::blockchain::block_epoch(env.verifying_block_height) #dev i could instead do: #dev darkfi_sdk::blockchain::block_epoch(get_verifying_block_height()) #dev so it doesn't need to be its own host function #dev (good to reduce host functions where possible) #dev oh yeah good then yeet #dev ++ #dev !next #dev Elapsed time: 1.5 min #dev Current topic: xz (by HCF) #dev in the last few days there was a backdoor discovered in the tool `xz` (which does compression like zip or tar etc.) #dev I think the consensus is that most people aren't affected but would still recommend people check their servers and workstations for a vulnerable version #dev ++ #dev general solution is to update with pacman, apt, etc. which will downgrade to a safe version #dev ACTION not a systemd user #dev NO LINUX IS MORE SECURE #dev Yeah do your updates folks #dev upgrayedd: ah yeah so i heard it's due to systemd, right? #dev imagine using systemd #dev i think it is integrated with systemd, yes #dev hanje-zoe not due to systemd #dev the exploit makes use of systemd afaik #dev i was trying to understand if that's the case, only systemd lol #dev it just expects you to use it #dev so if you don't it fails to do its job #dev aha wonderful #dev ACTION not affected #dev ACTION we are  #dev so e.g. void was on the backdoored version, but not an issue unless systemd was also manually configured for void #dev who uses void and systemd? lol #dev contrarians #dev Still, perform your system maintenance #dev anyway good advice HCF, updates are not lighthearted #dev ++ #dev yeah for sure, also we do have install instructions for like deb-based stuff so wanted to give a PSA that people might be vulnerable #dev word #dev i love updating, it's so low effort and feels like a mini-christmas #dev even though most here are too advanced for such basic OSes #dev the only deb based that matters is devuan and its derivs #dev Update your Macbooks sers #dev lol #dev esp when you see gimp or blender have a new splashscreen and updated styling #dev !next #dev Elapsed time: 4.5 min #dev Current topic: repo status (wallet) (by brawndo) #dev current status: broken #dev Wondering what's left to do before we launch a testnet #dev hanje-zoe: run make clippy before commits lol #dev DAO is being finished I suppose? #dev yep i will, just on a roll rn #dev will fix it today later #dev Then the last thing is the wallet updates #dev (I think) #dev nice #dev yes DAO is so so close, it took way too long because of indecisiveness #dev yeah I guess so, and test all the functionalities somewhat work locally #dev Yeah #dev but we did benchmarks and now should be finished tmrw #dev pre-push hooks could be nice #dev even sync is not "crusial" for testnet #dev I started on an external smart contract for IRC ratelimit nullifiers #dev coool #dev So I want to use the testnet to deploy it there #dev i just updated DAO::propose(), now doing DAO::vote() (will add call_idx .etc) #dev And we could have a testnet RLN stuff working #dev that's wicked #dev ++ #dev hanje-zoe: I added the get_tx() runtime call, will add the get_tx_location() in a bit #dev maybe we could give a grant to weechat to implement proper buffer ordering #dev had to do some impulsive cleanup on the blockchain database code #dev upgrayedd: ty np, i just have the code commented #dev it's no rush, it will be ez to upgrade once ready #dev hanje-zoe: Only if you say it's for Matrix :P #dev (Then they'll do it) #dev is that a joke? #dev Yes #dev lol #random dasman, okii im free whenever #dev ah oki lol #dev i think they want to add edit/del messages to IRC #dev which would bring it into the modern age #dev needs gifs and emoji reacts #dev I can't take it anymore #dev plz no #dev hahaha #dev IRCv3 has reply to message tho #dev :heart: :fire: #dev they are talking about base64 embedded images #dev ⊂(◉‿◉)つ #dev would be nice for latex rendering #dev lets not deviate... #dev kek #dev end the meeting and continue the degen discussion after #dev !next #dev Elapsed time: 4.8 min #dev No further topics #dev !end #dev Elapsed time: 0.0 min #dev Meeting ended #dev devs gotta eat #dev It's 1st of April so I approve everything #dev oh yeah happy april #dev :D #dev lol #dev oh that's great cos i want to add a russian roulette function to the runtime #dev Good meeting #dev \o/ #dev ++ #dev o/ #dev hanje-zoe: whackd.exe #dev o/ #random https://vitalik.eth.limo/general/2024/04/01/dc.html #random Title: Degen communism: the only correct political ideology #random lol #dev haha #random > April 1 #dev anyway cu later, glhf everyone #dev cya #dev cya all #dev bye #dev enjoy your meal upgrayedd #dev Testnet in two weeks(TM) #dev here_we_go_again.jpg #random the naming is a troll but i think he means it tho #dev > hanje-zoe: loopr: delete "impl WIF for Foo" completely #dev draoi: What are the seeds to use for the current darkirc network? #dev but then I can not write any test no? #dev loopr: put it in the mod test #random interesting, will take a look #dev darkfi/src/zk/gadget/smt.rs:243 #dev ah ok #random it's kinda semi trolling #random i remember he did a similar thing a few years back #random https://www.coindesk.com/markets/2018/04/16/vitaliks-serious-joke-the-case-for-ending-ethereum-inflation/ #random Title: Vitalik's Serious Joke: The Case for Ending Ethereum Inflation - CoinDesk #dev want to say smth about the generator constants stuff? #dev at least one of these seeds should work: seeds = ["tcp+tls://anon-fore.st:5262", "tcp+tls://xeno.tools:5262", "tcp+tls://dasman.xyz:5262"] #dev brawndo: shouldn't this code be an assert (inside WASM)? darkfi/src/sdk/src/util.rs:71 #dev brawndo: if you recv hosts which look sketchy (specifically many many peers with the same ip but diff ports) lmk which connection you recv them from if poss #dev loopr: look in src/sdk/src/crypto/constants/fixed_bases/, then you see in zkas proof files (*.zk files project wide) we have a constants section at the top of the file. These load constants inside the ZKVM (see darkfi/src/zk/vm.rs:654 #dev but zkas needs to be modified to allow specifying arbitrary constants, which are generated using the halo2 function find_zs_and_us() #dev (as well as supporting these hardcoded constants) #random : Test #random Test back #random : Test back #random <74005129149006289431428825241887> test #random test back #dev biab #random okay everything is updated including seed #random airpods69: could you try now #dev upgrayedd: how does get_last_block_height() and get_verifying_block_height() differ? aren't they always the same thing? #random I just did, seems like DAG synced successfully now so thats a plus and I see no errors yay #random awesome! #random Send a test #random : test #random test back #random : test back #random : \o/ #random : Welcome #random Huh so I don't see your message on random in darkirc but I see those here through mirror-bot, is that normal? #dev : @zero pushed 1 commit to master: 69cf9c3a1a: runtime: add missing get_tx_hash() #random no #random do you have firewalls set up or smth #random Hmmm I cant remember any when I installed the distro, but I'll check #random also check on bin/dnet #random To see what's you're darkirc node is connected to #dev hanje-zoe: Avoid asserting when you can #dev hanje-zoe: when you are retrospectivly validate blocks no, last_block_height can be greater that verifying_block_height #dev draoi: Thanks, I'll try it soon #random checking #random okay for firewall, doesn't seem like I have iptables running so that shouldn't be there #dev also verifying block height in normal operation would be last_block_height + 1, but again depends on execution pattern #random I have no clue what I am looking at in dnet... there are a couple of "sleeping" with tcp+tls://dasman.xyz:26661 and tcp+tls://ohsnap.oops.wtf:31337 #dev their usage right now is to validate runtime correctness #random ok so you're connected to my peer #dev aka the node is correctly using the proper last+1 height as its veryfing height in PoWReward #random i use that peer directly to send msgs , but idk why you don't see them #dev if they try to validate a PoWReward call thats not following this pattern it will fail #random if anything there is a constant disconnect and connection of outbound slots going on #random : I do see some messages after I reconnected, guess those are from the buffer? #random : test #random test back #random : test back #random : dasman, could you try dropping a text here? #random : Sure #random : Test1 #random : Test2 #random : Yay, I can see it #random : Awesome!! #random : I turned down the outbound connection to 2 (both to your seeds) and it started to work. Nicee #dev aha thanks #dev brawndo: it's an internal bug though if this is triggered so it should be fine to assert here (since it's a logic error if so) #random : It should work regardless of outbound connection number (as long as it not zero) and as long as you're connected to a peer #random : But happy it worked for you #random : bbl #dev : @zero pushed 1 commit to master: 9074440105: runtime: remove call_idx from the payload, and add it as a Runtime param #dev upgrayedd: ^ you might want to check i haven't made any errors there (it's a small commit) #dev : @zero pushed 1 commit to master: 98fb3af981: runtime::{smt, merkle}: add missing call_idx to db_roots data #random test #random test back #dev : @zero pushed 1 commit to master: 732b9ae38a: drk: 'fix' make clippy error (just a temp patch) #dev : @zero pushed 1 commit to master: 83f5898de5: DAO::vote(): now with SMT flavor #dev DAO is done! #dev \o/ #dev noice #philosophy Hey channel, very interested in this project #philosophy But I have one question #philosophy Darkfi laudably positions itself, if I understand well, through a "lunarpunk" and "going dark" philosophy, as antiauthoritarian and antistate #philosophy Is there a longterm vision, in the sense, is it a parallel structure meant to exist forever, because it perceives "the enemy" can not be defeated? #philosophy Or is there some "post" phase, when it is assumed that (with more or less help of darkfi) the oppressive nature of those structures have been overthrown, and a new phase starts? #dev : @skoupidi pushed 1 commit to master: dad7577bed: blockchain/tx_store: new tx location tree added #dev hanje-zoe: ^^ #philosophy hey dotanon, great line of questioning #philosophy lunarpunk positions itself as a "non-state" rather than an anti-state for precisely this rzn #philosophy it wants to direct the focus to what is beyond the state, rather than the purely reactive position of being a negation of state power, which is the trap that anarchism typically has fallen into #philosophy Oho interesting #philosophy it's an unfinished project, but the goal of lunarpunk imo is to provide concrete examples of what a non-state looks like (thru e.g. scifi), while also manifesting this world (i.e. in life/ software etc) #philosophy Me liking #philosophy :) #philosophy Are there any resources to read or watch about such concrete examples? #philosophy rojava is a pretty strong example of a non-state #philosophy there was a good article, let me dig it up #philosophy I am aware of Rojava in its rough contures #dev Sended a PR #dev https://github.com/darkrenaissance/darkfi/pull/266 #dev Title: Minor documentation improve - Clarify anonymous assets page. by AgustinBadi · Pull Request #266 · darkrenaissance/darkfi · GitHub #dev just a minor fixes in the docs #philosophy https://www.resilience.org/stories/2024-02-01/beyond-and-against-homogenisation-advancing-diversity-through-democratic-confederalism/ #philosophy Title: 403 Forbidden #philosophy Thank you #dev : @skoupidi pushed 1 commit to master: 85c80e1bd3: blockchain: store txs locations using the new tree #dev : @skoupidi pushed 1 commit to master: e8cb2d1f51: script/research/blockchain-explorer: updated to latest darkfi structures #random test #random test back #dev reporting in, ready to get buttered #dev crumpet https://ibb.co/YfF2Hg3 #dev Title: sandwich-mayo hosted at ImgBB — ImgBB #dev just what I've been looking for #dev can't get this script to aggregate all channels to work #dev hanje-zoe: > also the last lines in from_wif() are uneccessary. why are you doing this? Err(e) => Err(crate::Error::from(e)) #dev Because the Encodable/Decodable traits don't return a darkfi::Result/Error, but std::io #dev so afaics it's either that or we change the return types in those traits? #random test #random test back #random test #random test back #random oh now it works, weird #random I don't think a vpn connection should cause much trouble, right? Libera.chat or lainchan.org don't let me connect if I have a vpn connection for some reason #random https://twitter.com/PopPunkOnChain/status/1774856567512277081 #random Pop Punk(@PopPunkOnChain): Hey BlackRock... What the fuck are you doing??? https://t.co/7LtefeGzjp #random lol #random https://twitter.com/PopPunkOnChain/status/1774859850884821370 #random Pop Punk(@PopPunkOnChain): The BlackRock token contract reverts if you try and issue tokens to a wallet that has a Bored Ape in it. I'M FUCKING CRYING WHAT THE HELL LMAO. https://t.co/Qn1aWuD3Fa #dev hanje-zoe: nice spotting the potential underflow when cutting the decoded bytes, thanks #dev should we allow empty object encoding/decoding? #dev currently updated PR to check for a min length of 6 decoded bytes - 4 checksum, 1 prefix, and at least one payload #philosophy thanks for clarifying that draoi, interesting. i wonder about that distinction between non and anti, and how the non-state approach does still create a foundation of undermining centralized power. #philosophy the non-state approach is inherently undermining centralized power because it is usually assumed to be based on direct democratic structures, local councils and popular assemblies #philosophy often actively and consciously trying to inhibit accumulation and centralization of power #philosophy Graeber and Wengrow's "The Dawn Of Everything" report extensively about such pretty common but not so well-known examples in history #philosophy my persoa #philosophy personal pov of course #random A thread about if crypto is solarpunk or not... #random https://www.reddit.com/r/solarpunk/s/0t2Ljunf4z #random Title: Blocked #random i am absolutely stunned about such negative perception of that sub #random labels just contribute to division rather than unity #dev ah ok well do Ok(foo?) instead #dev instead of match ... Err(crate::Error::from(e)) #dev : @AgustinBadi pushed 2 commits to master: 89bc896bd2: Improve anynomous assets page - Clarify terms of the explanation #dev : @AgustinBadi pushed 2 commits to master: bb47e7ef0b: Improve anynomous assets page - Add minor explanation #dev otherwise looks good, Ok(Self::decode(&decoded[1..decoded.len() - 4])?) #dev : gm #random https://techcrunch.com/2024/04/01/chat-app-telegram-challenges-meta-with-the-launch-of-new-business-features-and-revenue-sharing/ #random Title: Chat app Telegram challenges Meta with the launch of new 'Business' features and revenue-sharing | TechCrunch #random alkaloid: what's surprising about it? #random those people in reddit are really stupid #random hanje-san: nothing really, regfi in full force.. lol #dev gm #dev greets #dev sire #dev gm #dev o/ #dev : @draoi pushed 1 commit to master: 4d0c36a508: hosts: reject peers from other hosts that already exist on our greylist... #random : test #random test back #random : test back #random : test #random test back #random : test back #dev : @zero pushed 1 commit to master: 9188a62bb3: smt: simplify ZK gadget. Use `root = sparse_merkle_root(pos, path, leaf)` instead of the more complicated `is_member = sparse_tree_is_member(root, path, pos, leaf)` #dev draoi: I can see my darkirc making duplicate connections (in the logs) #dev Connecting outbound slot #3 [tcp+tls://31.10.162.198:63304] #dev Connecting outbound slot #2 [tcp+tls://31.10.162.198:63286] #dev Connected Inbound #0 [tcp+tls://31.10.162.198:63316] #dev upgrayedd: i introduced a new TransactionHash type in sdk/src/tx.rs, i'll update your SDK funcs to it but np if you prefer blake3::Hash then we can switch to that instead #dev Connected Inbound #0 [tcp+tls://31.10.162.198:63356] #dev they are not duplicates, the ports are different #dev these are spammy/ hostile nodes #dev not sure why they're still being broadcast, i'm receiving them from the dasman seed #dev there might be something i'm missing... looking into #dev okay\ #random test #random test back #dev Maybe it would be useful to have an array of IPs we can manually blacklist in the config toml #dev yes that's a good idea #dev : yo #dev : Hi p #dev : nice :D #dev heh I don't see your msg there #dev damn did your event graph sync already? #dev : echo #dev echo back #dev : echo back #dev Yes on attempt 1 #dev nice #dev I'm not running in verbose mode though #dev could be my event graph #dev : hi #dev : Hi #dev Not seeing it, no #dev damn #dev i can see the event graph doing stuff when i sent a msg, like it seems to be working #dev upgrayedd: also your db is saving (block_height:u64, tx_idx:u64), at least the tx_idx should be u32 (or even u16). you halve the size of this internal DB while leaving the public API to use u64 #dev : @zero pushed 1 commit to master: b24cde844c: dao: add usage of get_tx_location() #dev : @draoi pushed 1 commit to master: 84dcc54433: net: add blacklist field to settings and avoid for duration of program. #dev : echo #dev echo back #dev : echo back #dev : Now I'm seeing the history draoi #dev : ok nice #dev : ah yes, and this too :) #dev : yay #dev : I restarted with -vv lol #dev : That slows down the daemon considerably though #dev : @zero pushed 1 commit to master: b6e8c00243: replace all data strings output as [123, 78, ...] with big endian hex strings. #dev : did you rebuild w the blacklist feature? i blocked dasman seed and it cleans up my node activity significantly (no longer receiving spamming peers) #dev : btw what do you guys think og having blacklist avoid connections to a Url host_str rather than host_str + port? i.e. we block all connections regardless of the prot #dev : Will do later, I want to observe the node's activity a bit #dev : /s/prot/port #dev : ++ #dev : Why not support both? :) #dev PKS/VKS in test-harness- will update these later once finished my patches #dev : yeah both is good #dev ugh nix is broken on gentoo again #dev i didn't know you're a nix fan. #dev I'm not, but it's the only thing we can use to have reproducible wasm builds #dev ah #dev : @zero pushed 1 commit to master: afa66e2bb0: MerkleNode: display as hex string instead of base58 #dev : @draoi pushed 1 commit to master: 318c7bef49: inbound: remove duplicate call to unregister()... #dev ^ whoops, that was a bug #dev hanje: well blake::Hash and TransactionHash are both [u8;32] so it doesn't matter really whats is used, feel free to update everything for comformity #dev ok cool ++ #dev u64 was used for prototyping lol #dev was going to reduce to u8 tbh when updated height to u32 #dev u16 might be the sweetspot #dev nice #dev why did 89bc896bd26f7f9467e433ff9900ecbc2b100682 and bb47e7ef0bbb0827639991a985e2bb4d24097c6d were pushed to the repo? #dev they are unformatted #dev ah well i merged the changes by ash, nbd #dev yeah its nbd, but don't blindly merge stuff #dev ok i did skim it though and seemed good #dev well the content is good, still since we use specific code/doc style, it should first follow it and then get accepted #dev ++ understood thanks #dev professionals_have_standards.jpg #dev hanje-san did you check if the runtime fns work? #dev I didn't test them #dev i am debugging get_tx_location() now, i can't get it to work #dev snippet? #dev darkfi/src/contract/dao/src/entrypoint/propose.rs:155 #dev if you uncomment this, then run `make test` inside src/contract/dao/ then you'll see the error. I'm now dumping the DB to see the contents (maybe the endian is reversed?) #random https://rbren.substack.com/p/banning-open-weight-models-would #random Title: Banning Open-Weight Models Would be a Disaster #dev bruh #dev check the rustdoc #dev you have to deserialize the tuple #random lmao biden wants to ban open models like llama, stabel diffusion and mixtral looool #dev src/sdk/src/util.rs::166 #dev oh wait you change it? #dev yes ofc #dev the issue isn't deserializing, it's the tx hash #dev brawndo: does that decoding count towards fee? #dev since its in the sdk code, not in the wasm function #dev Any non-host function will accumulate gas by the wasm metering #dev it's quite fast and everything uses gas #dev ok so sdk calls are accounted for right? #dev yep #dev hanje-san btw since you changed the fn, also update the rust docs lol #dev yessir #dev btw make test fails with: Parser error: Unimplemented opcode `sparse_merkle_root`. (line 48, column 22) #dev had to first run make test on root repo #dev I think it runs now #dev ACTION promises to write comments & rustdoc afte #dev yeah zkas changed so it needs to be recompiled (make zkas) #dev yy I figured #dev huh weird, i dumped the location tree, and it only shows 1 entry #dev with a value of 00000000000000000000000000000000 #dev what did you use to dumb? #dev you can use script/research/blockchain-explorer #dev but I guess you are dumbing in-memory db #dev let tree = &wallet.validator.blockchain.transactions.location; #dev for kv in tree.iter() { ... } #dev mine fails at building dao mint tx #dev rm test-harness/*.bin #dev rm src/contract/test-harness/*.bin #dev yy the vks/pks #dev yeah the single entry is correct #dev as db has only the genesis block #dev which contains a single dummy tx at (0,0) #dev the test-harness calls wallet.add_transaction() in lib.rs a bunch of times, which calls self.validator.add_transactions([tx]) #dev remember test-harness doesn't generate blocks #dev it simply adds the tx mutating the contract states #dev ah ic #dev tricky #dev ah maybe i can just mutate the DB as a hack LOL #dev yeah #dev just add it directly to the DB #dev haha oki #dev append the location entry #dev you have access to tx_store through the overlay #dev yeah you even made .insert_location, rz #dev ez #dev ;) #dev remember to also add the tx #dev since iirc add_transaction only apply them, not store them #dev what happens if i don't #dev ah we are already adding the tx #dev are you sure? where? #dev self.validator.add_transactions(&[tx], block_height, true, verify_fees).await?; #dev upgrayedd | since iirc add_transaction only apply them, not store them #dev oh right you mean the contract store #dev yeah that just applys the state transitions to the db #dev headers,blocks and txs are only stored through blocks #dev its an aux function #dev nice good info, you saved me a lot of wasted time lol #dev Check the money integration test to see how to make new blocks #dev : @zero pushed 2 commits to master: 88c39e5861: dao::propose(): fix get_tx_location(), by making the test-harness write the txs and their locs to the DB inside wallet.add_transactions() #dev : @zero pushed 2 commits to master: ed01a1a76a: test-harness: update vks/pks hashes, put back to info and fix docstring in sdk #random I don't think Biden makes any decisions #random He's just a wrinkled puppet #dev i think it's good actually to have specialized BlockHash and TransactionHash types #dev looking over validator/consensus code, it's hard to see which blake3::Hash refers to what. they all kinda blend in together #dev hanje-san: wrappers are always usefull codewise #dev hanje-san: When staking for IRC accounts, should the staked amount be public? #dev I'm not sure what to do in the case we keep it private, we could only do some threshold #dev brawndo: i'd make it public and just have fixed denominations #dev we can always make it more anon later #dev Sure thing #random biden is like the W40K god-emporor, he has psychics reading his mind and interpreting his will #dev : @draoi pushed 2 commits to master: 24ec6fffd7: doc: add cautionary comments about unregister() #dev : @draoi pushed 2 commits to master: c47630366c: refinery: acquire exclusive lock on greylist before refining... #dev ^ fixed another bug #dev this one was causing a panic... recommend updating nodes... sorry bros #dev np #dev brawndo: here? #dev Hey yep #dev hanje-san: updated with suggested fix #dev ty #dev how does Ok(Self::decode(...)?) get rid of an otherwise incompatible return error? #dev did you try it? #dev ran tests and they succeed #dev oh it literally applies return Err(From::from(err)) #dev for the Err branch #dev hanje-san: I see that BlockInfo::full_hash() is not used, so maybe just yeet it? so it doesn't confuse anyone that might try to use it #dev yeah that's a good idea, i'll delete it here #dev gg #dev loopr: #[derive(Debug, Clone, thiserror::Error)] <- can you remove thiserror #dev oh wait nvm #dev if it's ok, i'll directly apply the file since your commit log is messed up #dev or you can cherry pick your commits onto a new branch, squash them and then reopen the pull req #dev in the future, it's not good to make a branch, then merge master onto that branch unless it's a long running branch (this is for a feature) #dev esp since you merged rather than rebasing #dev hey I have some problems with taud. In deamon: "cannot discover addresses". when I try to add a task I get "you dont have write access". I rm config, pulled, recompiled and taud --refresh but it doesnt work. anyone could propose what I can do now? #dev dasman: ^ #dev reka: what seed are you using? #dev same as before ["tcp+tls://dasman.xyz:23331"] #dev can you refresh and comment the seed and set peers = ["tcp+tls://dasman.xyz:23332"] #dev ++ #dev : dasman started task (yWx0dR): event graph tool #dev hanje-san: I have already been corrected to not do the master-to-branch merge #dev I did it once now I got it and have been rebasing since #dev feel free to complete if you want, I also already squashed once I thought #dev or let me know your preferred steps #dev : echo #dev echo back #dev : echo back #random : echo #random echo back #random : echo back #dev hanje-san: ping #dev https://ethresear.ch/t/optimizing-sparse-merkle-trees/3751 #dev Title: Optimizing sparse Merkle trees - Data Structure - Ethereum Research #dev hanje-san: Can you please review if this is fine for removing leaves from the SMT? https://termbin.com/r7f8 #dev ok eating, will print and look tonight #dev It's trivial, I don't think you should have to print it #dev It's more about the API #dev The usecase is for RLN, because for slashing, we remove the identity from the tree #dev So further inclusion proofs become invalid #dev just at night i try to avoid screens since i can't sleep otherwise #dev do we do slashing? #math hello #philosophy hellol #philosophy fatback: hi #philosophy loopr: how's it going? #dev hanje-zoe: "but zkas needs to be modified to allow specifying arbitrary constants" #dev you have already an idea/requirement for how that interface should look like? #dev or shall I propose something #philosophy pretty good, you? #dev iiuc each of the constant providers has to provide the same set of constants, which also can be empty #philosophy loopr: ya i think i agree with that. if the state is a totalizing power that tries to reproduce itself and its logic, then anything that undermines it would have some kind of 'anti-ness' to it. #dev so maybe a trait `ConstantProvider` with a `fn get_consts() -> ConstList` with `ConstList` being a struct with the required constants? #philosophy at the same time, one could just simply be non-state and seek to go off the grid and escape state power, so it's more of a passive response rather than a transformative one. #random test #random test back #philosophy wow: I would even say myself that such an "escape" as you put it is very much active #philosophy i guess in other words, can a state really co-exist with movements that passively undermine it by creating alternative spaces? #philosophy it may just not be very effective in creating network effect. It's more of a "personal active" action :) #philosophy network effect would definitely bring about an eventual 'anti-ness' to non-state actions #philosophy the state will happily coexist with such movements as long as they don't threaten its own existence #philosophy at which point they will try to suppress them #philosophy it could also be some kind of mechanism for the state to allow alternative movements to settle down and not actively challenge its authority #philosophy aha yeah that's exactly what i was about to say #philosophy ++ #philosophy any hegemonic power will try to co-opt it's opposite. #philosophy its #philosophy sometimes funny to see lol. #philosophy absolutely #philosophy love reading this exchange, you two! #philosophy +1 #random hello #philosophy please chime in guys if you feel like #philosophy and ladies #philosophy popped in around the last several exchanges but what's coming to my mind from these exchanges is the validity of something like a parallelni polis. #philosophy thanks fatback, i always appreciate a good exchange of ideas #philosophy a very "active" group in the above terms #philosophy regarding the state not being comfortable with coexiting with alternative movements - the states are increasingly adopting and enforcing digital id, survelliance and other tools that are sold as efficient systems to the masses while easily entrapping the populace in walled gardens. How do the non-state entities compete with systems that appear so efficient? #dev why can I not find any references to the `synthesize` call in zk.rs? #philosophy anon, i think it's by creating independent organization that creates its own form of community control/power. #philosophy which brings me to a similar point.. i think effective non-state movements must be anti-, in order to grow and florish and create independence. real independence, with real responsbility and democratic control. #philosophy none of this fake stuff that just reproduces pre-existing power structures, whether state or by private/monopoly capital that fuses and controls said state #philosophy IMO the state is in no way a monolithic entity even though its effects on society (e.g., surveillance, control) becomes monolithic; the state can be an arena of control and one that might need to be transformed itself #philosophy wow: for my clarity, would you mind providing an example of "fake stuff". I'm not critiquing, just wanting to understand. #philosophy fatback: i was thinking more generally. environmental problems? hey just buy organics... issues surounding imperialism and trade? just buy fair trade coffee! #philosophy I follow. Thank you. #philosophy too many oppressed ppl forming leadership to create independent communities? slander and crush dissent and create a day to celebrate, i guess? #philosophy own form of community control/power is one leg in my opinion #philosophy there are some lessons to be learnt from the open source movement #philosophy fatback: take some recent discussions about a basic income. now that's not a bad thing really, considering ppl are getting screwed by rising prices, and all.. but really, what is that basic income going to do when all of it goes to rent. it's basically a subsidy for landlords #philosophy like, it created great software, you don't really need google drive, word/excel or photoshop today #philosophy loopr: ya that's a great example i think. it's universal. even private companies that depend on proprietary work have to engage with open source. #philosophy it's just better #philosophy however, even after creating more or less great pieces of software (and if we think linux, great example of cooptation as you mentioned), it did not yet manage to topple the established structures #philosophy that's a shame :) #philosophy ...yet #philosophy hehe #philosophy we also have to compete with their manufactured "convenience" #philosophy To topple or to supplant? #philosophy maybe best "to make obsolete" #philosophy in the sense that people just flock to the new system *as soon as it makes their life better* #philosophy this is especially important with currency #philosophy ya, so many alternative movements create charity/networks/education/social services in light of a failed state. #philosophy i don't think we wait for the collapse of the state to create those alternative systems #philosophy we be ded then #philosophy ++ #philosophy +1 #philosophy <3 #philosophy can you expand on the lessons to be learned from open source beyond the technical? #philosophy For instance, are there lessons to be drawn from the community that would be applicable to... I don't know, the distribution of mail, hahahah. #philosophy fatback: tl;dr 'everything free, gimme gimme' lol jk #philosophy in positive lessons: absolutely. open source projects are blueprints for democratic direct organizations #philosophy it's actually a great question, given that open source 'shines a light' to ensure structures and systems are transparent. who wants to run crap that ppl have no way to verify or understand what's going on. #philosophy it's a great question given this project and the dark forest, considering pure transperency can be an issue with the oppression that can happen etc #philosophy in negative lessons: being open-source, or privacy-respecting, or censorship-resistant is sadly often not enough for the big public #philosophy That's absolutely correct. #philosophy need to be afk for a while, pls continue the convo #philosophy i have friends and i beg them to use linux or get an understanding of it. even with all the junk being introduced into windows, sometimes you just can't get them on it.. DESPITE the fact that the internet runs a lot on open software and all that #philosophy Try to get your cousin or friends to switch from fb messenger to signal and you'll feel like you're on trial defending yourself. #philosophy now i just shame them #philosophy i know right? #philosophy like ffs whatsapp uses signal backend, supposedly #philosophy i have zero trust they aren't doing typical facebook shit #philosophy It's an enormous amount of inertia to overcome. #philosophy whatsapp canot be built from source and is not verifiable #philosophy anon: but 'i have nothing to hide' #philosophy sigh #philosophy simply uninstalling whatsapp is what I did since fb bought them, and I was a paying whatsapp user since 2012 gien their stance of ad free and never sell data #philosophy what do you think could be a reason for such inertia? Convenience? Network effect? #philosophy Features? #philosophy ya i think it's a bit of all that. it's just lack of volume and ppl just not caring i guess #philosophy there was that winter 2021 push that knocked out signal for a few days lol #philosophy how whatsapp was gonna scrape all phonebook data #philosophy whatsapp and meta aggresively builds regional features like local payments and integrations and "improves" the product for better/faster text/audio/video #philosophy ya, many parts of the world have shitty internet, and whatsapp is pretty good at that, i think. #philosophy i don't think signal video calls are as compressed #philosophy looping back, no pun intended, to loopr's point about privacy not being enough...what do we think PPTs should incorporate to be enough for the broader public? #philosophy ppts? powerpoint? sorry im tired lol #philosophy Privacy preserving technologies. #philosophy gotcha #philosophy Actually, I'm an idiot. It's PET. Privacy Ehancing Technologies. #philosophy i believe in the build and use it, and they will come. let all the proprietary junk burn out their users with enshittification. and ppl will shift eventually #philosophy I like that you mentioned enshittification because I really like doctorow's compability concept. #philosophy doesn't it all just become trash? it's striking how true it is lol #philosophy i use youtube search, and i get results that have nothing to do with my search? #philosophy what the fuck google? #philosophy sorry i shouldn't swear, i dunno if i break some kind of community guideline here lol #philosophy xD #philosophy it doesn't bother me. #philosophy the swearing, not the enshittification, haha #philosophy :D k good #philosophy I've been trying to learn more about the Czech Parallelni Polis because I wonder how feasible something like that is on a larger and longer scale. #philosophy cool you'll have to explain it, i'm not familiar #philosophy The short of it is, under communist CZ a group of people formed a community as an antagonist to the regime while living within it. #philosophy ah, like autonomous communities? #philosophy They did not put on a violent revolution or anything. They simply undid what the communists were trying to do. #philosophy were they anarcho-syndicalists, like kinda sympathetic socially but against top down rule, or just straight up anti-government? #philosophy their kids still went to the state schools because they had to. But in the evening, this community had their own schools that the kids would attend that were antithetical to the state schools. #philosophy interesting #philosophy They great thing is, they actually won. #philosophy i don't know too much about cz history #philosophy https://wikiless.org/wiki/Parallel_Polis?lang=en #philosophy thanks #philosophy It's absolutely fascinating. #philosophy i just read up on him, says he was a defender of Pinochet, lol yikes #philosophy (Benda) #philosophy i am in full support of these types of systems, but i'm not completely convinced they, in and of themselves, will go completely unperturbed from the state. the example i tend to bring up is the waco seige. #philosophy or operation m.o.v.e. #philosophy basically every attempt at self organization will be dealt with #philosophy Black Panthers? #philosophy I have not heard of MOVE before. #philosophy Reading about it now, hahaha. #philosophy lol, yeah it's crazy #philosophy i mean, i don't know if the surrounding areas appreciated any kind of disruptions that occured, i can't remember, but just another example of an insane response #philosophy Another great example though to the concern I raise. #philosophy But we can also look at the amish as, perhaps, a success story. #philosophy apologies for all my examples being religious ones. they're just the examples I know most about. #philosophy no problem, that's a good example #philosophy i think we will find lots of communities, from different political ideologies, geographies, and cultures, facing similar issues #philosophy i think you're right. #philosophy what can we learn from the successes and failures of these communities that will help us forge our dark forest and lunar punk path successfully? #philosophy ya.. lots to learn #philosophy sounds contradictory, but maybe both overt movement and silent development. can't fully expose oneself cause of risks, but it's gotta gain some kind of public discourse acceptance #philosophy maybe pointing to parallels that already exist.. like there's a reason locked doors exist. #philosophy ppl want privacy and feeling of security #philosophy no one wants to be judged for any random thought they think, or half baked dumb ass idea they say outloud lol #philosophy i really think Smuggler was onto something when he mentioned disrupting the left half of the ooda loop for the state. #philosophy haven't seen #philosophy please hold...haha #philosophy k #philosophy https://yt.cdaut.de/watch?v=gTtbkguROdk #philosophy Title: Studio 1: THE PROJECT OF CRYPTOANARCHY - Smuggler - Invidious #philosophy It's a long video so kick back with a few beers and enjoy it. #philosophy nice, thanks for sharing ill have to watch #philosophy i don't want to take up all the space here so others feel free to speak what's been on your mind. #philosophy good discussion goin on for sure #philosophy i got things to do ill be in and out of here #philosophy take care! #philosophy fatback: yeah i was gonna say move has some interesting issues, and also apparently messed up things now that im reading more up on it. I don't really know much about them; only really brought them up generally was thinking about state response to.. i guess different communities #philosophy like mentioned above, i think finding different examples from different circumstances and groups can find a common response to non-state activity #philosophy you've provided a great example. #philosophy whatever the intensity or the shade, i guess #philosophy abstracting out, the more examples we have of communities opting out of the state the more we have to learn from independent of their particularly held beliefs. #philosophy i'm not interested in the branch davidians religious beliefs, i'm interested in how they lived as a community alongside the state and how they could've reinforced themselves against the batf. #math any have any good resources for learning FHE? #random test #random test back #philosophy enjoyed catching up #random test #random test back #random welp darkirc stopped working for me again (atleast no messages are flying through from there to here) #random Except for the constant connect and disconnect, I dont see a problem here: https://pastebin.com/QjQWdkTj #random Title: ➜ darkfi-darkirc git:(master) ./darkirc02:20:25 [INFO] Initializing DarkIRC n - Pastebin.com #random test #random test back #dev Hi upgrayedd: Sorry, saw that there was problem regard formatting the docs, how that is done? #dev to learn and avoid it in the future #random <46563> test #random test back #dev loopr: do they? can you give examples? #dev the way we operate is: write a doc, pass it around for review and feedback from others #dev i suggest you write a proposal and we iterate on that #math fatback: yes i do #math https://agorism.dev/uploads/zama-fhe-guide.pdf #math we could study it together #math found some links in history : https://eprint.iacr.org/2012/733.pdf #math https://agorism.dev/book/crypto/fhe/modern-cryptography-2_zhiyong-zheng.pdf #math https://github.com/darkrenaissance/darkfi/blob/master/script/research/tfhe/src/main.rs #math Title: darkfi/script/research/tfhe/src/main.rs at master · darkrenaissance/darkfi · GitHub #math but zama.ai seems newer and better #dev Understood #dev ash, i was referring to loopr, not you #dev ash: just what upgr was saying is about the line limit, normally we use 80 chars. it's not strict though (we break it in a bunch of places) #dev but good to adhere to #dev Good, no more of 80 chars, it is the only format condition? besides a good looking .md file hehehe #dev of course #dev Got it, will do #dev ash: yep it's the standard, see how we do all our text #dev which editor do you use? #dev have you ever tried (n)vim? #dev I heard nvim and I am here to promote it /s #dev our lord and savior #dev are you an emacs user? #dev Me? Would be a shame if I was #dev I even went against the lisp developer and used neovim to write code in lisp. Damn I annoyed them with that. Not that we were serious about it. #dev s/developer/developers #dev brawndo: can we add itertools? https://lib.rs/crates/itertools it's used by a bunch of crates like solana-runtime, plonky2, cairo, starky, lightning css, an ethereum serialization lib, .etc and lots of well known projs #dev Title: Itertools — Rust library // Lib.rs #dev i don't have a strong usecase for a specific thing, but i think in general it can lead to tidier code, esp things like izip macro could improve things in a bunch of places, also .try_collect() is very useful #dev let iter: Vec<_> = decode_hex("0a00").collect::>()?; #dev so with try_collect that becomes #dev let iter: Vec<_> = decode_hex("0a00").try_collect()?; #dev but if you prefer not to, it's also good with me too #dev airpods69: once other dev here is good and he uses gedit lol #dev just write ze fucking kods #dev wow lol #dev I never used gedit, either vi or straight to neovim. Back then vscode or notepad depending on which OS I was on #dev neovim/neovide (pretty cool neovim gui editor. I use it when I am writing something) #dev gm #dev o/ #dev hanje-san: I used to have itertools in zkas then removed it #dev Up to you tbh #dev ah ok #dev I just implemented what I needed #dev yeah i have no idea tbh, i trust your instinct #dev https://github.com/darkrenaissance/darkfi/blob/564089646d137ac91307b407dbd8d5d4b254ac1e/src/zkas/parser.rs#L1163-L1188 #dev Title: darkfi/src/zkas/parser.rs at 564089646d137ac91307b407dbd8d5d4b254ac1e · darkrenaissance/darkfi · GitHub #dev i like copying code snippets from random crates #dev Yeah that's fine too under a proper license #dev it's almost like they could just publish code samples/patches instead of crates #dev You can add it the function's rustdoc #dev (The copyright) #dev ah good to know #dev e.g. `Copyright (C) 1969 John Smith (Apache-2.0) #dev ok ++ #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/zkas/decoder.rs#L41-L44 #dev Title: darkfi/src/zkas/decoder.rs at master - darkrenaissance/darkfi - Codeberg.org #dev Or this lol #dev ^^ #math Here's an impl of order matching in FHE using zama's crate: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/script/research/tfhe/src/fhe.rs #math Title: darkfi/script/research/tfhe/src/fhe.rs at master - darkrenaissance/darkfi - Codeberg.org #random test #random test back #random seems darkirc mirror bot is down #dev Did you manage to look at the SMT patch? #dev btw we have a bunch of WASM fns mixed with generic SDK stuff. should we consider putting all the WASM fns in a subdir called wasm/? #dev i printed the text but my printer added margins that cut the text, will review it later today #dev Such as? #dev ok #dev for example util.rs or merkle.rs, there is also crypto/merkle.rs but they are separate things #dev these wasm fns aren't usable outside wasm, so maybe they should be segregated in a submodule #dev Perhaps #dev maybe we should have a 1-1 correspondence in src/sdk/src/wasm/ with src/runtime/import/ #dev I tried to make one of them generic, but yeah it doesn't apply to everything #dev (See sdk/log.rs) #dev aha that's a good idea. why not override println!()? i think the logger crate disables println #dev anyway nbd, msg!() is also clearer in wasm #dev I don't like overriding functions #dev hanje-san: i'm just making small polishes to net now, you can start reviewing if you want. just pushed some documentation but commit bot is down rn #dev That's usually more trouble #dev draoi: great, lmk once done and i'm ready #dev just trolling brawndo rn #dev lol #dev brawndo: ok i agree, but lmk about SDK wasm stuff. if you think it's a good idea, i will just add a redirection for current functions and add a #[deprecated] tag then cleanup after #dev for example db_get/db_set, i don't think can be generic #dev Well #dev Better to just do it fully than half the work #dev also now i want to copy Itertools .try_collect() into util.rs but it's squatted by wasm fns #dev ok i can do it np in a single commit, might take me 40 mins lol #dev make clippy is your friend #dev the TransactionHash was the worst but this should be ez #dev what name should it be? wasm_api? #dev darkfi_sdk::wasm::db::db_get #dev ok #dev 2 new nvim bindings this morning: #dev " replace word under cursor with current yank. Good for replacing fn names #dev nnoremap q "_dwP #dev " delete function body #dev nnoremap D Vk$%k"_d #dev brawndo: instead of adding flags to block hosts with the same ports we're connected to, should we just add generic fail2ban support and let it handle policy like that? #dev i see fail2ban is configurable to allow custom python scripts. so a python script could track which hosts we're connected to by scanning the logfile, right? #dev would that work well? #dev It wouldn't work well #dev My idea was to just have a fixed array in the toml where you can put hosts you don't want to connect to #dev ah ok #dev draoi: you should make the filter policy a configurable trait #dev and then make a settings section called [net.filter] #dev that way we can later upgrade it as needed #dev so rn we just have `blacklist` in settings which is a simple solution and works well #dev yeah put blacklist under filter #dev the idea was to add something like `blacklist_all_ports` which would allow us to blacklist all the ports of a given peer, if configured #dev yeah like a HashSet #dev you can use "*" to indicate, apply setting to all hosts #dev make a trait called FilterPolicy with its own settings, and segregate all this stuff there #dev that way later we can do .set_filter_policy(FancyPolicy) or DefaultPolicy .etc #dev ok that makes sense #dev Just do: #dev "tcp+tls://foo.bar" if you want to block all ports #dev And "tcp+tls://foo.bar:123" for a specific port #dev ++ that's even simplier #dev that can be represented with an enum #dev You don't need an enum, you just need a hashmap of <"scheme://host", [port]> #dev true #dev if map["scheme://host"].is_empty() { block_all } else { block_ports } #dev i thought we were just talking about rust Url which has the method port() that returns an Option #dev that looks good too #dev if port().is_some() .. #dev yeah better than what i said #dev You should have a blacklist hashmap #dev brawndo: darkfi/src/sdk/src/crypto/util.rs:110 #dev And if you are blocking all ports, then the map would be (host, vec![]) #dev how can i modify this to be cleaner? #dev Otherwise it would be (host, vec![1,2,3]) #dev is there a way i can do .into() with a turbofish? #dev match Self::from_repr(bytes).into() { Some(v) => Ok(v), None => Err(ContractError::HexFmtError) } #dev Self::from_repr(bytes).into::>().ok_or(|_| ContractError::HexFmtErr) #dev Look at that haskell dev #dev the thing is i cannot use .into() with generic args so no idea how to coerce CtOption to Option #dev What I gave you should work #dev https://termbin.com/4g25 #dev This passes clippy #dev ok sure #dev lol #dev Option::from(Self::from_repr(bytes)).ok_or(ContractError::HexFmtErr) #dev i added license attribution and project link for itertools: darkfi/src/sdk/src/util.rs:21 #dev they don't have any copyright notice or year listed anywhere #dev https://github.com/rust-itertools/itertools #dev Title: GitHub - rust-itertools/itertools: Extra iterator adaptors, iterator methods, free functions, and macros. #dev Choose the cuck MIT license #dev haha i did #dev I pushed smt del #dev My test case is asserting that the inclusion proof fails after removing the leaf #dev smt.remove_leaves(vec![(pos, leaf)]).unwrap(); #dev assert!(!path.verify(&smt.root(), &leaf, &pos)); #dev yeah the path changed #dev btw you should move for _ ... {} into a fn called .recompute_tree(dirty_idxs) #dev internal fn #dev ok will do #dev 0d3b3cf77c1b8d1a4e9debf9f1a534fe48df7c1b #dev Why this though? #dev You could've just imported the methods directly, not the module #dev i already had the comment queued but got a rebase conflict #dev in general throughout the contracts, we're using wasm::foo() rather than foo() #dev *the commit queued #dev Doesn't make sense #dev i tried to push commits but there was a conflict #dev I'm saying doesn't make sense to use wasm::foo instead of foo #dev Everything is wasm there :D #dev ah we can change it if you want, i thought it looked nicer lol #dev everything in src/contract/ calling the host wasm fns is wasm::foo() #dev maybe it should be host_api or wasm_host_api? #dev It should just be foo() #dev You import the functions you need on top of the module and you know where they come from #dev We took this same reasoning against importing foo::* #dev So let's stick to it #dev Also IMO it looks ugly lol #dev i don't feel strongly but to argue my point: i think the host functions are special, and indicating that with a prefix makes the code clearer at first glance #dev Why are they special to a contract dev? #dev A contract dev just wants to use the provided API and shouldn't care where the function is #dev Nor care about the internals #dev ok #dev I think this makes it more confusing, since it's introducing another namespace #dev And called "wasm{_api,_host}" on top of it all brings more weirdness #dev sure i guess the contract dev doesn't care #dev On another note I'm a bit scared of the asserts in runtime/ #dev This crashes the node #dev Why not handle some things gracefully instead of using expect/unwrap #dev the node should crash #dev It won't crash fully, it will panic a thread #dev And leave the node in limbo #dev oh that's bad, it should crash the node. How can we propagate panics? #dev You can't #dev i don't think changing asserts to errors is a good ideas #dev Depends where #dev i mean the node not crashing certainly is an issue #dev but we use assert outside the runtime, so really it's no different inside the runtime or outside the runtime really since an assert is for a logic error which should be caught early #dev Yeah though you won't see it #dev You can build with `[profile.release] panic = "abort"` but you will not get the unwinded stack or the location I think #dev https://github.com/renderlet/wander #dev Title: GitHub - renderlet/wander: wander - the Wasm Renderer #dev can we add that to debug? #dev release should just not compile asserts #dev maybe we should make our own assert macro so we can disable it in production builds #dev what do you think? that seems to be the proper solution #dev I think we should gracefully handle possible errors #dev there's no point checking for errors that never occur #dev otherwise you will go crazy trying to always gracefully handle all internal errors #dev if it's a big deal, we can just delete all asserts inside runtime, but then why not just make our own macro which calls abort in development, but is compiled out in production? #dev We always compile release #dev Otherwise the code is too slow #dev I suppose you could have a macro #dev But that doesn't solve production #dev You don't want to keep the node in limbo either #dev Correctly handling errors keeps the node working properly #dev i didn't say release, i said production #dev so we control the flag ourselves #dev the asserts get compiled out, but in dev version (debug or release), it will abort #dev Yeah but I'm saying, what happens when you have a panic but you don't abort? #dev nothing, it's ignored #dev This breaks the node #dev (That's also what we're currently doing btw) #dev there's some incorrect asserts in merkle.rs, but lets look at 2 correct ones #dev assert_eq!(latest_root_data.len(), 32); #dev assert_eq!(value_data.len(), 32 + 2); #dev if this fails to be true and the function exits, the DB will be in an inconsistent state and the contract using this call will be broken #dev Yes so on those specific ones you want to abort #dev So how about this: #dev - Errors which can be handled, get handled #dev - Unhandled panics should abort the program #dev We can also set our own panic hook, but IMO it should always abort #dev The issue is (not) being able to get the unwind #dev We could try this: https://doc.rust-lang.org/std/panic/fn.set_hook.html #dev Title: set_hook in std::panic - Rust #dev However it's also important to know the difference and consequences of what happens when asserting inside wasm as well #dev Right now it's caught by wasmer, but I don't know what happens if we change this #dev Aborting can also leave things in an inconsistent state #dev abort means crash and burn rather than keep trying to run after a fatal error #dev ACTION doing a git-bisect for deployooor #dev what's the command to reload config while the daemon is running again? #dev What daemon? #dev ah, any darkfi daemon? #dev i thought there was some generic SIG UP or something command #dev Only if implemented #dev pkill -SIGHUP or sth #dev isn't darkirc now doing /quote rehash or so #dev If you want to do it in darkirc, you should do it through the IRC protocol #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/darkirc/src/irc/client.rs#L342 #dev Title: darkfi/bin/darkirc/src/irc/client.rs at master - darkrenaissance/darkfi - Codeberg.org #dev 13:19 isn't darkirc now doing /quote rehash or so #dev Yep #dev in general is it possible to do tho right and we should always consider that the configs can be re-loaded #dev so initiating on start() will values from the config is a bad idea #dev *with #dev it's nice if the config can be modified while the app is running without requiring a restart #dev think about if you have a GUI and change settings, then it needs to restart to reload, or at least stop the p2p network and restart it #dev Yeah generally programs use SIGHUP as an interrupt and catch it #dev Then do whatever needed in that handler #dev it's not a big deal though if p2p needs to restart to reload a config so don't lose sleep over it #dev if you can do it, then it's a small win, not a huge victory #dev kk tnx #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/util/cli.rs#L259-L292 #dev Title: darkfi/src/util/cli.rs at master - darkrenaissance/darkfi - Codeberg.org #dev This will re-read the config and send it over to any subscriber #dev ah cool #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/util/cli.rs#L230-L246 #dev Title: darkfi/src/util/cli.rs at master - darkrenaissance/darkfi - Codeberg.org #dev You'll get the SignalHandler struct #dev And then you can access the sighup_sub #dev ah perfect #dev wtf emacs works in the browser https://agdapad.quasicoherent.io/#foo #dev Title: Agdapad #dev hanje-san, open a browser in emacs in a browser lol #dev when i first discovered VMs it blew my mind that was possible #dev for me it was when a youtuber (SomeOrdinaryGamers) made a VM in a VM and I audibly said "Wait a second, you can nest this?!" #dev XD #dev https://parazyd.org/pub/dev/random/TOS-Terry_Responds_to_the_Haters.mkv #dev Terry used VMWare #dev RIP King #dev > Dianna Physics Girl #dev if only he made it today he would be well off #dev imagine HolyC + borrow checker #dev https://upload.wikimedia.org/wikipedia/commons/4/4a/Terry_Davis_1990.jpg #dev Title: Wikimedia Error #random <()> test #random test back #markets https://www.cnbc.com/2024/04/02/crypto-market-today.html #markets Title: Bitcoin tumbles $5,000 in 24 hours as interest rates jump #markets oh gawd plz #markets uptrend still intact but decision time soon :D #random test #random test back #random : test #random : test #random test back #random test back #random : test #random : test #random : test #random test back #random test back #random test back #dev : gm #random : hey airpods69 #random : i can see ur msgs #random : but i guess the mirror bot is down #dev : gm #dev : :D #dev : It seems to work #dev : At least afor our echochamber :D #dev : event graph has worked better for me since i blacklisted peers returning the shifty addrs #dev : hmm ... had to disable a lot of my previous seed addrs returning refused/unreach #random : test back #random : test back #random : test back #random : test back #dev : only now DAG synced #random : Test #random : Test back #random Test back #dev : yay, still running after darkirc stop/start #random test #random test back #dev hanje-san: I use vscodium #dev I use Gentoo #dev hanje-san: Hey, where's the contract code where you initialize a sparse Merkle tree in wasm? I mean when a contract is deployed #memes https://i.4cdn.org/g/1712069744010385.gif #dev darkfi/src/contract/money/src/entrypoint.rs:159 #dev sorry #dev darkfi/src/contract/money/src/entrypoint.rs:146 #dev if the tree is empty we don't need to write anything at all because EMPTY_NODES_FP is precalculated #dev ah that's the one #dev Thanks #dev Can we put those precalcs in the SDK? #dev I have to use it in the RLN contract as well #dev Hey a bit new to this and trying to learn. Followed the instructions for local deployment in the run a node section of the book (though I am using the latest tag rather than master). When I ran the tmux sessions it did something, but it doesn't really seem like anything is happening. How might I be able to check whether it is working as intended, or whether I made a mistake? #dev brawndo: it's in the SDK too #dev i mean it's in the SDK #dev oooh ok #dev sry I wasn't looking well #dev btw money does extra stuff like saving a record of all the roots #dev so when we get a snapshot of the coins root, we also want to check it corresponds to the same nullifier root #dev Sure #dev In RLN this is not neede #dev so we compare (tx_hash, call_idx) for provided coins root and nullifiers root, and then we lookup tx location (block height, idx) using tx_hash, and we check the block_height is not too old #dev *needed #dev yeah cool, so all that other stuff you see there is related to that mechanism #dev crumpet: that part of the doc is outdated, what you need to do is compile darkfid, minerd and drk in repo root and then run the tmux script #dev In there it's just needed to maintain identity commitments #dev put/del #dev yeah so i guess the root must be NOW #dev so go like(in repo root): make darkfid minerd drk -> cd contrib/localnet/darkfid-single-node/ -> ./clean.sh -> ./tmux_sessions.sh #dev thanks upgrayedd (I thought you were supposed to be frozen), let me give those a go and see where I get #dev do I have to do that in main or the latest tag is okay? #dev just to be clear, localnet script is for dev, so don't expect to connect to anyone #dev master #dev I'm primarily trying to learn and help contribute if I can, so it's more experimental #dev hanje-san: Yeah, the hardest part will be keeping it in sync with irc daemons #dev just keep in mind latest code is PoW, so when you hear fans going brrrrr don't get confused #dev But I expect a public node or smth #dev the pc is thinking #dev should we remain silent while it's doing that? #dev brrrr #dev hanje-san: preferably yeah, you don't want to interupt a witch during spell casting #dev hanje-san: You initialize the db with roots_value_data, what's that supposed to be? #dev Is it just some leaf? #dev I need it initialized empty #dev do you need all the roots? #dev No #dev then don't worry #dev Just the latest one always #dev you mean line 126 #dev that's supposed to be (tx_hash, call_idx). i'm patching it now #dev 148 #dev I just need to store the tree itself #dev The Merkle tree #dev yeah line 148 not needed #dev oh ok #dev just 159 #dev (i was confused before, but this is correct now) #dev Gotcha #dev Thank you #dev np ofc! #random https://twitter.com/archerships/status/1775462586894655624 #random archerships - e/acc, pronatalist, immortalist(@archerships): Some #Monero advances to look forward to: @MoneroKon @DarkFiSquad merged mining (TBA) @tari merged mining (TBA) @SeraiDEX launch (in testnet) @HavenoDEX launch (in testnet) Fullchain membership proofs (WIP) #dev where is runtime put_object_bytes() used? #dev seems like an unused fn #dev same for get_object_bytes #dev Dunno, that's one of yours :) #dev oh, ok i'm restricting their ACL to [], and we possibly delete them #dev I think you can just nuke them #dev kim, press the button #dev what about the objects store? can i delete if unused? #dev oh wait nvm we use that #dev ok #dev : @zero pushed 1 commit to master: c781936b12: replace usage of blake3::Hash for tx hashes with TransactionHash type. Change all occurances of `let txs: Vec = block.txs.iter().map(|x| blake3::hash(&serialize(x))).collect();` to `let txs: Vec = block.txs.iter().map(|tx| tx.hash()).collect();` #dev : @zero pushed 1 commit to master: 564089646d: sdk: add hex decoding fns #dev : @draoi pushed 2 commits to master: 7ff45ea2a5: refinery: acquire exclusive lock on greylist before refining... #dev : @draoi pushed 2 commits to master: 83549ccbf0: doc: add missing documentation to refine session and hosts #dev : @zero pushed 1 commit to master: b9cc42cdf4: SDK: move all WASM runtime fns into wasm/ submod #dev : @zero pushed 1 commit to master: d3404939aa: sdk/crypto/util.rs: replace ugly CtOption mess with cleaner version using .into() and match #dev : @zero pushed 1 commit to master: 1cdbd03673: sdk/util.rs: add Itertools trait with .try_collect() method #dev : @zero pushed 1 commit to master: dcf419b0ca: sdk: move find_subslice() and NextTupleN from zkas into SDK util.rs #dev : @parazyd pushed 1 commit to master: f425397115: sdk/crypto/smt: Implement leaf removal support #dev : @parazyd pushed 1 commit to master: d68619d84d: runtime/import/smt: Correct log message #dev : @zero pushed 1 commit to master: 0d3b3cf77c: deployooor: fix broken WASM fns #dev : @parazyd pushed 1 commit to master: 2ef2f6560b: sdk/crypto/smt: Move tree recalculation into separate internal function #dev : @zero pushed 1 commit to master: 3a6707cb81: runtime/merkle: remove faulty asserts, we used to exit early with success if coins was empty but then that meant the merkle root -> blockheight wouldn't be updated. recently this was changed so the old asserts are no longer valid. #dev : @zero pushed 1 commit to master: ac979a2e38: doc/wallet: expand scenegraph section #dev : @zero pushed 1 commit to master: e0932c5c50: deployooor: fix instruction deserialization #dev : @zero pushed 4 commits to master: cb4ef9b1fe: money: fix FIXME, add (tx_hash, call_idx) now the calls exist #dev : @zero pushed 4 commits to master: b42cb611c5: runtime: review and update ACL perms for fns #dev : @zero pushed 4 commits to master: 56d5281f6c: runtime: remove unused put_object_bytes() #dev : @zero pushed 4 commits to master: dd341c156a: smt: add docstrings for runtime/SDK fns #dev weird #dev hanje-san: here? #dev yrp #dev yep #dev u64->i64 will overflow #dev I saw you use u32 for heights #dev want me to update the headerstructure etc so its u32? #dev as you wish, certainly we should be consistent cos there's a lot of u32/u64 mess in the contracts there #dev any is fine, just we should pick one #dev well if you need the i64, we can't use u64 #dev since its an overflow #dev so we have to go u32 #dev yeah it would be more convenient for wasm, otherwise i have to use bytes and serialization stuff #dev ok #dev can you add the prefered values into doc/src/arc/consensus.md where we have the structs defined? #dev so I can use that as spec #dev ok got it #dev and for tx location #dev yep and call index #dev yy all these #dev just chug them all in docs to have as specs #dev ++ #dev btw are you going to do the HeaderHash we discuss or you want me to? #dev could you do it? i have to review net and prepare a conf talk #dev yy no worries I can do it #dev ty #dev just out of curiousity #dev do you need it in the sdk like the TransactionHash? #dev and does it need to have same fns, or a wrapper should be fine? #dev since its mainly for better code readability #dev no i don't. we could always move it there if needed #dev inner is still the same [u8;32] #dev kk then just a wrapper for readability #dev yeah also safety so we dont mix the hashes #dev well, all hashes are [u8;32] #dev yeah but they cannot be mixed #dev so its just code "safety" #dev since in reality everything is the same #dev wdym? #dev they can be mixxed #dev no you cannot use TransactionHash, it's not an alias #dev if you have an fn with def fn foo(&[u8;32]) you can pass any blake3::Hash there #dev yes that's the issue #dev well I'm not talking code perse #dev more like low level stuff #dev like passing the key bytes to sled to retrieve it #dev yeah i mean the API, i think it's easy for wires to cross #dev but yeah I gotcha gotcha gotcha #dev ok cool #dev kk will try to cleanup src/blockchain so its fully consistend on whats what #dev and go upwards from there #dev just add the final(TM) size defs for height, nonce, etc etc #dev yeah and deployooor too, i can do that if needbe #random https://twitter.com/RuneKek/status/1775561896235585812 #random Rune(@RuneKek): Heard today that there’s a good chance all EU national financial regulators will interpret DeFi frontends to require a MiCA license. This would make DeFi frontends on normal internet domains, as we know them today, impossible. Only fully decentralized, local, downloaded frontends or full-KYC online frontends would be possible. Sad #random test #random test back #random alrighty, draoi I saw your message from the logs. I didnt realise the mirror-bot was down #random > We can only begin by turning back to history, to try to understand how this situation came about to begin with. But this, in turn, means that to a certain extent, we must be dealing in myth. #random I was reading the manifesto's volume 1: https://agorism.dev/book/philosophy/1.civilization.pdf and came across those two sentences in the preface (page 9) #random I have no clue how I managed to read myth as meth and I was like damn the past was onto something #random Page 13 according to the pdf and page 10 according to the book (my bad it isn't page 9) #random test #random test back #random test #random test back #dev hanje-san: does this look good? https://imgur.com/EvowAjM #dev Title: Imgur: The magic of the Internet #dev hanje-san: looked deeper at the code and now I have more questions :) #dev grep -r find_zs_and_us does only yield binary matches #dev is this something that is triggered manually or something like that? #dev asking specifically regarding the dynamics of how the new or other constants will be generated #dev will they replace the hardcoded ones? you said the existing hardcoded ones should also be supported, but does that mean that they will be used if not overwritten, or the "correct" constants will be selected dynamically, e.g. through a match or something? #dev hope my questions are clear #dev find_zs_and_us is a zcash function #dev halo2 lib or somewhere (maybe orchard) #dev we keep the current ones, but allow through zkas to specify our own generators which is done dynamically #dev darkfi/src/zk/vm.rs:654 #dev each of these values, OrchardFixedBasesFull, ConstBaseFieldElement, .etc they should be generalized #dev : gm #random local LLM: https://github.com/nilsherzig/LLocalSearch #random Title: GitHub - nilsherzig/LLocalSearch: This is a completely locally running meta search engine using LLM Agents. The user can ask a question and the system will use a chain of LLMs to find the answer. The user can see the progress of the agents and the final answer. No OpenAI or Google API keys are needed. #philosophy https://aeon.co/essays/bernard-stieglers-philosophy-on-how-technology-shapes-our-world #philosophy Title: Bernard Stiegler’s philosophy on how technology shapes our world | Aeon Essays #philosophy > Our relationship with technology is about something deeper and more fundamental. It is about technics. #random i just get an error running it #random Whats the error hanje-san? #random test #random test back #random Model all-minilm:v2 does not exist and could not be pulled: Post "http://192.168.0.109:11434/api/pull": dial tcp 192.168.0.109:11434: i/o timeout #random is that your internal ip? #random someone messed up the link to model, I guess? #random no idea what it is, it doesn't ping. not bothered enough to debug #random ah yeah someone at ollama messed up the link then #random just use a different model, should be fine #dev gm #dev : gm #dev hey all, I've been caught up with work lately but coming back to this now. Last month haumea suggested a change I could look into for zkas/parser.rs, in the match on token str, VarType could have a method to be created from a str is this something I can still attempt? #dev I see there's a comment in the codezkas/parser.rs code line 688 TODO: change to TryFrom impl for VarType, is that related? #philosophy https://www.thefp.com/p/im-28-and-im-scheduled-to-die #philosophy I heard assisted suicide is legal in Switzerland #philosophy i once read that crows cannot be kept as pets. they begin pecking their own feathers off, develop mental disorders and become suicidal #philosophy maybe there's a memetic hygiene hypothesis where the lack of nature red in tooth and claw, living in attack and defense, our own mental immunology begins attacking itself #philosophy >where the lack of nature red in tooth and claw #philosophy What does this mean? #philosophy <()> he means hard work i think #philosophy > Charles Darwin published the book On the Origin of Species (1859), contemporary advocates for the theory of natural selection had adopted the poetical phrase Nature, red in tooth and claw #philosophy i'm not sure memetic hygiene is the right term but sounds about right (see: animals in zoos stop reproducing, humans in liberalism stop reproducing, etc) #philosophy I see #philosophy In the west I mostly see degeneration #philosophy hanje-san: what's that vid about the rat utopia #philosophy where they all start going schizo #philosophy > The criminal and what is related to him. — The criminal type is the type of the strong human being under unfavorable circumstances: a strong human being made sick. He lacks the wilderness, a somehow freer and more dangerous environment and form of existence, where everything that is weapons and armor in the instinct of the strong human being has its rightful place. His virtues are #philosophy ostracized by society; the most vivid drives with which he is endowed soon grow together with the depressing affects — with suspicion, fear, and dishonor. Yet this is almost the recipe for physiological degeneration. #philosophy from twilight of the idols #philosophy draoi: damn yeah i wonder where that article is #philosophy https://en.wikipedia.org/w/index.php?title=Behavioral_sink&useskin=vector #philosophy they concluded malthusian idea about overpopulation, but i wonder if it would be the same with high population and high predation/warfare #philosophy Junger: "the cult of crime... is so characteristic of our times. Its dimensions and extent are easily underestimated.... It would be no exaggeration to say that three quarters of [literature] deals with criminals, with their deeds and their milieu, and that its appeal lies precisely there. This indicates how far the law has become dubious. People have a sense of being under foreign occupation, #philosophy and in this relation the criminal appears a kindred soul." #philosophy lmao #philosophy also Junger: "it is critical for the forest rebel to clearly differentiate himself from the criminal, not only in his morals, in how he does battle, and in his social relations, but also by keeping these differences alive and strong in his own heart. In a world where the existing legal and constitutional doctrines do not put the necessary tools in his hands, he can only find right within #philosophy himself. We learn what needs to be defended much sooner from poets and philosophers." #dev deki: what do you see on those lines? #dev how do you think it can be improved #dev hanje-san: In WASM, there's the sparse_merkle_insert_batch function #dev hanje-san: Could you quickly tell me why it takes 3 dbs? #dev db_info - latest root, db_smt - the whole tree, db_roots - the record of the roots #dev maybe we could enable setting MAX to have them ignored #dev Great #dev They could be options if you want to ignore them #dev But it's fine for now #dev ok #dev Will it be a problem if a root repeats itself? #dev no, it just gets overwritten (updated) in db_roots #dev e.g. Add leaf, remove leaf <- this reverts a root #dev ok #dev : brb #dev : b #random test #random test back #random test #random test back #random gm #random greetings darkfi #random i want those darkfi wallpapers for my widescreen samsung monitor #random https://dark.fi/img/web_cover.jpg #random got this one #random if more please link #random hey anchain #random we're gna publish a load of them v soon actuallyt #dev hanje-san: Hey do you have a bit of time for some contract help? #random cant wait #random 66666666666666666666666666666 #random 666666666666666666666666666 #random 6666666666 666666666 #random 6666666 666666 666666 #random 6666 666 666 666 #random 6666 666666 666 #random 66666 6666 #random 666666666666666 #random 6666666666666 #random 66666666666 #random 666666666 #random 6666666 #random nick anchain #random test #random test back #random ;) #random we got darkfi wallpapers for a widescreen?! lez goo #random I'll use it too #random no #random sad :( #random whenever it is out I meant #random how are you #random doing well here, just trying to write a report #random what about you? #random your internship report? #random im outside #random yepp, for my mid semester evaluation. Gotta show it to my uni #random oh nice, out running errands or chilling? #random construction #random i build #random what semester you in? #random ohh thats cool. #random Last semester (8th) so gonna graduate in about 2 months (first week of June) #random good luck #random thanks :D apart from dealign with some office politics, everything has been going forward like a breeze #random : test #random test back #random : test back #random : nice #random : echo #random echo back #random : echo back #dev : @draoi pushed 3 commits to master: 498a88e3b9: p2p: reorder shutdown sequence to reduce lag on CTRL-C #dev : @draoi pushed 3 commits to master: 8dad8dfc8f: lilith: add missing safety check #dev : @draoi pushed 3 commits to master: 6b29e8c659: net: make blacklist settings more configurable + other fixes... #dev the 5-15s lag on CTRL-C seems to be darkirc related rather than net since i can't reproduce it on other binaries #dev few other weird darkirc behaviors: repeatedly prints info about channels etc #dev ... i think they are the main things #dev brawndo: hey will go for a run, back in an hour #dev draoi: Well the shutdown can't be instant, the dbs have to flush and all #dev hanje-san: on those lines you're using pattern matching on a method call to get the string value from the expression. Then pushes the Witness struct into ret? As for improving, not sure, include error checking? That's what TryFrom seems to be about #dev if you want a new method for VarType to be created from a str, then you'd need a new impl block for that? But it's already inside one. Will think about it some more #dev brawndo: back #dev Hey #dev Couple questions #dev deki: wrong answer, here's a clue: code duplication #dev For staking RLN coins, my idea is to just do it alongside a Money::Transfer #dev the code is correct, it can be just improved #dev The output coin would contain the spend hook of the RLN contract #dev brawndo: aha, nice #dev that's how staking is done #dev Then it would not be spendable until unstaked #dev the RLN enforces that #dev *RLN contract #dev Q: In the RLN contract, how can I make this a requirement: The tx contains a Money::Transfer with a single output #dev lets call it RLN::unstake() #dev It's RLN::Stake() #dev (since the spend_hook is a func_id, not a contract now) #dev Right, yeah #dev ah you mean, when staking, how do you ensure there is only a single output #dev I mean both now that you reminded me of this #dev :D #dev Yeah so: #dev unstaking is easy, i'm not sure we have any mechanism for staking constraints #dev 1. When staking, we create an output that has a spend_hook to RLN::Unstake() #dev 2. When unstaking, we remove that spend_hook #dev correct, so you mean RLN::unstake() checks that right? #dev (or set it to whatever the user wants) #dev Yeah #dev So I've been writing stuff, but again got a bit confused with the tx call tree, children/parents and whatnot #dev why must it have a single output? (just so i have the full picture) #dev I mean a single output what will become the staked coin #dev There can be other irrelevant ones, sure #dev i don't see the need for this #dev when you make an RLN, you use a single coin, and you prove the coin's spend_hook is RLN::unstake() #dev Anyway I was thinking, probably the Money::Transfer() call can be a parent of RLN::Stake() #dev you don't need to explicitly check anything when staking, just when you use the coin, you check there it is formed correctly (otherwise rejected) #dev But I'm unsure how to access this within the state transition #random : https://bun.sh/blog/bun-v1.1 faster than Deno/Node.js JavaScript and TypeScript runtime #random : Title: Bun 1.1 | Bun Blog #dev Don't bother with that, you don't see the entire picture #dev I'm just asking about this :) #random : yay #dev Would the parent call be like calls[call_idx - 1] ? #dev ok right now we don't have any mechanism for this, but i believe it's the same thing as just explicitly checking wherever the coin is used (including in RLN::unstake()), that the coin meets those criteria. #dev for RLN::unstake(), it's easy to do any checks on the coin or tx formed #random : It's written in Zig, interesting https://ziglang.org/ #random : Title: Home ⚡ Zig Programming Language #dev think of RLN::stake() workaround, as if in your functions, how we do lazy initialization - you simply put that code wherever the coin gets used to check it's correctly staked otherwise reject #dev I think he needs a code example on how to match the tx calls, like in propose and xauth #dev Yeah #dev ok #dev upgrayedd: It'd be like calls[self_.parent_index], right? #dev darkfi/src/contract/dao/src/entrypoint/auth_xfer.rs:139 #dev ty #dev this checks the sibling call, for parent, see darkfi/src/contract/money/src/entrypoint/transfer_v1.rs:61 #dev you see we just calculate the func_ref and pass it into zk, where it's committed to the coin #dev brawndo: parend should be the stake and child the transfer #dev yeah but there's nothing enforcing when you stake a coin with money::transfer() that the parent is money::stake() #dev upgrayedd: ah so I'd access call_idx+1 ? #dev it's the spend_hook, not mint_hook #dev we could add a mint_hook too if needed #dev iirc correctly yeah #dev *nod* #dev actually no, child go first #dev so call_id-1 #dev but I think you have access to call child directly #dev hanje-san: Second Q #dev How can I check if an arbitrary Fp is in the SMT? #dev in ZK or not ZK? #dev Not in ZK #dev Do I do Fp.as_biguint() and then smt.get() ? #dev darkfi/src/contract/money/src/entrypoint/transfer_v1.rs:170 #dev .get_leaf() #dev either it is the empty_leaf (not in the tree), or it is your value #dev ah perfect ty #dev ++ glad to helpu #dev arigato #dev hai #dev ACTION bows excessively #dev lol #random amazing website: https://blog.kto.to/ #random you can do sleep monitoring and heart rate tracking with opensource software and privacy preserving, you dont need apple watch, ouraring or any of that crap #random and also it's medical grade quality #random i aggregated my own notes on sleep tracking https://agorism.dev/sleep.html #random you can do all this in python/simple bluetooth scripts #philosophy not the same article, but i found this on gwern.net https://gwern.net/mouse-utopia #philosophy > What he found was more dramatic: the mouse population was not self-regulating and would grow to unsustainable levels, resulting in not just moderate decrease in quality of life, but an explosion of all sorts of strange & novel pathologies followed by total population collapse and possibly extinction. #dev hanje-san: I see, you mean the code duplication with all the Witness structs in the match arms? Only diff is the typ field #dev I can try refactoring it and see what you guys/gals think, assuming that's the part that can be improved. Only need to use match pattern on the typ field #random recently came across this: https://meshtastic.org/ #dev anyhow I gotta go to sleep #dev hanje-san: did you add the types stuff? #dev Anyone know of a protocol for sharing encrypted information beween a Rust L1 and Ethereum? #dev W: please write random questions at #random #random Anyone know of a protocol for sharing ZKP/FHE encrypted information between a Rust L1 and Ethereum/an EVM L2? (Such that it stays encrypted) #random test #random test back #dev ohayo #dev speaking of nvim - I have been using CoC for some time with golang #dev with the move to rust, I was wanting to try smth else, without nodejs, assuming bloat behind it #dev (besides, nodejs dep mgmt is awful, and probably nobody checks security implications) #dev not sure I made much improvement tho with my latest config #dev using nvim-lspconfig with rust_analyzer, hrsh7th/nvim-cmp and deps, simrat39/rust-tools.nvim and some other tools, #dev feels a tad slower though #dev what are people here using? #random hanje-san: thanks for sharing that info., nice to see open source options coming out #dev loopr: whatever makes them more productive #random test #random test back #dev sure, that's indeed my goal ofc #dev i would prefer not to have to go back to coc #dev but feels like I should be able to getter a better experience out of my current setup #dev well, imho you should focus on eliminate the need to use such tools all together #dev but people are not ready for this hot take XD #dev uuh #dev yeah #dev that's a tough ask #dev how do you navigate the code then #dev oh, maybe you're just hinting at completion #dev > how do you navigate the navigate the code then #dev check where it was imported from -> find corresponding file -> open it #dev best way to quickly learn repo structure #dev hmm that may help with the repo structure but I feel it'd lower *my* productivity, especially when having to jump around a lot #dev and rust seems to require a lot of such jumping #dev like, all the traits implementation and usage #dev and gd is opening the file for me #dev but yeah, sure, at the price of bloat and config complexity #dev well as I already said: everyone uses what makes them more productive #dev ++ #dev I'm so used working with the software I use I really don't see the point anymore in such "luxuries" #dev a click to open will save me what? 0.5s? #dev big deal... #dev Until you know the codebase it's more...go to dir, open, search definition... #dev used to do this for a while too #dev happy it works for you #dev Once you understand the codebase then ripgrep + telescope is really good to find code. It is a convienent way of jumping around in neovim from file to file but I think even VSCode lets you do that? never tried it #dev : @skoupidi pushed 1 commit to master: 930a511309: blockchain: major hashes cleanup #dev lmao yeah #dev Even with vim, I :q , cd, vim foo #random : thanks for HR monitoring links, I have done some experiments with polar #random : but probably lost somewhere deep in files / history ... #random : maybe I'll try to dig it up, and finally do some data parsing, have a ton #random : if anybody's interested https://www.youtube.com/watch?v=OuizzRCALCU #random : Title: Hack Your Brain with Polyphasic Sleep - YouTube #random : no need to go 2 hours sleep per day as Buckminster Fuller did ;) #dev : re tooling : try to "oxidize your setup" ;) hx, skim, ripgrep, cargo-binstall, bottom, ... #dev : but vscode is nice with remote debug and all the plugins, true ... #dev where should I share an impl doc proposal for discussion? pastebin? agorism uploads? gist? #dev : https://dev.to/yjdoc2/completely-oxidizing-my-terminal-setup-43d8 #dev : Title: Completely Oxidizing My Terminal Setup - DEV Community #dev : https://www.youtube.com/watch?v=dFkGNe4oaKk #dev : Title: Your Command Line, Oxidised - YouTube #dev new term: oxidized setup... #dev unbelievable but it took me a while to grok the pun #random gm #random gm servt3 #philosophy was gonna say, I recommend reading Ayn Rand's philosophy. Mainly, Philosophy Who Needs It, and The Virtue of Selfishness. Her fiction is good too, but can be too long for some people #philosophy if you want to go deeper, her epistemology is great too, it's all very Aristotelian #random test #random test back #dev hanje-san: https://pastenym.ch/#/u9oQ9NCC&key=de8fcd9ed99aac0f5fce38bf97b11e42 #random gm #dev gm #random W: depends a lot on the specifics. are they using the same EC curves? #dev deki: correct #dev upgrayedd: sorry i forgot, will do it today (noted down), also have to read SMT ethresearch article #dev airdrop69: does telescope work on opened buffers (see :ls)? #dev i don't need fzf for opening files but for simply doing :b N where N is the buffer name. I have to look through :ls to find the buffer i want #dev loopr: you're halfway there #dev let vcv = ValueCommitV; #dev let vcr = OrchardFixedBasesFull::ValueCommitR; #dev let vcr = OrchardFixedBasesFull::ValueCommitR; #dev let vcr = ConstBaseFieldElement::value_commit_r(); #dev let nfk = ConstBaseFieldElement::nullifier_k(); #dev all of these need to be generalized #dev lets look at darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:110 #dev pub struct ValueCommitV; #dev darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:203 #dev impl FixedPoint for ValueCommitV { #dev it has methods u() and z(), so those values should be data #dev .etc for the others #philosophy i liked the fountainhead #dev hanje-san: okay I can do a refactored version so the Witness struct isn't repeated, and just catch the typ field. See what you all think #dev perfect #dev ty, will do it this weekend, have to head out soon #philosophy fountainhead is probably my favourite of her fiction and the one I recommend to anyone wanting to start with her fiction #dev nice enjoy mate #dev hanje-san, do you mean something like this? https://imgur.com/a/zzvekNL #philosophy Atlas Shrugged is good too, but it's very long, and very philosophy dense which might put off some people at first #dev if yes then :Telescope buffers #dev ah yeah nice #dev i don't like these nvim popups, idk what's wrong with the command bar for this, anyway will investigate #dev I believe telescope can exist in the command bar. I am just lazy to change it #dev ah nice ty #dev that's a virtue (laziness) #dev :> #dev linus said so #dev I thought it was Bill Gates who said something that they hire lazy people to get work done (idk could be false internet information cause I didn't verify it or cared much to do so) #dev ah that's why windows sucks, makes sense #dev haha yes #dev ;) #dev oh that reminds me, gotta spend some time again to try and passthrough my GPU to a windows vm. Then I can be completely away from windows on bare metal. #dev any experience with that? #dev i think a upgr dual boots for gaymes #dev you should just play tuxracer lol #dev xD #dev I just want to play rdr2 on linux, figured out how to play all of my other games here using wine except for that one game and I need windows #dev "come to linux we have amazin gaymez like tuxracer, OpenTTD, FreedroidRPG" #dev *dual boot with templeOS (games) and linux (productivity) #dev s/productivity/trolling/ #dev hah jokes on you, put me on any OS, I will troll. #dev does anybody know where the log file is initialized in darkirc? I want to add it to the toml settings as well #dev maybe util/cli.rs? idk tho, i've been using tee #dev POV: you're henry VII and you say "who will rid me of this meddlesome priest" and some overzealous knight kills him #dev that's like me and this task #dev put it on tau #dev i heard it's more stable since the net upgrades #dev we can start testing it with dev tasks #dev i had some issues but will try again #random http://uicrmrl3i4r66c4fx4l5gv5hdb6jrzy72bitrk25w5dhv5o6sxmajxqd.onion/ #random that's pretty cool #random guess it uses atomic swaps? #philosophy https://www.youtube.com/watch?v=A2m1fjV1dgU #philosophy video on the larynx / voicebox of dinosaurs #philosophy i never managed to finish atlas shrugged lol #philosophy so dinosaurs made complex sounds like birds #philosophy they didn't roar, but made vocalizations (like birds): https://www.youtube.com/watch?v=Ln80qwviWbo #philosophy emu vocals: https://www.youtube.com/watch?v=Lkg7_6iaPdY #philosophy ostrich vocals: https://www.youtube.com/watch?v=QGxZ7eYPy44 #philosophy cassowary vocals: https://www.youtube.com/watch?v=7QxIv62-rq8 #philosophy this speculative t rex vocals is quite cool: https://www.youtube.com/watch?v=2eqJYtFO3SI #philosophy article about emerging field of molecular paleontology where they're finding even DNA in fossils: https://www.thenakedscientists.com/articles/interviews/will-we-ever-see-dinosaur-dna #philosophy they used to think that fossils were formed by minerals replacing bones in deposits, but now an emerging group believes they are actually the original material #philosophy seems like a paradigm shift occurring #dev gm #philosophy and that the actual resolution of the fossils (which before was thought to be stone) is molecular #dev hanje-san: The log is not written to files by default for privacy reasons #dev hanje-san: And should not b e #dev hanje-san: darkirc --log-file (or --log, I don't recall) #philosophy https://academic.oup.com/nsr/article/7/4/815/5762999?login=false #philosophy they even made beer from 45 million year old yeast https://www.wired.com/2009/07/ff-primordial-yeast/?currentPage=all #dev yes i'm saying can we add the log setting to the config toml as well? #dev but agree off by default (as should be) #dev It's supported in the config just not in the toml file #dev You can add any Args param in there #dev add in it your local config, no need to be in the repo/default one #dev and if it gets added there, always commented #dev upgrayedd: --log is in the CLI args but not supported by toml, nobody is saying to enable logs by default #dev hanje-san: check bin/darkirc/src/main.rs::60 #dev everything there is both cli and toml args #dev ahhhh #dev i was so confused trying to figure this out #dev the difference is how we parse them #dev since log is parsed as part of the daemonize macro #dev its "pre-used" when it reaches the daemon #dev since the macro has already setup the log config #dev how are the [channel.] sections added to Args? #dev using -v and --log #dev they are part of the toml, but get parsed differently #dev check bin/darkirc/src/settings.rs::153 #dev aha ok so you can define things using Args or do it manually, gotcha #dev yeah exactly #dev nice thanks a lot #dev the toml parsing dep we use has its quarks #dev so some stuff work out of the box, but some others needs different handling #dev Funnily enough, in Rust there isn't a single TOML parsing library that doesn't use serde #dev Eventually I'll make bindings for this https://github.com/cktan/tomlc99 #dev : @zero pushed 1 commit to master: 91bc56bee6: darkirc: add commented log and verbose settings + description to default toml config #dev hanje-san: btw can you fix the broken features? #dev sure. make test, or what? #dev make check #dev it takes hella time I know #dev so to cheat start from: #dev ok np, i'm adding your doc and reviewing net so got time #dev cargo check --release --target x86_64-unknown-linux-gnu --no-default-features --features async-serial,zkas #dev (on repo root) #dev thanks #dev make check verifies all feature combinations work #dev so with latest moves some of them got rekt #dev in general, the repo must always pass make test and make check, along with make clippy #dev make clippy without warnings #dev make check might produce some import warnings, but thats easily fixable #dev yeah i run them periodically but forgot recently #dev nw, make clippy is the main one that must pass #dev btw that command doesn't seem right, i get lots of errors not related to code i touched #dev so other devs don't get blocked #dev about AsyncDecodable #dev i just ran `make check` and get: #dev well it broke on commit b9cc42cdf4499cb904e3364698b125db4e8119ae #dev RUSTFLAGS="" cargo +nightly hack check --target=x86_64-unknown-linux-gnu \ #dev --release --feature-powerset --workspace #dev error: no such command: `hack` #dev cargo install hack #dev ah #dev $ cargo install hack #dev error: could not find `hack` in registry `crates-io` with version `*` #dev sec #dev cargo install cargo-hack #dev ? #dev works ty #dev : @zero pushed 1 commit to master: 416b236715: Makefile: add comment about installing cargo-hack above check target. #dev upgrayedd: i think it's incorrect that your Header struct has the tree inside of it #dev it should just have the merkle root #dev i'm going to leave alone the nonce at 64 bits, i think it's safer #dev well not safer, just better #dev hanje-san: it originaly had just the root, don't really remember why we added the whole tree #dev probably for easier building #dev https://bitcoin.stackexchange.com/questions/4565/calculating-average-number-of-hashes-tried-before-hitting-a-valid-block #dev upgrayedd: but then your SerialEncodable is saving the entire merkle tree along with the header #dev so if i use it on the network, then it will send the merkle tree too #dev yeah understandable #dev which will be different for each person if they witness different things .etc #dev brawndo: do you recall if that was something from PoW experiments? #dev since the change was made in preparation for PoW #dev anyway i just change the doc not impl for now #dev you can calculate the tree from the block: file:///home/narodnik/src/darkfi/doc/book/arch/consensus.html#block #dev oops #dev hanje-san: yeah add the definitions and I will make the impl changes #dev ok have you considered naming it BlockHeader? Header name might conflict with other code stuff #dev nbd tho #dev nah too much info #dev You have to maintain the Merkle tree for the block _somewhere_ #dev well you can always rebuild it and check the root matches the builded one during verification #dev Yeah #dev yeah rebuilding is good #dev You have to do that always #dev why always? #dev whenever you want the tree #dev you just do it once you generate the block #dev to grab the root to add to the header #dev and then when you verify the block is valid #dev That's always :) #dev not too much hustle tbh #dev yy #dev so better to just have the root, as its the only one required #dev I'm saying it should always be calculated #dev yeah we just need it in those two places: when you build the block, and when you verify it #dev yeah it's not a big computation #dev hanje-san: also change that in the header definition and I will handle the rest #dev yep done #dev hanje-san: It is, you have to serialize each tx, and then add it to the tree in order #dev yeah sure i wouldn't do it all the time, but it's not catastrophic, can be done infrequently #dev Every block ;) #dev pretty much ;) #dev : @zero pushed 1 commit to master: 9ecfb0dd58: doc/consensus: update types info in tables. #dev so about those `make check` errors, I don't think it's anything I did #dev I get these errors: #dev error: cannot find attribute `async_trait` in this scope #dev but opening dark_tree.rs (one such file), I see: #dev #[cfg(feature = "async")] #dev use darkfi_serial::async_trait; #dev so why would SerialEncodable macro be giving this error? either async is enabled, which then async_trait is enabled, or it isn't and SerialEncodable is just sync #dev cargo check --release --target x86_64-unknown-linux-gnu --no-default-features --features async-serial,zkas #dev just verifying if it broke on b9cc42cdf4499cb904e3364698b125db4e8119ae #dev ah well it did, can't argue with facts #dev lmao #dev src/sdk/src/lib.rs::55 what is #[macro_use] #dev ? #dev wait b9cc42cdf4499cb904e3364698b125db4e8119ae works for me #dev that #[macro_use] just propagates the macro in entrypoint.rs upwards (otherwise it can't be used) #dev i'm doing a bisect #dev what did you run? #dev dcf419b0ca839c359674ed79cb726c242c6489c8 #dev this is the problem commit (also me) #dev aha noice glhf fixing it :D #dev yeah in that commit you introduced new feature combos #dev since you added darkfi-sdk to zkas #dev that seems to be the issue #dev ok needs async-sdk #dev where is this specified? #dev i don't see anything in bin/zkas/, nor under check target in Makefile #dev oh it's trying every combo of features, so maybe i have to do something in the code to handle this?? #dev dakkfi-sdk to zkas? #dev yep #dev async-sdk rather #dev i mean darkfi-sdk is already in zkas Makefile features, but when compiling async-serial,zkas features, it gives an error #dev cargo check --release --target x86_64-unknown-linux-gnu --no-default-features --features async-serial,zkas #dev but async-sdk,zkas works so i'm not sure how to fix #dev Can you revert that? #dev why? #dev zkas should be standalone, no deps #dev it just deps on our SDK because i moved iterators into there #dev Yeah but it pulls everything and takes much longer to compile #dev : @zero pushed 1 commit to master: 1a1a26e396: Revert "sdk: move find_subslice() and NextTupleN from zkas into SDK util.rs"... #random nice https://posit-dev.github.io/great-tables/blog/design-philosophy/ #random looks like its affiliated with https://exch.cx/ alkaloid #dev afk cya]\ #dev : @skoupidi pushed 1 commit to master: 9d64403407: zk/debug: properly structure feature imports #random https://yewtu.be/watch?v=eL2eOaIP-W4 Craig Raw mentions shifting narratives within bitcoin, and also mentions privacy not even being discussed as a topic #random test #random test back #dev hi #philosophy that's pretty cool, still new stuff being discovered about dinosaurs, especially their fossils #philosophy my dad used to think dinosaur fossils were a conspiracy lol #dev hanje-san: thanks for darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:203, actually I bumped into those at some point #dev what I fail to see is how they are being called in src/zk/vm.rs:654 #dev also, when you say "should be generalized", you mean specifically that generics should be used? #dev loopr: https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/sdk/src/crypto/constants/fixed_bases.rs #dev vm.rs:647 loop #dev There the generators are used #dev brawndo: thanks, I saw that loop #dev what I don't see is the link for VALUE_COMMIT_VALUE resp VALUE_COMMIT_RANDOM with those generator resp u and z fns #dev for the other two it's value_commit_r() resp nullifier_k() #dev brawndo: could it be they are actually missing there and they should be added? #dev can't see any Default constructor either #dev greets #dev hey #random test #random test back #philosophy deki: in the words of bill hicks, god must have put those dinosaur bones here to test us! #philosophy wow: lol yeah #dev heyo #random test #random test back #math Hey! #math https://x.com/__zkhack__/status/1776287347597824256 #math The ZK-HACK hub is going to start a study cohort of the moon-math book #math Pass the voice if anyone is interested #math hey ash thanks for sharing #math will check it out #dev hey #dev : hihi #dev : It seems my darkirc node has been stable through network outage too these days #dev : Good work :) #dev : very cool #math you're welcome #dev : I have an external addr set and it's reachable #dev : Then in the case there's network outage, people would be unable to connect to be #dev : But I think then when I reconnect to anyone, the address gets propagated again? #dev : They wouldn't blacklist me? #dev : they won't blacklist you #dev : worst case scenario they will forget your node i.e. delete from greylist, but you will reshare again once you reconnect #dev : Sweet #dev : I assume the same goes on my side. Everyone becomes unreachable, and then they end up in greylist, and it keeps trying until I get network access again #dev : And/Or alternatively it would just try the seed(s) again #dev : yes exactly, and we try to detect when we go offline and switch off the refinery so that it doesn't delete peers when we are offline #dev : if we haven't had any connections for > 30s, refinery is switched off #dev : Nice #dev : Is the 30s hardcoded? #dev : ah no I see it #dev : yeah so it's kind of a balance between the refinery interval and the time_with_no_connections interval #dev : Really cool #dev : rn the refinery default is 15s, time_with.. is 30 sec, so would delete max 2 potentially healthy peers #dev : we could tweak for different connections perhaps #dev : :D #dev : Yeah maybe #dev : I'd think mobile connections could be more flaky #dev : ++ #dev : Sometimes you'd get an interrupt when switching towers or so #dev : But that's a normal roaming issue #dev : Also likely less of a problem since you probably won't be running a public node that way haha #dev : true #dev : For some period of time, tmobile in NL had ipv6 over 3G #dev : So you could host stuff #dev : But IPv4 is usually firewalled by the operator #dev : wow nice #random test #random test back #dev : @draoi pushed 1 commit to master: 2b18e5307b: session: cleanup SessionBitFlags... #random test #random test back #dev : sed -i -e 's/SESSION_ALL/SESSION_NET/' bin/darkirc/src/main.rs #random : https://github.com/cloudflare/pingora/releases/tag/0.1.1 #random : Title: Release Pingora 0.1.1 · cloudflare/pingora · GitHub #dev : that's a good idea #dev : @draoi pushed 1 commit to master: f9f3fa2bf1: session: cleanup SessionBitFlags... #dev : soz just forgot to commit that file #dev : ^ appended #random test #random test back #dev note to devs: nightly is broken again so use 04-05 #dev hanje-san: here? #dev hey #dev hanje-san: looking at 9ecfb0dd5803620c149f7be8e63e7943141d4897 #dev tx_index as u16 makes sense #dev for call_index we can further reduce it to u8 #dev since we cap tx calls to 20 #dev ok sure #dev check src/tx/mod.rs::226 #dev aha yep ic #dev kk gg so it will be u8 #dev nice thx for telling me #dev tx_index can also be brought down, since we have the 50 tx per block cap #dev but I guess that will change once proper fee cost is added #dev I wouldn't, since we should later have blocks sized on gas rather than n_txs #dev u16 gud #dev btc blocks can have like 4000 txs #dev brawndo: yy won't change it #dev btc irrelevant :p #dev will just do block height/index to u32, tx_index to u16 and call_index to u8 #dev true what should i look at as a ref instead? sol? #dev its a big change so bear with me #dev sol/eth #dev oki #dev big as in it affects a lot of stuff everywhere but no worries will handle them easily #dev thats all, thanks for listening to my podcast, like, share and subscribe #dev cu on next episode #dev ACTION liked #dev upvoted #dev :D #random test #random test back #dev lol #dev admin: wer subscribe button #dev : @dasman pushed 1 commit to master: 214458322a: add deg2 (dag_browser) code #dev : draoi: I have this issue in tau, running taud locally I can connect to my seed and get the peers (which is only one and is mine) when hostlist is saved and I'm trying to rerun taud it doesn't connect to my saved peer, nor does it get from seed again #dev : Weirdly enough i don't see the same issue in darkirc #dev : My peer is saved as gold btw #dev : Removing hostlist or commenting it out all together, or connecting manually through peers=["tcp+tls://dasman.xyz:23332"] works if anyone have this issue #dev hanje-san: does this look good? https://imgur.com/EvowAjM #dev from two days ago #random test #random test back #random test #random test back #random hanje-san here? #random test #random test back #random : test #random test back #dev : that should never happen #dev : can you DM me the log? #random : https://www.tomshardware.com/software/someone-made-a-functioning-irc-client-that-runs-entirely-inside-the-motherboards-uefi #random : Title: Modder made an IRC client that runs entirely inside the motherboard's BIOS chip | Tom's Hardware #random Title: Modder made an IRC client that runs entirely inside the motherboard's BIOS chip | Tom's Hardware #random https://twitter.com/nayibbukele/status/1776733270186545406?s=19 #dev gm #dev dasman: have you ever used tig? #random wtf his bio. tempting offer but i'd be worried living under a self proclaimed "Philosopher King" #random A Chinese shopping center went wild when 100 huskies broke free from a pet café and ran rampant throughout the mall: https://imgur.com/gallery/25bIt5V #random Title: 100 huskies cut loose in shopping mall after pet café mishap - Album on Imgur #dev gm #dev what do you think of this implementation for zkas/parser.rs with the code duplication hanje-san: https://pastebin.com/HXyZrAHb #dev Title: ret.push(Witness { name: k.to_string(), typ: m - Pastebin.com #dev 1. cargo fmt is your friend, you should run that #dev 2. code indents ideally should only go 3 indents in max #dev 3. there is a lot going on there. try taking type out of there as another variable. #dev 4. the comment says you can add a TryFrom impl to VarType directly then just do token.into()? which is much shorter #dev okay thanks for the feedback, will look into it now #random anyone heard of this? My friend just sent it to me: https://bevyengine.org/ #random Title: Bevy Engine #random "data-driven game engine built in Rust" #random it looks good #random ChrysaLisp OS: https://www.youtube.com/watch?v=ADvyZOxlBu4 #random Title: gui - YouTube #dev draoi: https://github.com/tokio-rs/loom #dev Title: GitHub - tokio-rs/loom: Concurrency permutation testing tool for Rust. #dev : @draoi pushed 6 commits to master: b631a10629: channel: only print disconnect errors when we're on SESSION_NET... #dev : @draoi pushed 6 commits to master: 8a413d1c3d: refine_session: reorder start(), shutdown sequence... #dev : @draoi pushed 6 commits to master: ec688f485a: p2p: start refine_sesssion() before outbound_session()... #dev : @draoi pushed 6 commits to master: 182efa4b46: p2p_test: slightly more expansive testing #dev : @draoi pushed 6 commits to master: 69470ff9b2: doc: fix incomplete debug statements on hosts.rs #dev : @draoi pushed 6 commits to master: 7870d006d2: chore: cargo fmt #math language for formalising protocols: https://arxiv.org/pdf/2203.02461v2.pdf #math A Theory of Composing Protocols #math > In programming, protocols are everywhere. Protocols describe the pattern of interaction (or #math communication) between software systems, for example, between a user-space program and the kernel or #math between a local application and an online service. Ensuring conformance to protocols avoids a significant #math class of software errors. Subsequently, there has been a lot of work on verifying code against formal protocol #math specifications #dev hanje-san: no I haven't, but looked it up, I thought people would want to browse the dag like that #dev : @draoi pushed 2 commits to master: fe0801bcf1: outbound_session: fix bug causing nodes to get stuck in peer discovery... #dev : @draoi pushed 2 commits to master: 225e9bbd72: chore: make clippy #dev : dasman: fixed ^ #dev : awesome! Thanks #dev dasman: install tig and use it, look how they do it #dev ++ #random test #random test back #random test #random test back #random test #random test back #random Merge mining tari and xmr https://twitter.com/LouisLibre/status/1776997708504465462 #random https://twitter.com/LouisLibre/status/1777023599947190311 Built a Proof-of-Concept Rust Random-X miner. I'm sharing the code because it was mostly stolen from all over the place ( py solo miner, tari code, etc). #dev gm #dev gm, happy total solar eclipse day #dev gm #dev !topic darkfid threadpools #dev Added topic: darkfid threadpools (by hanje-san) #random test #random test back #dev gm #philosophy Damn, I have just come back from seeing Dune 2 #philosophy 10/10 #philosophy really? that's great, i'll watch then #philosophy kinda thought the first one was more style than substance #philosophy It is a strong topic about politics/religion #philosophy It has* #philosophy Indeed, but this second one is more deep and dramatic #philosophy https://en.wikipedia.org/wiki/Frank_Herbert%27s_Dune #philosophy Title: Frank Herbert's Dune - Wikipedia #philosophy this series is really good #philosophy The first one is about amazing pics but very flat #philosophy 2nd > 1rst #philosophy ah wonderful ty #dev draoi: darkfi/src/net/p2p.rs:64 #philosophy Once you see it ping me and tell what you thougted about it #philosophy Well, I'm going to sleep, see you at the meeting tmrrow #dev can you make preference an enum? darkfi/src/net/session/outbound_session.rs:200 #dev 0, 1, 2 doesn't say much. you have comments describing them, but ideally they would have a name instead. then you don't need _ => { panic!(); } branch either #dev ++ #dev you're reviewing the code now btw? #dev also the docstring for fetch_addrs_with_preference() should have empty lines with ///, the blank lines might error #dev yes #dev ok just put all comments here and i will get to them #dev ty, will slowly work through this week... got other concurrent tasks too #dev : @zero pushed 1 commit to master: af8f1e9d20: net: remove public visibility from outbound_session::Slot, and correct broken docstring #dev can you convert all the NOTE: comments to proper docstrings? #dev also the methods wait() and notify() should have docstrings #dev PeerDiscovery docstring is incomplete, it says sends out GetAddrs, but it is also doing seed. You should write exactly what it does there. #dev check all TODOs in net/ #dev dasman: https://agorism.dev/uploads/screenshot-1712558458.png #dev draoi: darkfi/src/net/p2p.rs:47 #dev (line 49 also) #dev : @zero pushed 1 commit to master: c2c967a673: net: p2p.stop() calls channel.stop() on all channels #dev draoi: ^ i need you to verify this works correctly #dev b631a10629f (draoi 2024-04-07 09:37:55 +0200 191) if self.session.upgrade().unwrap().type_id() == SESSION_NET { #dev darkfi/src/net/channel.rs:282 #dev this line is broken #dev https://dietertack.medium.com/using-bit-flags-in-c-d39ec6e30f08 #dev Title: Using bit flags in c++. An Introduction to Using Bit Flags | by Dieter Tack | Medium #dev darkfi/src/net/protocol/mod.rs:76 #dev !topic rln contract status #dev Added topic: rln contract status (by brawndo) #dev draoi: instead of SESSION_NET .etc, maybe instead do SESSION_ALL - SESSION_REFINE, .etc (you need to lookup how to subtract bitflags) #dev i think it's SESSION_ALL & ~SESSION_REFINE or sth #dev What do you need to do? #dev it's just bitflag stuff, draoi is using them like values instead of bitflags #dev draoi: https://stackoverflow.com/questions/44690439/how-do-i-print-an-integer-in-binary-with-leading-zeros #dev Title: rust - How do I print an integer in binary with leading zeros? - Stack Overflow #dev https://doc.rust-lang.org/std/fmt/#formatting-traits #dev Title: std::fmt - Rust #dev "{:032b}" #dev SESSION_NET == SESSION_INBOUND|SESSION_OUTBOUND|SESSION_MANUAL|SESSION_SEED it seems #dev there should be a SESSION_ALL = 0b11111 defn, then do SESSION_ALL & ~SESSION_REFINE, or SESSION_ALL & ~(SESSION_SEED|SESSION_REFINE) #dev ah the goal there is to test if it's any of the sessions except SESSION_REFINE? #dev yep #dev Yeah you need a SESSION_ALL and then flip the unwanted one #dev ++ #dev draoi: some unsafe methods like darkfi/src/net/hosts.rs:947 #dev should be marked with visibility inside net only #dev you are already doing this in darkfi/src/net/session/refine_session.rs:58 #dev it's important to go through all the methods and think about what is your public API, internal API and private functions, then mark the methods correspondingly #dev !topic lilith upgrade #dev Added topic: lilith upgrade (by hanje-san) #dev : @zero pushed 1 commit to master: 425df4c8cb: hosts: fix macro calls formatting #dev : @parazyd pushed 1 commit to master: bf1303b6f3: drk: Stub function for contract deploy authority generation #dev : @skoupidi pushed 1 commit to master: d9304c15cd: runtime: changed call_index from u32 to u8 #dev hanje-san, brawndo: lmk if I missed anything #dev : @parazyd pushed 1 commit to master: 509d9bf0d4: net: Fix bitflags #dev Weirdly SESSION_NET was used for arbitrary protocols #dev But that covered the seed session as well #dev upgrayedd: checking #dev i changed the bitflags here: 2b18e5307b9878e74efbb9d65e935d797a9fe58c #dev previously we were using SESSION_ALL for those protocols #dev which includes seed session #dev so I believe SESSION_NET (which is SESSION_SEED & SESSION_OUTBOUND & SESSION_INBOUND) is correct #dev are you responding to me? #dev i am responding to 509d9bf0d442f5e34107ed7ed6b75dba122af4e8 #dev : @skoupidi pushed 1 commit to master: 1a0f997f28: contracts: simplyfied call index usize usage #dev ah ic #dev upgrayedd: lgtm #dev draoi: you could do SESSION_SEED & SESSION_DEFAULT which might be clearer, or SESSION_ALL & ~SESSION_REFINE #dev oh nice it's !SESSION_REFINE, not ~ #dev I don't think you should be registering protocols like the event graph to the seed session #dev ++ #dev Also where you wanted to test if something is SESSION_NET, it doesn't always have to be the case #dev You likely want to test if any of _MANUAL, _SEED, _OUTBOUND, _INBOUND is enabled #dev if self.session.upgrade().unwrap().type_id() & (SESSION_ALL & !SESSION_REFINE) != 0 #dev _NET is not a valid value for channels. each channel can only have a single bit enabled in the bitflag #dev Yeah I removed SESSION_NET #dev : @skoupidi pushed 1 commit to master: 0318720cd3: blockchain/tx_store: changed location tx_index from u64 to u16 #dev hanje-san: for the TryFrom impl for VarType in zkas/parser.rs, doesn' #dev *doesn't this mean I'll need to add a new impl block for TryFrom? Similar to this: https://doc.rust-lang.org/rust-by-example/conversion/try_from_try_into.html #dev Title: TryFrom and TryInto - Rust By Example #dev where I'll have the match for EcPoint, EcNiPoint etc? #dev yes #dev !list #dev Topics: #dev 1. darkfid threadpools (by hanje-san) #dev 2. rln contract status (by brawndo) #dev 3. lilith upgrade (by hanje-san) #dev upgrayedd: Would things work fine on a single node if I start and stop minerd at various times? #dev I want to avoid mining all the time while I'm doing dev stuff, but then will the txs live in mempool while I'm not mining? #dev brawndo: mempool is stored on disk in TxStore.pending tree so closing down should be fine #dev when you close minerd darkfid will error out iirc, I haven't cleaned/handled that stuff in the node yet #dev Yeah so I can submit txs, and then start minerd at any point and expect those txs in the next block? #dev ah, ok #dev Will wait on that fix then, have a few more things to finish up in the rln contract anyway #dev well since I assume you use the contrib/localnet/darkfid-single-node/tmux_sessions.sh script you can simply shut that down and restart it #dev since native contracts would have been deployed on first run, consecutive runs should be fast af #dev so the node will pick up the unproposed txs in the node #dev Not ideal :) #dev I would suggest tho to increase the mining target and/or buffer size, so they are not instantly included in a block #dev because the dafault config is like 20s with 1 block buffer #dev so every block is instanlty finalized #dev since remember fork blocks are in memory, so shutting down means they get lost #dev Yeah I don't want to shut down the node though #dev Just the mining part while I don't need it #dev yeah I got it #dev perhaps just write a script to inject tx to the pending store directly? #dev so when you restart they will get picked up #dev but anyway I'm suggesting duck tapes #dev XD #dev ;) #dev No rush #dev brawndo: here? #dev biab lunch #random https://www.youtube.com/watch?v=UuNfu7db--Y #random Title: Relaxing Music From Playstation Games (PS ONE) - YouTube #random nostalgia overload #random : https://www.bbc.com/news/uk-england-sussex-68725446 #random : Title: Russ Cook: The Hardest Geezer who ran the length of Africa #random Title: Russ Cook: The Hardest Geezer who ran the length of Africa #random : wow #random : lol i saw that, what a mentalist #random : I'd call him achiever ;) #random : quirky english energy #random : 352 days, 16 countries, raised in excess of GBP 700,000 for charity. that is something #random : ah yes 6 months salary for a mid-level manager in a "cancer charity" #dev upgrayedd: b #dev brawndo: it was a silly confirmation #dev context: block height went from u64 to u32 #dev we are using it in the miners secret deriviation, but Fp::from doesn't work #dev so the question was if its ok/safe to use (height as u64).into #dev to get the pallas to use in the poseidon hash #dev Yes for sure #dev : @skoupidi pushed 2 commits to master: c69732379e: script/research/gg: updated to latest darkfi structures #dev : @skoupidi pushed 2 commits to master: 9f5e6aafc4: blockchain: changed block height from u64 to u32 #dev hanje-san: whats the prefered depth for the txs merkle tree? right now we use 1 #dev 1? #dev It should be MERKLE_DEPTH_ORCHARD #dev that's for coins, and nullifiers is 256 #random test #random test back #dev Is depth of 1 a better choice there? #random test #random test back #dev I suppose there's less hashing involved? #random test #random test back #dev wait wait my mistake #dev its the max_checkpoints #random test #random test back #dev tree = MerkleTree::new(1) means max checkpoints of 1 right? #dev though it was the depth #dev Yeah #dev 1 is good #dev That means you can revert adding your coinbase tx easily #dev well it should be 0 #dev since we rebuild it, we don't store it anywhere #dev As a builder I mean #dev There's no downside to having 1 there #dev well yeah just saying #dev will leave it as 1, and we might add some handling in the future, if ever needed #dev gm #random test #random test back #dev gm #random test #random test back #random ye #random test #random test back #random test #random test back #random test #random test back #random ok last time #random nice we have telegram bot mirroring inside the 'forum' #random testing linkz https://stackoverflow.com/questions/5676646/how-can-i-fill-out-a-python-string-with-spaces #random Title: How can I fill out a Python string with spaces? - Stack Overflow #random dammit #random test #random test back #random testing linkz https://stackoverflow.com/questions/5676646/how-can-i-fill-out-a-python-string-with-spaces #random Title: How can I fill out a Python string with spaces? - Stack Overflow #random final test #random ok depl'yed #random #dev hanje-san, brawndo: block structure is as per doc/src/arch/consensus.md spec, cheers #dev Noice #dev yeah #dev hanje-san i'll have to finish my implementation for the VarType tomorrow, will update then, need to get some sleep #markets https://x.com/DefiLlama/status/1777055430843228273 #dev no rush, be relaxed ;) #dev k :> #markets In March, crypto projects raised over $1 billion, reaching levels not seen since November 2022. Indicating a growing trend in investment allocated to crypto projects. #math recently came across Ross Anderson who was a professor at Cambridge uni in security/cryptography, he has a lot of papers collated here https://www.cl.cam.ac.uk/~rja14/ #math Title: Ross Anderson's Home Page #dev so you guys are the Devs of darkfi? #dev This is where the devs are, yeah #dev hi #dev o/ #dev sup #dev hello #dev hihi #dev holla #dev o/ #dev !start #dev Meeting started #dev Topics: #dev 1. darkfid threadpools (by hanje-san) #dev 2. rln contract status (by brawndo) #dev 3. lilith upgrade (by hanje-san) #dev Current topic: darkfid threadpools (by hanje-san) #dev great. #dev we should in darkfid, use different executors running in separate threads for the database/consensus and net code #dev the netcode uses async which is built for many small tasks spawned and closed #dev whereas sled assumes control of the thread its running in (and is built for that) #dev by spawning N CPU threads, creating 1 executor and running it in all those threads, we don't gain the benefit of async #dev ok yeah, for now it could just be 2 executors, one main and one net #dev in the future we could get more fancy with prioritization and stuff but for now that's probably too much. I'd consider splitting sled/consensus in one threadpool, and net in another. everything else can go with net or a third threadpool. #dev async_daemonize macro setups the executor, which is the same regardless of app #dev so if we want more than one it should be created there #dev also this stuff is really subjective how you allocate threads to threadpools #dev this concerns darkfid mainly #dev /fin #dev db/consensus would have just one thread? #dev Not necessarily #dev couldn't that lead to sync issues if there are multiple #dev the OS is quite good at scheduling threads so you could just spawn a bunch #dev loopr: we already have multiple threads #dev Yeah #dev in the future the net code could do stuff like deprioritizing certain tasks like refinery, while marking certain tasks high priority. there would be internal executors for prioritizing tasks #dev specifically thinking of db writes/reads #dev should i click next? just wanted to highlight this point but it's low(er) priority and an ez patch when we want to make it #dev ++ #dev We should just do it #dev !next #dev Elapsed time: 10.5 min #dev Current topic: rln contract status (by brawndo) #dev XD #dev Rather it will be forgotten #dev we can add it as a TODO on tau :D #dev Yeah we should start testing that #dev good idea #dev darkirc has been stable for me #dev please do, thankyou #dev :D #dev ok rln #dev Will just give a quick rundown #dev i tried to add the task #dev "You don't have write access #dev $ tau add project:darkfid "split executors into separate threadpools for consensus/DB and net" #dev !topic tau debugging #dev Added topic: tau debugging (by brawndo) #dev after it's done, i'll look at RLN. curious how deploying works too #dev The idea with RLN is (optional) spam protection on IRC. People would have to stake network tokens in exchange for making an anonymous account that can be used to chat. #dev The staking works as follows: #dev - There is the Money Contract, and there is the RLN Contract #dev - The RLN contract has 2 functions: Stake and Unstake #dev - A user does a Money::Transfer + RLN::Stake in order to stake some tokens #dev - The Money::Transfer should result with one output that has a spend_hook set to RLN::Unstake so that it cannot be spent #dev - The output should also be tied to the RLN identity #dev - When staking, all coin attributes except the "public key" are revealed. IMO this is not an issue. #dev where is the RLN code? #dev RLN::stake() is not mandatory in your tx #dev - By constructing the coin as such, in combination with RLN - once an account is slashed (i.e. its secret keys are obtained) - the coin and its nullifier can be fully constructed and unstaked. #dev hanje-san: https://codeberg.org/darkrenaissance/darkirc-rln/src/branch/master/src/entrypoint/stake.rs #dev Title: darkirc-rln/src/entrypoint/stake.rs at master - darkrenaissance/darkirc-rln - Codeberg.org #dev ah its a branch ty #dev It's a repo #dev RLN::Stake does not have to be enforced anywhere outside of RLN::Stake function #dev Once it's called, that's indended, it doesn't have to be forced #dev thanks, this is exciting #dev - If the staking state transition passes, the identity account is added to a Merkle tree and the user can now produce an inclusion proof in order to prove they're allowed to chat #dev Unstaking works as follows: #dev - Any holder of the identity secret can construct the staked coin #dev s,secret,&s, #dev would you copy pasta this to the book? just these bullets are good #dev this should be presented as docs. #dev - By being able to do this, the holder can call RLN::Unstake and this should allow moving the coin and removing its spend_hook (which links to RLN::Unstake) #dev - If the state transition passes, the identity is removed from the Merkle tree, and further inclusion proofs will not be valid #dev . #dev sounds good #dev hanje-san: The repository will contain the documentation, I'm just giving an overview to everyone #dev I have a few big picture questions, mostly curiousity #dev It's useful to discuss #dev HCF: btw we changed DAO so it makes arbitrary contract calls now #dev a) This is 'spam' at the network level, or at the level of 'messages I don't want to see'? #dev hanje-san ah nice! #dev the code was audited and passed #dev HCF: It's on the network level, with an arbitrary threshold #dev b) how will users get tokens? PoW mining or some market somehow? I wonder if this would make it harder for new (non-spam) people to join chat #dev HCF: have you seen how bluesky does moderation? they have optional moderator sets #dev HCF: The latter can be done manually by users, likely through the IRC client #dev c) how does this interface with ability to change/rotate nicks? #dev brawndo ++ #dev about b) we have a free tier, this is for heavy load, idea being free tier is rate limited #dev hanje-san I haven't looked into bluesky #dev HCF: b) Tokens would be obtained through mining or market. We'll also have free tiers likely #dev c) this allows fully unlinkable messages irregardless of nicks #dev HCF: c) It is not linked to nicks. Each message would produce a ZK proof #dev Ah ok rate-limited free tier seems like a really good option #dev yeah it's perfect. who said fully anon & p2p chat couldn't be done? #dev HCF: This proof proves you have a registered account, but it's not linked to anything public #dev OK, figured nicks would not be related (similar to how DMs) work, but wanted to check #dev So you can change nicks at will, but you have to produce valid inclusion proofs #dev ++ #dev This is done by proving you staked a coin and have that identity commitment in the Merkle tree of commitments #dev I saw the audit btw, very exciting. it was nice that they complimented the code style/philosophy too :) #dev I opted to use a sparse Merkle tree so we can add/remove leaves at will #dev cool brawndo sounds like a good design #dev we can invite timon to test it #dev The hard part will be keeping darkirc in sync with the on-chain tree #dev will that require a custom irc client? or how will the inclusion proofs be integrated? #dev loopr: It will be done through the darkirc daemon #dev cool #dev the optional moderation requires an ircv3 extension to be implemented in weechat or a custom client (which we will work on soon) #dev Yeah the msgs are in a tree so I imagine that without the proof, no msgs get into the tree. So it never reaches the client #dev hanje-san: For things to really work, the proofs should always be against the latest Merkle root #dev hanje-san: So we'll have to figure out a stable way to keep things in sync #dev i think we can allow some margin of error #dev the important thing is we have the mechanism #dev if abused, we can adjust params and tighten the screws #dev so don't worry too much #dev ++ #dev Perhaps #dev Any more questions? #dev all good #dev !next #dev Elapsed time: 17.8 min #dev Current topic: lilith upgrade (by hanje-san) #dev draoi: so since refinery is in net itself, does lilith need to ping nodes? #dev lilith has 2 refineries, the greylist refinery that all noes have via p2p, and a whitelist refinery that lilith itself implements #dev s/noes/nodes #dev noes :D #dev this is to ensure that even if lilith is running for a long time we know its whitelist is still valid #dev lol #dev why do we need 2 refineries? why can't lilith just trust the inbuilt mechanism? #dev i trust you if you think it's better #dev shouldn't lilith just be a stupid router? #dev bc when nodes enter the whitelist they are not checked again, and lilith sends them around to other nodes- the reasoning was it's better lilith periodically checks those nodes as well #dev tbh it's not a huge deal tho if lilith sends bad nodes, since they will go via our greylist refinery anyway #dev why don't we check whitelist nodes? #dev aha ok #dev bc the whitelist is nodes that have already been checked #dev ok lilith is very small anyway #dev i'm ambivalent tbh, i don't think it adds much for lilith to refine it's whitelist occasionally, but nbd #dev 443 lines of code so it's fine #dev ok #dev !next #dev Elapsed time: 4.4 min #dev Current topic: tau debugging (by brawndo) #dev ok something was broken hanje-san? #dev tau add project:darkfid "split executors into separate threadpools for consensus/DB and net" #dev You don't have write access #dev it is also bc lilith does not make outbound connections. for a normal node, if it makes an outbound connetion to a whitelist node that is no longer online, it will get downgraded to greylist. but lilith does not have this mechanism since it doesn't make connections #dev "darkfi-dev:2bCqQTd8BJgeUzH7JQELZxjQuWS8aCmXZ9C6w7ktNS1v", #dev draoi: aha makes sense ty #dev ok resolved in DM #dev !next #dev Elapsed time: 1.5 min #dev No further topics #dev :D #dev XD #dev Sweet #dev so it is done? Looks cool. My first time to meet like this way. #dev have a couple of Qs regarding the constants #dev tnx all #dev welcome taryou #dev yes this is a standard dev meeting #dev started a few impl attempts, but I wonder, can the FixedPoint trait be changed at all? #dev das ende ist der anfang #dev draoi: thanks. #dev loopr: yes ofc, they must all be changed in fixed_bases.rs #dev ty everybody have a nice day #dev hanje-san: uh perfect german grammar #dev generator / u / z are data inside the class. generator is the (x, y) passed from zkas, the others are calculated using find_zs_and_us() fn #dev just we provide some precoded constants (the ones already there) so use enums #dev !end #dev Elapsed time: 4.5 min #dev Meeting ended #dev ty all, gg #dev hanje-san: there seem to be references in halo2_gadgets or something, that's why I am asking #dev some other FixedPoint impl #random i think the tg bot crashed #random or maybe not, sorry my bad #dev also: https://codeberg.org/darkrenaissance/darkfi/src/commit/cf7b3c8c61ac2e1b390ce71612d611b49a0e32e9/src/sdk/src/crypto/constants/load.rs#L96 #dev Title: darkfi/src/sdk/src/crypto/constants/load.rs at cf7b3c8c61ac2e1b390ce71612d611b49a0e32e9 - darkrenaissance/darkfi - Codeberg.org #dev vs #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/sdk/src/crypto/constants/fixed_bases.rs#L110 #dev Title: darkfi/src/sdk/src/crypto/constants/fixed_bases.rs at master - darkrenaissance/darkfi - Codeberg.org #dev darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:203 #dev for ValueCommitV #dev yeah #dev but why are there two diff ValueCommitV structs #dev because it needs cleaning up ;) #dev :) #dev so I can remove the ones in load.rs? #dev is it used? #dev not as far as I could validate #dev so when you delete the code, and run make test, it works? you can compile? #dev understood, I haven't yet deleted anything, so will first go through these steps, and if all good, commit #dev `make clippy` helps #dev 1. check if it's used, gather info 2. make proposal 3. ask here #dev No rule to make target proposal :p #dev some questions about staking for irc: How long is a staking/unstaking period? #dev haha #dev SIN: For as long as you want. Though we should likely have some grace period for unstaking, e.g. 2 days or whatever #dev https://rate-limiting-nullifier.github.io/rln-docs/smart_contract.html#withdraw--slashing #dev Title: Smart-contract - Rate-Limiting Nullifier #dev Here there are some real-world "issues" that happened #dev So we should keep this in mind #dev ah that's what rln stands for #dev 'their funds being locked to freezePeriod amount of blocks, giving others an opportunity to slash (slashing happens immediately).' #dev nice #random test #random test back #dev other question, when staked funds are slashed, where does that stake end? #dev in my wallet #dev ;) #dev the slasher's wallet #dev ++ #random <0xhiro> test #random test back #random test #random test back #random hanje-san: It is 1am saturday night, parent's aren't in home, buyed a coke to finish sh1, you're 32 u.u #random nice playlist #random hit hard #random yeah lol #random : no to need to whine about the world we live in, you can try to do something about it .... #random : so if nobody mentioned - I'd like to thank you (all) for your work! #random : oh yes, he did ! be ashamed @arm0408.509d9bf0 !! #random : bad boy ! block him ! @arm0408.509d9bf0 to the jail ! #random : I am sorry :( #random test #random test back #dev gm #dev gm brawndo #random : 3.5 minute stereo song to a file of 192 KiB (a guy behind ffmpeg and others) #random : https://bellard.org/tsac/ #random : Title: TSAC: Very Low Bitrate Audio Compression #random Title: TSAC: Very Low Bitrate Audio Compression #random hehehe cool #random i like this guy #dev How's it going airpods69? #dev hi #dev o/ #dev i always wake up from lucid dreams as soon as i realize i'm dreaming #random https://old.reddit.com/r/LucidDreaming/comments/28vpjq/realizing_im_dreaming_causes_me_to_wake_up/ #random Title: Blocked #random tips on how not to wake up from lucid dreams #random last night i realized i was lucid dreaming, yelled "FUCK YES!" and did a backflip then exited lol #random reddit says to instead stay calm #random https://bellard.org/mersenne.html output is a number of size 22M #random Title: A small C program to print the biggest prime number #random putchar mf #random interesting, what do with this knowledge? #random thats outdated #random have you seen wolfram's megabook? #random https://www.amazon.com/New-Kind-Science-Stephen-Wolfram/dp/1579550088/ref=tmm_hrd_swatch_0?_encoding=UTF8 #random Title: 503 - Service Unavailable Error #random > 1000 page hardcover book is $4 #random subsidized obv #random test #random test back #random watch this starting at the 34:10 mark https://odysee.com/@DollarVigilante:b/NASA-Deceivers-EclipseQuakes-VIDEO-1080p:0 #random Title: NASA Deceivers, EclipseQuakes & Apocalypse Zombie Cicadas with STDs While Israhell Starts World War III #random no #random watching #random wtf #random odysee is such a cool site, love LBRY project #random i found it wild that in the snowden docs there was a project to transmit radio waves at people #dev brawndo, pretty good here. Trying to implement a zk proof that hanje asked me to do so banging my head over that. What about you? #dev hanje-san, what do you think about lucid dreams? are those dreams or your thoughts? I think of it as thoughts #dev I'm working on the CLI wallet, adding client-side functionality for deploying custom smart contracts #dev \ #random airpods69: i'm definitely awake and conscious when lucid dreaming #random i know those dreams you talk about where you realize it's a dream while still dreaming but not having conscious control #random I hope the dreams are nice to be stuck in like that #dev : @parazyd pushed 1 commit to master: f011b02336: drk: Introduce SQL schema for Deployooor contract #random sounds really close to sleep paralysis #random you're not stuck, i have the opposite problem of trying to stay in the dream ;) #random i keep getting ejected as soon as i realize i'm dreaming. the illusion breaks and it's like your mind melts #random imagine where you are now but everything, the walls, and your surroundings melt away and you're in bed where it's pitch black #random it's very heavy and my head kinda hurts when it happens #random ahh that is a draining shift in reality #random to* #random s/in/to (my bad ;-;) #dev upgrayedd: We should make drk not always require an RPC connection to a node #dev There's a lot of operations that can be done without it #dev Should we just make Drk::new() take an Option for the endpoint? #dev : @parazyd pushed 1 commit to master: faf96deeaa: drk/deploy: Implement deploy auth listing #markets https://www.coingecko.com/en/coins/toncoin #markets Title: Toncoin Price: TON Live Price Chart, Market Cap & News Today | CoinGecko #markets Telegram go brrr #markets damn they have an actual usable product unlike signal #markets https://www.bloomberg.com/news/articles/2024-04-08/crypto-scam-criminal-trial-tests-code-is-law-claim-by-trader #markets Title: Bloomberg - Are you a robot? #random : Nice #random : The samples are impressive #random : The lowest-bitrate stereo is noticeably worse #random : But the higher one is pretty good #random hanje-san: Here? #random https://github.com/squidowl/halloy #random Title: GitHub - squidowl/halloy: IRC application written in Rust #random https://thecoder08.github.io/hello-world.html #random Title: Lennon McLean | My Website #random brawndo: i actually know this. it doesn't work with darkirc, and i was trying to debug the sourcecode, but the devs are kinda dumb #random ah #random The gif was attractive #random yeah it looks nice #random lol that hello world is complex #random Lemme see if I remember asm #random https://termbin.com/ji7w #random 4.2K lmao #random Computers suck #random lol #dev : what is this #dev : ah the halloy protocol impl is kinda non-strict #dev : it doesn't prepend a ':' character if there are no spaces #dev : nice, fun little client #random hanje-san: https://termbin.com/mkui #random Here's a patch that will connect halloy #random It doesn't properly format messages without spaces but I'm not gonna bother with that #dev Imagine writing more code with the goal being to follow the protocol less #random nice, they have an IRC channel on libera #halloy #random well done lol, i kneel #dev i wanted to see if it could be patched for ordering messages based on timestamp #random nasm -f elf64 hello.asm #random ld -m elf_x86_64 -s -o hello hello.o #random ./hello #random Segmentation fault #random no idea why it works for i386 but not x86_64 #random 64-bit syscalls are different #random hanje-san: fyi: https://termbin.com/g34i #random ^^ ty. how do you know this? lol that's some deep knowledge #random ACTION mfw when i use computer but not know how it werk #random Lots of reverse engineering of Maemo stuff #random It was mostly 32 bit (which is easier than 64 bit) #random This for example is fully RE-d from binaries https://github.com/maemo-leste/osso-abook/tree/master/lib #random Title: osso-abook/lib at master · maemo-leste/osso-abook · GitHub #random ah nice #random really cool #random https://github.com/maemo-leste/liblocation/tree/master/src #random Title: liblocation/src at master · maemo-leste/liblocation · GitHub #random This too #random have you seen the microcontroller phones? #random Which ones? #random like esp32 ones such as lilygo #random I know esp32, but didn't know there were phones #random Like GSM you mean? #random https://www.lilygo.cc/collections/wearable-kit #random $35 smart watch with wifi/bluetooth, $42 for Lora #random ah this is likely just bluetooth and stuff #random Yeah #random There's no open GSM stack unfortunately #random yeah did you see the new radio stuff which defines a radio bandwidth for user telephony? #random promising #random There's been many attempts #random Infrastructure is bad, and also pirate stations are illegal above certain signal strength #random But still fun to spam SMS messages to people walking near your house lmaop #random it was just a week ago, i cant find the news #random https://www.hackers-arise.com/post/software-defined-radio-part-6-building-a-imsi-catcher-stingray #random its annoying how expensive the linux phones are #random why arent linux phones cheap #random Not massively produced in Chinese sweatshops :D #random Old phones are cheap tho #random Here's one that runs Maemo for 6 bucks https://www.ebay.com/itm/266755708990 #dev brawndo: yy was gonna make that change anyway, so you can init wallets and stuff without needing the rpc endpoint #random i cant find the news about the open telephony but i found this: https://www.theverge.com/2024/2/12/24070550/open-ran-standard-us-funding-5g-huawei #random btw i saw bruce perens is trying to do sth called post opensource. his lecture worth skipping through on youtube to see his critique #random solution is a contract where just big companies over 5m revenue pay #random Bruce Perens is a faggot #random lmao yeah i just sometimes check what old celebs are doing #random this guy is a huge faggot https://www.wired.com/story/yanis-varoufakis-technofeudalism-interview/ #random > technofeudalism #random > Over Zoom, I spoke to Varoufakis #random poser #random https://www.theregister.com/2020/03/27/grsecurity_bruce_perens_gpl_settlement/ #random He sued my friends because they wouldn't give their GPL work for free #random worth seeing his critique of opensource tho since it's has some good material #random https://agorism.dev/uploads/screenshot-1712660646.png #random the DEI problem #random kek #random biab #dev gr8 #random Is this working? #random no #random jk #random ty #random you can use test btw #random test #random test back #random test #random test back #random right #random or for more flavor: #random !hackersays #random “Prolonged contact with the computer turns mathematicians into clerks and vice versa.” — Alan J. Perlis 15[Quote #55dd0d] #random !hackersays #random “And don't tell me there isn't one bit of difference between null and space, because that's exactly how much difference there is.” — Larry Wall 15[Quote #5e7ff2] #dev brawndo: here? #dev : @skoupidi pushed 1 commit to master: d3ab4be743: drk: make rpc_client optional so its not required it in every operation #dev yo #dev Yeah great #dev Thanks for doing it #dev brawndo: just keep in mind that some operation still require the rpc calls, namely to tx operations, since they need to retrieve the corresponding zk stuff from the node #dev Sure, we just use common sense for that stuff #dev well sure, just saying, as common sense is not that common lately :D #dev haha #random !hackersays #random “A fool with a tool is still a fool.” — Anonymous 15[Quote #999584] #random ouch i feel personally attacked #dev : @skoupidi pushed 2 commits to master: 96af06da04: contrib/localnet/darkfid-single-node: updated README.md to reflect latest drk changes #dev : @skoupidi pushed 2 commits to master: 722c786157: darkfid: use a hot-swapable JSON-RPC client to handle errors while communicating with minerd #dev brawndo: you are now able to shutdown minerd at will, while darkfid still runs #dev obviously the caveat being that with a single node, block production will halt, until the minerd is back up and darkfid re-establishes the connection, in order to produce/mine blocks #dev in multiple nodes scenario, the node still follows the rest ones, aka not halting, just can't produce/mine on its own, until its minerd is back up #dev it will just keep retrying to connect to minerd #random lmao! #dev hanje-san: https://codeberg.org/darkrenaissance/darkfi/pulls/252 #dev "Implemented generalisation for generator constants access" #dev am prepared for your critique, as I assume you won't like much the global variable I used #dev but couldn't come up with a better idea for now #dev yy that's the plan #dev Thanks a bunch #dev side note: haven't been able to get tor-browser to work with my hw security key for login, it doesn't access the key, while it works on other browser #dev if I'd like to run a tor node, is there any diff in terms of safety if I run it at home or on a vps? I would think on a vps is better as the home can obviously be related to me (the vps too but maybe not *that* easily?). #random test #random test back #markets https://twitter.com/paoloardoino/status/1777339746051600531 #markets Paolo Ardoino 🍐(@paoloardoino): This #TOKEN2049 in Dubai will be 🔥 @telegram / @Tether_to https://t.co/BLCvvVAMfn #random hanje-san: mind if I drop a dm? #dev loopr: you need to patch zkas so it can be used #dev also you don't need any globals #dev maybe start with patching zkas first so you can specify the (x, y) for generator consts #dev about tor: running it on a vps is insecure. for full anonymity you should run it locally #dev well only as secure as the vps (which if you trust a vps, then why use tor?) #random sure but if it can be posted here or in #math, then that's better #random oh yeah, #math would be better #math So, I was trying to write a zk proof in which there is a set of EC points in a merkle tree and I own one of those points, that is P = xG and P is a part of the set. #math Now if I take just a merkle tree, I can prove that I own a leaf node in that merkle tree using proof path. With a set of EC points, the data nodes which create the leaf nodes would be that set #math Merkle tree's public key would be the root node, and that is created by the hashes which sounds good to me. I treat P as the root node, xG as the proof path then it is possible to have a zero knowledge proof that I own a node but then P won't be able to be a part of the set since it is supposed to be a hash #math so kinda stuck with how to get this done. (here is the braindead stuff I was thinking about while trying to implement it: https://write.as/h635wlnt6xh7p.md) #math (also write.as won't let me post reference links but those are just existing there and I write down my take away from those links. apologies for the shit formatting) #math looking, sec #math airpods69: so look inside proof/ inside darkfi, and reach in the docs about zkas #math then working with zk proofs would make more sense, esp trying to run some examples .etc #math you can cd src/contract/dao or src/contract/money and run make test #math https://codeberg.org/darkrenaissance/darkirc-rln #dev hosting in a country with better privacy but sure #math check this example too #dev then I prob don't understand what you mean by "patch zkas" #dev i thought globals in this case wouldn't be too bad as it's just constants #math okayy, getting onto it. also about that document, was I a bit close to what the actual thing should be like? #math no it's more simple than that. if you look at .zk files, it is just a simpler thing #math nothing to do with polynomials. i think maybe you need more working knowledge of making/using zk proofs, before it makes more sense #math understood, thankss #math np! #random What is actually darkfi main use case? How to best use? #random I exchange other crypto to drk and then make it invisible to state? #random test #random test back #random : !hackersays #random : https://www.sifive.com/press/sifive-unveils-the-hifive-premier-p550-the-first-commercially #random : Title: SiFive Unveils the HiFive Premier P550, the First Commercially Available Out-of-order RISC-V Development Board #random : https://penpot.app/ #random : Title: Penpot: The Design Tool for Design & Code Collaboration #random : !askdbrx What does it take to build a great LLM? #random : To build a great large language model (LLM), several key components are necessary: .... #random : Wall time: 1d 9h 15s :D :D :D :D not very useful with 300 GB swap on CPU :D #dev gm #math airpods69: https://darkrenaissance.github.io/darkfi/zkas/writing-zk-proofs.html #math also check examples in that section #dev loopr: EcFixedPoint MY_CONSTANT = (0x07f444550fa409bb4f66235bea8d2048406ed745ee90802f0ec3c668883c5a91, 0x24136777af26628c21562cc9e46fb7c2279229f1f39281460e2f46c8a772d9ca), #dev inside .zk files #dev so that means fix zkas so specifying arbitrary constants for use within that file #dev adding support to zkvm in zk/vm.rs #dev lastly modifying sdk fixed_bases.rs so you can specify arbitrary generators using (x, y) then derive the other params using find_zs_and_us() #dev : @zero pushed 1 commit to master: a8a63387db: doc/book: merge duplicate smart contract sections, applying small corrections #dev : @zero pushed 1 commit to master: 9ff7bc4658: doc/book: s/state_transition()/process()/ #dev : @zero pushed 1 commit to master: ccda1a41df: doc/book: fix nullifier derivation N = H(x, C) #dev : @zero pushed 1 commit to master: 5c98b289ca: doc/book: add section on using zkrender tool #dev : @zero pushed 1 commit to master: e1b259c019: zkrunner: regenerate all proof witness json files #dev : @zero pushed 1 commit to master: 4709bfd314: doc/book: zkas/writing-zk-proofs, add comments on witness JSON files #random test #random test back #random https://www.gamingonlinux.com/2024/04/linux-continues-to-be-above-4-on-the-desktop/ #random linux usage stats rising #random <3 #dev : @zero pushed 2 commits to master: 898ed02880: zkrunner: if (value := foo) can wrongly be false if value is 0, so be explicit with "is not None" #dev : @zero pushed 2 commits to master: 441150bbad: contracts: adjust k values to smallest possible #random oh cool fairphone has noise cancelled earphones (big ones and 'fairbuds') #philosophy https://www.afterbabel.com/p/phone-based-childhood-cause-epidemic #philosophy > Social Media Really Is a Cause of the Epidemic of Teenage Mental Illness #philosophy > Rises in Suicide Among Adolescent Girls (Ages 10-19) #philosophy https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9733629/ #philosophy > mass sociogenic illness spread on social media #philosophy > disproportionately impacting young girls #random https://www.forth.news/bots/reuters/articles/66161a6836b7020cea0a4556 #random ^ EU laws made small browsers marketshare jump up #random https://www.latimes.com/california/story/2024-04-06/30-million-theft-from-l-a-vault-was-seemless-sophisticated-daring #random > Inside the seamless, sophisticated, stealthy L.A. theft that netted up to $30 million #dev Did you test the k change? #dev yes ofc #dev ah interesting #dev I thought it wasn't possible because of the sinsemilla lookup table #dev make sure you remove test-harness/*.bin #dev https://agorism.dev/uploads/layout.png #dev You should update the cache hashes in test-harness #dev most of them are k = 11, and there is something there that stops me putting it to k = 10 #dev you see the big green column in the middle left #dev Yeah that's the lookup table #dev yeah so it's just slightly bigger than k = 10 #dev ok fixing hashes #dev Don't worry about it too much, it's better if we eventually work on the self-optimising algorithm for the zkvm #dev Then it will know when the lookup table is actually necessary #dev sure but it's a low hanging optimization too, but nbd #dev : @zero pushed 1 commit to master: 2d9f5af6b5: test-harness: update pks/vks hashes #dev what would be cool is proof aggregation since we have many zk proofs in a single tx #dev actually nvm, it's only for the same circuit so doesn't gain much #dev hanje-san: is this okay so far for the zkas/parser.rs change? Haven't finished it, but after feedback mainly wondering if the enum VarType is okay to use? https://pastebin.com/vhYTRFhp #dev don't use an error string. Use the darkfi error specified in src/error.rs #dev ah ok, what about using enum VarType? Is that ok because it adds more code? #dev yes it's better #dev brawndo: all actions are failing, and github is saying node16 is deprecated, that projects must now indicate support for node20: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/ #dev ok sweet, was worried that wouldn't be allowed. Will try to implement the rest #dev i tried reading that link but it's so damn confusing #dev why don't they tell us the goddamn stupid flag they want us to add #dev oh wait i got it now #dev - uses: actions/checkout@v4 #dev i think this should be v4 #dev : @zero pushed 1 commit to master: bddc2b5e49: github workflows: update to v4, see https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/ #dev : Title: GitHub Actions: Transitioning from Node 16 to Node 20 - The GitHub Blog #random https://x.com/yacineMTB/status/1777738461002289302 #random I know this guy is probably trolling, but it's not the first time I've seen Rust associated with leftwing/woke stuff, is this just some inside joke? #dev : @zero pushed 1 commit to master: b343d6132c: doc/book: fix broken paths for code #dev wtf the book github action fails with: #dev error[E0275]: overflow evaluating the requirement `for<'v> &'v Simd<_, _>: Add` #dev = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`halo2_gadgets`) #dev same error on the CI test #dev Latest rust nightly is broken iirc #dev ah ok #random lmao #random B1-66ER: ^ #dev ok i updated book manually #dev fyi, https://darkrenaissance.github.io/darkfi/zkas/writing-zk-proofs.html#viewing-the-zk-circuit-layout #dev Sweet #random deki: i wouldn't even call it an inside joke, they're quite open about it #random mfw when deki realizes he's joined a gay cult and there's no going back #dev : @draoi pushed 8 commits to master: 7e95c56d61: session: fix bitflags on mod.rs #dev : @draoi pushed 8 commits to master: a4c9ddcfed: outbound_session: make SlotPreference enum #dev : @draoi pushed 8 commits to master: 3998b80d8f: p2p: delete unused peer_discovery_running variable #dev : @draoi pushed 8 commits to master: 06c64b06aa: doc: upgrade some NOTE comments to docstrings #dev : @draoi pushed 8 commits to master: 2b46488e09: doc: add missing docstrings to net/outbound_session #dev : @draoi pushed 8 commits to master: 38dcac45b5: p2p: remove more unused artifacts #dev : @draoi pushed 8 commits to master: 5b02abf032: lilith: move whitelist_refinery() into session::refine_sesssion()... #dev : @draoi pushed 8 commits to master: 2055820a9a: hosts: fix visibility... #dev B1-66ER: that's all your feedback minus addressing all the TODOs in net which i still need to do #random bahaha just saw this #random should have seen the signs #random but shouldn't be surprised, software generally attracts left/woke types. Hardware isn't like that (for now) #dev Nice #dev happy Eid to everyone celebrating \o/ #random deki cracks me up #random lerl #random : Eid Mubarak #dev Happy Eid #dev likewise #philosophy ethdam: https://agorism.dev/uploads/screenshot-1712759431.png #dev : Eid Mubarak #random test #random test back #random anyone came across this/knows them: https://logos.co/about #random loopr: no never heard of them. Are they similar to cypherstack at all? #random fatback: no idea, and I also don't know cypherstack :) #random https://cypherstack.com/ #random love the cypherstack visuals, simple but beautiful #random logos say they are a "technology stack", but I haven't had time to look much into it yet #random I'll definitely check them out. #random test #random test back #math B1-66ER: Thanks, reading through itt #math does anyone have any good resources to learn about homomorphic encryption? #dev : error[E0275]: overflow evaluating the requirement `for<'v> &'v Simd<_, _>: Add` ... help ... recursion limit, see https://pastenym.ch/#/2MoDkFq8&key=c95ae0533f9e9251e77fe6d8e492dd9d #dev : Title: Pastenym #dev arm0408.509d9bf0: use nightly-2024-04-05 #random test #random test back #random : ...the claim is ... delivers a 2.5x improvement in performance density and a 65% improvement in normalized performance over comparable Arm Cortex-A53 and other cores on the market. It???s also faster than the Cortex-A510 Armv9 core in SpecINT2k6. #random : https://www.cnx-software.com/2024/04/10/imagination-apxm-6200-risc-v-cpu-catapult-cost-sensitive-consumer-industrial-applications/ #random : Title: Imagination launches the APXM-6200 RISC-V "Catapult" CPU for cost-sensitive consumer and industrial applications - CNX Software #math didn't you guys share something just recently? #dev : but `make test && make BINS="...all..."` works just fine with older nightly-2024-02-04 @ 2055820a9_2024-04-10 #math fatback: https://agorism.dev/uploads/zama-fhe-guide.pdf #math hanje-san offered to learn with you: #math #math we could study it together #dev I guess arm0410.2055820a doesn't follow this chat, hence reporting old news #math Oh man I totally forgot! #math were you able to search previous posts to find that out? #math yes #math I really need to up my weechat chops, hahaha. #math to search for older messages, I go through the telegram mirror #math Oh I gotcha #random would it be possible to create two valid disk encryption keys for a linux machine? so that if forced to decrypt, one could decrypt a "non-critical" part? just curious #random loopr: this sounds like the rubber hose file system. Is that what you are referring to? https://wikiless.org/wiki/Rubberhose_(file_system)?lang=en #math stupid question... What did "#math " this do? #random fatback: YES! Plausable deniable encryption is the thing, we used it at swarm #random didn't know there's a whole file system for that #random thanks #random There are two links in the article that refer to the rubberhose part. They seem a little bit older but Cynthia Dwork (differential privacy expert) wrote a paper on it (I think that's link 2). #random It was also thought up by Julian Assange. If you search for rubbberhose filesystem, I saw a few githubs that might be useful for your needs. #random ++ #math fatback: that's because I copied the chat entry from the telegram mirror channel. #math there, all the channels are combined into one, therefore each entry is "prefixed" with the channel it came from (here: #math) #math then who wrote it (here: hanje-san) #math and lastly the chat itself #dev : arm0408.509d9bf0: nightly is broken, we are aware, just use nightly-2024-04-05 #math so "#math we could study it together" means "hanje-san wrote in the #math channel 'we could study it together'" #dev :D #math ooooooooooh #math hahaha #math thank you for explaining that to me. #random : GitHub rated this vulnerability as critical severity with a maximum CVSS base score of 10/10 #random : https://www.bleepingcomputer.com/news/security/critical-rust-flaw-enables-windows-command-injection-attacks/ #random : Title: Just a moment... #random https://www.theguardian.com/media/2024/apr/10/biden-assange-espionage-charges #random read this last week, as well.. i wonder if they will. #memes wtf lmao https://i.4cdn.org/fit/1712790714670809.webm #markets https://twitter.com/haydenzadams/status/1778126466984575166 #markets SEC going after Uniswap... #markets We need DarkFi more than ever #markets Someone should build an AMM style DEX on DarkFi #markets ^_^ #markets It's not possible to do an AMM in ZK afaik #markets But there is interesting stuff like darkpools (renegade.fi) and it's also possible to do order matching in FHE https://codeberg.org/darkrenaissance/darkfi/src/branch/master/script/research/tfhe/src/fhe.rs #markets i think transparent amm would be gud, since the chain is anon it's beter 4 amms than normal chains #memes what the hell lol wasn't expecting someone to crawl out #memes lmao #markets just looked up AMM: automated market maker, what exactly is that? #markets Yeah definitely a possibility #markets deki: That's how DEX works, liquidity is pooled into a smart contract and you swap with the smart contract #random test #random test back #markets ah I see, is that why Uniswap is so well known? Were they amongst the first to 'pioneer' that? #markets Yeah they were the first I think #markets Actually it seems Bancor were the first #markets don't think I've heard of them, first google result is about a supranational currency called bancor Keynes thought up lol #markets https://bancor.network/ #markets noice #dev : @parazyd pushed 1 commit to master: 6a0e5b1311: drk/deploy: Implement contract deployment transaction builder #philosophy the last woolly mammoths died out 2000 BC in wrangel island. wild to think they existed in ancient antiquity! #philosophy https://en.wikipedia.org/wiki/Revival_of_the_woolly_mammoth#Gene_editing #philosophy about nature vs nurture debate: #philosophy https://en.wikipedia.org/wiki/List_of_animals_that_have_been_cloned#Cat #philosophy > Even though CC is an exact copy of her host, they had different personalities; i.e., CC was shy and timid, while her host was playful and curious. #math well make test didn't work so well in src/contract/dao or src/contract/money and I think I am mentally stuck at a point while tryin to implement something. Like I get zk proof now I guess but like hanje pointed out, I over complicated things? #philosophy https://www.inverse.com/article/24268-dinosaur-chicken-gene-editing #math What are you trying to achieve? #philosophy quotes by a yale professor: #philosophy > using the comparative computer software that we have for looking at genomes, you could be like, ‘OK, first reconstruct the ancestral form, but then kick it up to make it a little more like the bird side.’ So you’re kind of edging up the tree towards birds, which is basically like going through dinosaur evolution,” he says. “I bet you you’d eventually get a little, like, #philosophy velociraptor.” #philosophy > more recently extinct creatures? We could make them. “We have the Neanderthal genome; that’s amazing. We have the mammoth genome; that’s mind-boggling,” says Bhullar. #philosophy > “Somebody’s going to definitely bring back Neanderthals and it’s going to be super interesting, and all of a sudden we’re going to have two species of humans on the Earth.” #philosophy > “It’s not something that I want to jump on, and yet, this will happen; the era of designer organisms is upon us,” he says. #philosophy mad to think it's completely possible, just a question of economics at this point #random test #random test back #math Trying to learn about zk proofs, so hanje told me to try implementing a proof > "write a zk proof in which there is a set of EC points in a merkle tree and I own one of those points, that is P = xG and P is a part of the set. " #math Been trying to wrap my head around this and went down a rabbit hole of over-complications #random brb #math why didn't make test work? #math btw lets make it easier, you have values a and b, P = hash(a, b), and prove P is in the set #math lets get the unit test working first #random test #random test back #math ah, B1-66ER, trying it again but it was cause some file was missing two directories back #math getting the logs for the exact error #philosophy https://www.theguardian.com/business/2024/apr/10/shoplifting-crackdown-to-include-55m-for-facial-recognition-tools-in-england-and-wales #philosophy lol england is such an authoritarian crime-ridden shithole #philosophy also "the queen has no real power" #philosophy mfw https://www.theguardian.com/uk-news/2024/apr/11/courtier-demanded-assurance-king-could-not-be-prosecuted-under-new-welsh-law #philosophy > During the queen’s 70-year reign, she vetted more than 1,000 draft laws before they were approved by elected politicians. Those included bills that affected the her personal property such as her privately owned estates in Balmoral and Sandringham. #dev : @draoi pushed 2 commits to master: 7ad0792976: net: make self_handshake_interval a configurable Setting #dev : @draoi pushed 2 commits to master: 61e51b33d0: lilith+net: move whitelist_refinery back into lilith + create new public functions... #random test #random test back #math well, wow tests work now. So all I did was accidentally run `make test` in the darkfi directory and then ran `make test` in the folder dao folder. It worked yay (should have done it yesterday but guess I was too sleepy that time) #dev brawndo/ haumea- what's the status of this TODO? I don't see anything else about setting a remote_node_id in /net. Should it be removed or is this something that needs to be implemented? darkfi/src/net/protocol/protocol_version.rs:188 #math ah yeah you probably needed to generate the wasm contracts by running make inside each src/contract/ subdir first and then doing make zkas #math we should fix that... #dev draoi: that's a debugging feature and the TODO is valid #dev you see ChannelInfo #dev it's something you set inside the config #philosophy interesting video: https://www.youtube.com/watch?v=wEX2MMyK6ps #philosophy - russia will essentially win in ukraine, just a matter of time #philosophy - US wants to withdraw but biden waiting for elections to finish #philosophy - US superpower too overextended, wants to start unrolling its military spending overseas #philosophy - EU spending is too low, taiwan too #philosophy - US doesn't care about middle east #philosophy - whether trump is elected or not matters little since executive doesn't have absolute power (the bureaucrats / deep state does) #dev B1-66ER: you here? #philosophy the US also doesn't have the capacity to develop new military equipment to compete with the likes of China, this is why you have stuff like AUKUS, where it kinda outsources this extra stuff to other Anglo nations #math yep, all good though, it works :D #random test #random test back #dev understand things better now, thanks #dev 1. are .zk files edited manually? #dev 2. each of the EcFixedPoint values need to be changed I suppose? #dev 1. yes they are written by people #dev 2. not just EcFixedPoint, all of the constants can be changed #dev 3. when you say "arbitrary values", can they really be anything? e.g. constant "Burn" {EcFixedPointShort ("0x1234...","0x4321..."), EcFixedPoint "0x2222...", EcFixedPointBase [1,2,3],}? Are they always tuples? #dev 4. Related to 3: should there be any validation in the parser? #dev not tuples, an (x, y) in hexadecimal form 0x... #dev for now, the parser doesn't need to check them, as long as they 32 byte hex values, that's all that matters #dev cool gotcha thanks #dev ++ #dev basically you guys wrote your own compiler, and it seems much simpler than the awful solidity? #dev bra*ndo wrote it #dev very impressive #dev yeah they did well #random telegram mirror bot went down. it's back up #random < djkd #dev is that the zkas compiler here? https://darkrenaissance.github.io/darkfi/zkas/index.html #random < djkd #dev yep #dev that's awesome #dev ++ #math now I feel like I am more confused than closer to a solution. So a and b are two values and I have P = hash(a, b). I need to prove that P is part of a set... but which? #random test #random test back #math Test #math Test back #math airpods69: make a new merkle tree, add in some random values and your P. Then the root of that tree R is public in the zk proof #math See constrain_instance #math Also see tests/smt.rs #math hey isnt to show that P is part of the merkel tree i need number of nodes equal to depth of the node P #math if i need to show a leaf is part of the merkel tree i need log(total no of nodes) of that tree nodes. isnt it #math since every node is hash of the leaf #math srry hash of their leaves #math srry again instead of "nodes equal to depth of the node P" log(total no. of nodes upto the level of node P) #math nvm #random test #random test back #dev quick question - any recommendations for how to get started playing around? In particular interested in contributing to cryptography or zk but looking to understand other aspects as well #dev Hi #dev There's a lot of docs in the wiki/book: https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev I'd recommend going through it #math test #math test back #dev I've gone through various parts of the book, let me keep going through then #dev Feel free to ask things here #dev The contrib page has stuff on what can be done :) #dev But generally mondays' dev meetings are good time to be on the chat #dev Thank you very much, was just trying (and failing) to get weechat to go through tor. I'll get there #dev Will try to join the next dev meeting, or maybe will have to be the one after #dev do others here generally use tor or nym for weechat? or happy enoough with out the box configs? #dev If you want to use the darkfi IRC over Tor, then you should use some special settings its config #dev I think you should also be able to `torsocks ./ircd` but don't take my word for it, if rust doesn't use the libc's connect() then it won't work #dev For other IRC networks in weechat over Tor, there's SOCKS5 support, should be an easy search for a howto #dev darkirc has native tor/nym support #dev nym's broken #dev They want you to run an instance of nym-client daemon *per connection* #random test #random test back #random test #random test back #random Test #random Test back #math B1-66ER thanks, checking those out. I have no clue why I didn't think of using zk/zkas and decided to do everything from scratch. #random check #random check 2 #random check failed #random xd #math lol are you gonna write your own zk proving system including pairings and gadgets for hashing? gl see you in a year (or 2) #random check #dev gm #dev gm #dev damn per connection, that's impractical #dev https://github.com/nymtech/nym/issues/3610 #dev Never happened #dev thx i didn't understand properly before #dev wtf such lazy responses #math I won't now. I wasn't using my brain to think that zkas can be used lol #random crumpet, try using test instead of check #random I was just trying to see if I was connected, cause my connection keeps dropping #random What would the benefit of test be? I know a bot responds, but I can see my messages go through in tg anyway #math gonna give this another attempt today and learn. Been stuck with this for so long that that I now know I am a junior xd #random ah fair, I don't use tg so the bot just makes me feel better that yep it works #random gotcha, but yeah I guess test would possible be better and certainly not worse #random test #random test back #random ^ that's why we use test #dev 10 months lol #random : Dear @elonmusk, $1 million says your latest prediction ??? that AI will be smarter than any individual human by the end of 2025 ??? is wrong. https://twitter.com/garymarcus/status/1777730295586001097 #random didn't he say mars in 2025 before #random what happened to mars #random these guys just wanna stay relevant and keep chaning what they said cause most of the general public will forget about it after changing their names :P #random s/chaning/changing #random s/changing/chanting #random : https://fortune.com/2024/04/09/elon-musk-ai-smarter-than-humans-by-next-year/ #random : Title: Elon Musk says he expects AI will be smarter than some humans by next year | Fortune #random my python program which does if else is smarter than some humans if you wanna talk about that? /s #random XD #random lol #dev !topic wallet impl #dev Added topic: wallet impl (by brawndo) #dev : @parazyd pushed 1 commit to master: aa8fb77538: drk/deploy: Add contract lock tx #dev upgrayedd: block scanning in drk is incorrect #dev upgrayedd: It scans out of order #dev It does `for contract in block.txs { scan_txs_for_contract }` instead of `for txs in block.txs { scan_tx_for_contracts }` #random mad how when craig wright claimed to be satoshi, everyone was talking about him nonstop #random that was wright's intention i guess #random he was as loud and annoying as possible, suing devs and making a huge drama #philosophy : https://tinyurl.com/35wkkdww // unconditional surrender of the Kiev regime... #philosophy : Title: DeepL Translate: The world's most accurate translator #dev brawndo: let me check #dev brawndo: are you sure? I don't see that, whats the line? #random https://github.com/aaronjanse/dns-over-wikipedia #random 1. Type scihub.idk/ in browser address bar #random 2. Observe redirect to https://sci-hub.tw #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/drk/src/rpc.rs#L247-L265 #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/drk/src/rpc.rs#L195-L200 #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/drk/src/rpc.rs#L176-L178 #dev So within a block you'll first apply all the Money txs, and then the DAO txs - which is out of order #dev oh that's what you mean, yeah thats wrong #random Scary #random scary? seems pretty cool #random >edits the wikipedia url to a phishing website #random yeah but check the url #random Check what? #random the redirected URL that appears in the address bar #random If I knew it I'd use the real one #random There's nothing to check #random most of the time i vaguely know the URL but can't remember if it's .tw or sth #random and for most sites i dont care about phishing (scihub or torrents) #random libgen #random gopher://bay.parazy.de:666 #random nice, i use the inbuilt qbittorrent search #random Nice that's good too #random The heretics who don't seed also use Stremio for /tv/ #random If you just wanna watch something without putting it on the hard drive long term #random i was using libgen-cli but it's flaky so i often have to use the web which sucks #random they should have a cli tool using p2p download #random It doesn't seem hard to scrape (libgen) #random You could use beautifulsoup easily, it's all php #random https://github.com/ciehanski/libgen-cli #random Yeah I know it, also think it's flaky #random curl 'https://libgen.is/search.php?req=cryptography&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def' | grep "href='book" #random Pretty trivial #random contact the first author for printed documents instead. Safest. (kinda slow though) #random not practical lol i sometimes search dozens of papers #random oh yeah then it isn't. Most of the time arxiv has what I need for my projects so I am good enough. #math okay so either I am stupid or I am missing the complete point of how to implement this #math (I haven't gotten far from a blank text file) #random ah this would be a better place to probably spam a little about the zk proof B1 suggested to do #random I know what I have to do just can't really pin point on how to do it even after reading the docs (this pseudocode feels kinda similar if I changed a thing or two here and there: https://darkrenaissance.github.io/darkfi/zkas/examples/sapling.html#pseudo-code-1 ) #random if someone is around, can they help me out just a little bit (I am streaming so should be easier to point it out?)? #random you see it's making a tree with coin0, coin1, coin3 which are all random values? #random now add your value to the tree which is coin2 = hash(a, b) (for some a and b) #random see if you can delete things from that code to just have the set inclusion proof part (prove coin2 is in the merkle tree) #random okayyy on it #random test #random test back #random ayo #random bruh #random https://www.youtube.com/watch?v=of6a394_Owg #random B1-66ER there? #random I was trying to do what you suggested but seems like Nullifier is being a nuisance and it can't be imported from darkfi_money_contract? #random you don't need nullifier #random oh #random okii #dev : @skoupidi pushed 2 commits to master: d1c11b7cf6: drk: properly scan blocks based on tx call order #dev : @skoupidi pushed 2 commits to master: fa08a4aeae: drk: use (de)serialize_async everywhere #random : https://twitter.com/goodside/status/1775713487529922702 #random : AI-generated sad girl with piano performs the text of the MIT License :D :D #random https://twitter.com/SnakeSkin_J/status/1774110163642806465 #random So I just realised, I could have just used example/zk-inclusion-proof.rs instead of copying the psuedocode from darkfi book I guess (the coin example code i mean) #random are the recordings of the seminars at https://darkrenaissance.github.io/darkfi/dev/seminars.html available somewhere? #random actually this should go to #dev, sorry #dev are the recordings of the seminars at https://darkrenaissance.github.io/darkfi/dev/seminars.html available somewhere? #dev that's an issue with IPFS I guess, things can quickly get lost, the one linked in the book can't be found https://ipfs.io/ipfs/QmQoe1LmfL1ubuML4LQy6jdeDjPKEGD7Z2Dk9kEevqBDtw #dev are even those seminars still relevant? #dev Not really. They should be taken off #random hjdhjdhjd #random huh? #random just testing the telegram mirror #random before it was stripping html tags out, but just realized that replacing < with < and same for > is simpler #random oh yeah i forgot the zk-inclusion-mirror lol, but yeah sth like that #random ohhh fairr #math so I'll illuminate this a bit more. Imagine on your anonymous service (like a blockchain), people post objects that are C = hash(a, b). Imagine the a and b are attributes like a represents your name somehow and b represents idk your age (dumb example) #math so everybody can see the C values: C1, C2, C3, C4 (lets imagine just these for now) #math so step 1. is make a merkle tree and add C1, C2, C3, C4 to it, and get the merkle root hash (you don't need to write an actual merkle tree, there's an API to use for this) #math now I have the root R, you have it and everybody else has it too since they have all the C values #math so then the next step 2: as a prerequisite to access some service or perform some action, you want to say to me: "I have some C value (without revealing which one) which is in the merkle tree." So you make a proof there is a C in the tree. #math step 3: furthermore this C = hash(a, b) (without revealing a, b OR C). Note you still must reveal R the tree root #math lmk any questions #math the thing is with linux, everyone is stuck in the past trying to copy winblows or macoshit, but we have to realize the power of linux is in making infra that enables communities to operate #math B1-66ER: yess, I am almost at step 3 (got that whole pseudocode to finally run successfully so I am happy with it) #math to make these services, they need to be p2p and anonymous so we can escape the trap of big tech surveillance capitalism #math but they also need economics behind them so that people provisioning infra are rewarded. this has been the weak point of linux tech renaissance and free software #math this stuff with ZK might seem super abstract / low level because it's fundamentally a new and very different computing paradigm. we still haven't figured out how to build optimizing compilers, but as the first step are building applications and exploring the design space #math honestly i found the concept of being able to prove things to people without revealing the data was mindblowing #math so many possibilities... suddenly any anon application is now possible, and in a p2p context where everyone can/must see the data #math so now I can give you a value C, and you know C = hash(a, b), but you don't know what a and b are #math when hanje*-san told me about it, it was the first time I heard about zk proof and I had my mind blown away as well. #math also the stuff with zk is just really new to me and I never came across this. So, that would explain a really big skill issue I have here #math also to be popular, people will try to copy what is already popular (winblows or macoshit) and thus the replication to linux. #math the issue is that linux was innovating in early 90s, but then the opensource corporate FOSS people came along and everybody started rejecting stallmans teachings saying "we need normies and the mass adoption" #math then windows became the gold standard and we started following rather than leading #math thing is windows/mac build for a dystopian vision of tech where society is low IQ drooling sheep who have no control over their computing #math whereas linux is about freedom, it's a fundamentally different vision of tech where we band together, and become economically powerful. so we really need to get back to our roots #math i kinda see it happening now with the minimalist linux meme and anti-systemd pushback, a kind of linux renaissance where we're soul searching and trying to get back to what made us strong originally (instead of trying to go after the markets owned by mac/win, maybe we have our own distinct one) #math Majority has already fallen into the drooling sheep category with no control over their compute. They dont try to understand their device either. The freedom they know about is the american pseudo freedom. #math it's not enough though since we need an anon p2p/distributed computing paradigm that has an economic model so it can hire devs and grow #dev ah ok #math seems like that is what darkfi is doing #math having an anon p2p is really difficult. I believe in it but I don't think the govs or big shots would like that who hide their shady works. #random test #random test back #math producing a witness in a merkle tree would mean what? (Referring to MerkleTree.mark()) #math :s/Merkle/Bridge #random test #random test back #math also B1-66ER -> Step2 would be the zk proof file? or something else #math I am using the one in the pseudocode for burn.zk #math what if I switch things from burn.zk to inclusion_proof.zk hmmmmm I shall #dev anyone with a suggestion for why if I put `use darkfi_sdk::hex::decode_hex;` in a zkas file, `make zkas` complains: ^^^^^^^^^^ use of undeclared crate or module `darkfi_sdk` #dev while rust-analyzer in my editor doesn't complain? #math And that seems to work so well lez goooo #math Time for step 3 finally (I am so sorry for the spam here) #dev however, I could just assume ascii strings here, right? #dev I am only interested in their lengths here, so to check if "0x1234..." correspond to 32 byte hex values, I can just check the string is 64 long (without the "0x"), right? #math And I think I got it right??? lez gooo it does pass the test #math gonna need someone to verify it though: https://github.com/airpods69/darkfi/blob/master/tests/simple_merkle_tree.rs #dev for now left at the above simple len check, however then we loose validation for actual hex values in the string #dev terence: Hey, I could help out with such simple doc updates, however, I have one such PR open since ages, so not sure if opening PRs to github is the right way? #dev https://github.com/darkrenaissance/darkfi/pull/256 #random Test #random Test back #dev loopr: zkas should have no external dependencies, so implement the hex decoding from scratch #dev holisticode: We prefer stuff over codeberg, but that can be merged #dev holisticode: However it seems it was already merged just github didn't pick it up #math airpods69: Yeah that looks correct :) #random : If it was GPL she'd be happy #random I accidentally read it as she and got very concerned for a second #math Finally! #dev https://github.com/1fishe2fishe/EXODUS #math Well done, nearly #math let hash = (a + b) * (a + b + 1) / 2 + a; #math Should be poseidon hash of a and b #math Let a = pallas::Base::from(10); #math Same for b #dev Woah #dev With networking even #math Ohh okay, I'll replace it, gimme 5 mins. Away from laptop. I couldn't get Poseidon hash working (didn't realise a and b needed to be pallas::Base) so I just went with a simple hash to get it done #math Not relevant here but if you ever want a simple hash, mimc is super basic #math Altho Poseidon is quite simple to implement too #math Both are algebraic hashes which means fast to compute in zk. Sha256 or other normal hash fns are veeery ineffecient in zk #math oh no no, the hash in the code right now was just a ductape solution cause it was 3:30 am and my brain started to stop working that time #math replacing with poseidon #math B1-66ER: donee #random test #random test back #random test #random test back #random test #random test back #random I should really get a vps for irc or a raspberry atleast #dev : @draoi pushed 9 commits to master: 740a539bfd: channel+protocol_version: add Option into Channel... #dev : @draoi pushed 9 commits to master: 92cbca047e: outbound_session: just do seed next time if peer discovery waiting for addrs times out #dev : @draoi pushed 9 commits to master: c0f9920d0a: doc: remove deceptive comment on session/mod.rs #dev : @draoi pushed 9 commits to master: 9aea678125: outbound_session: replace TODO with NOTE #dev : @draoi pushed 9 commits to master: e3c69b0fcc: chore: delete unused code comment from message_subscriber.rs #dev : @draoi pushed 9 commits to master: efe2d57c4e: net-test: add assert #dev : @draoi pushed 9 commits to master: 1dcd31ee3a: chore: update hosts.rs TODOs #dev : @draoi pushed 9 commits to master: 72c22d0124: doc: change protocol_version TODO to NOTE #dev : @draoi pushed 9 commits to master: 6c0b1faf98: net: add manual session to p2p integration test #dev !list #dev Topics: #dev 1. wallet impl (by brawndo) #random : https://www.oracle.com/cloud/free/ #random : Title: Cloud Free Tier | Oracle #dev https://agorism.dev/uploads/0001-doc-add-detailed-proj-overview.patch #dev https://agorism.dev/uploads/0001-doc-add-detailed-proj-overview.patch #dev Can someone apply this patch for me? #dev And update book manually if need be? #dev yeah github actions still failing due to rust nightly issues #dev 1. apply patch and git push to codeberg #dev 2. cd doc && mdbook build && cp book/start-here.html /tmp/ #dev 3. cd ../ && git fetch github && git checkout -b gh-pages github/gh-pages #dev 4. cp /tmp/start-here.html . #dev 5. git commit -a && git push github gh-pages #dev git checkout master, and have a good day #math nice congrats, you just made a decentralized credential auth system. It's still a toy, but we if you begin adding things, you can create more complex applications #math you learn fast too which is good #math Yay, I could use EC points to complete the original task that hanje*-san was talking about. Not that it would be different from appending random values. #math Also, thank you. #dev : @draoi pushed 1 commit to master: d3c1000093: doc: apply Detailed Overview patch to start-here.md #random ah thanks, kinda getting stuck with the credit card part, not into the legal territory yet to get the card #dev Ty draoi #random hanje-san: there? #dev i don't have github setup locally, so haven't manually applied #dev looking into #dev Add github remote, do git fetch and then checkout gh-pages branch from github #dev Change, commit, and push to github #dev Ty #dev no need to #dev just change the workflow files #dev do the reverse of c9e2cc0a42d917f1fd80039895b3cc0195aa591d using -2024-04-05 #dev actually wait I'll do it #dev ty #dev : @skoupidi pushed 1 commit to master: ee6f54c99e: chore: use specific working nightly version #dev draoi: done, just keep an eye out to see if pipeline pass #dev http://0x0.st/X-9p.txt #dev kela: use nightly-2024-04-05, as per https://codeberg.org/darkrenaissance/darkfi#living-on-the-cutting-edge #dev thx #dev hanje-san or whoever is around, can I get feedback on this implementation for zkas/parser.rs using TryFrom for VarType: https://pastebin.com/qd8RpNAb #random Tggg #random Test #random Test back #dev !list #dev Topics: #dev 1. wallet impl (by brawndo) #dev brawndo: gotcha #random I was reading the darkfi book and looking at the FIXME and TODO from git grep. Hmmm still a long way to go before I understand how I can actually jump into this code. #dev B1-66ET: https://privatebin.net/?979bbff70aa96ba6#35Q29n7RUDsFcTVusFkAvGFnJgSyUKoSgWzkJwQbzkYM #dev there are a couple of different combinations possible between old a new constant formats which I could not deduct from the info so far #dev or maybe even more / different ones #dev which one is desired? maybe brawndo knows as well? #dev where's everyone at? #dev I'll be afk, going to the beach today #dev btw is there any merit/interest in updating this PR? https://github.com/darkrenaissance/darkfi/pull/164 #random test #random test back #random test #random test back #dev upgrayedd: ^ #dev !list #dev Topics: #dev 1. wallet impl (by brawndo) #dev yo upgrayedd ping me when around #dev draoi: yo #dev holisticode: in its current form its not needed, as the stuff tested are already in another test, so failing will be caught. #dev In any case I understand why a function specific test is handy, although I dissagree with having "duplicates" for every little thing #dev brawndo: whats your thoughts? #dev hey #dev so i'm tryna cleanup all the TODOs in /net #dev src/net/protocol/protocol_address.rs:142 #dev can you explain about what this check is tryna prevent? we want to avoid ppl asking for excessively long transports? why would it error out? #dev the max number of currently supported transports + all possible combinations (mixing) is 10 #dev ofc this changes depending on what transports we have configured, so we could calculate the exact max given our config info, but i'm tryna understand why we're doing this #dev yeah this check is to prevent malicious responders, so for example the send an address with random transports that we don't support #dev lets say for example http #dev so when we ask for the addrs, we expect them all responds to be for our specific transports, nothing else #dev s,responders,requesters #dev but doesn't the fetch logic in subsequent lines address that? #dev yeah its more of a catch early sus requests #dev so we don't need to trigger rest logic #dev you see src/net/message.rs:68 #dev GetAddrsMessage uses transports: Vec, which is 1. not bounded, 2. can contain random strings #dev gotcha but so to resolve this TODO i need to filter through what transports we accept and calculate the max number? i.e. if accepted_transports contains tor && transport_mixing, max number =... #dev or is it sufficient to say > 10, which is max number of all currently supported transports + mixing #dev the proper way is to have like a constant vec of all the combos #dev so the request.transports.len() <= TRANSPORT_COMBOS.len() #dev and for transport in request.transports { assert!(TRANSPORT_COMBOS.contain(transport)} #dev (don't assert, but you get the point) #dev that way if/when we add new transports and their combos, we simply add them to the constant vec #dev ok easy #dev noice you got it! #dev yep all good tnx #dev draoi: as a general rule of thumb, when you have vectors in net shared stuff they have to be bounded/checked #dev that should also be true for the applications #dev for example in darkfid, when we sync/receive blocks, the vector must be bounded to a max size, to catch sus nodes that are tryingto flood us #dev ++ #random weird bridge got stuck, restarted it #random came across this, is it true? Bitcoin and Ripple came from the same IP address? Then someone said it's a NSA data centre https://x.com/FinanceLancelot/status/1779979103162044706 #random actually seems to be a GoDaddy data centre, someone commented that they worked there #random blows my mind that amir and vitalik met at calafou before eth even started #philosophy *ver #philosophy *very* important and interesting question: #philosophy what is the destiny of crypto? #random : test #random test back #random : Yayy I am in #random : so seems like ircd is down? or atleast thats what it looks like, can't connect. #random : test #random test back #random : I was testing proper utf-8, works now in weechat+darkirc in rocky9 docker. actually mirror-bot missed 3 lines #random : oooo gimme a second, I'll try again then #random : but wait, I can't connect cause the lilith nodes are not reachable... #random test #random test back #lunardao im good with app going out, if others want to make last minute edits, id suggest pushing now #dev anyone has peers i can share to someone trying to access ircd? #dev as seeds are down afaik #dev Perhaps try "tls://acab.accesscam.org:25561" #random test #random test back #random Yayy I am in #random test #random test back #random test #random test back #random yo! https://dark.fi/media.html <- new drop of darkfi media #random use these to make memez #random artworks under viral public loicense #random :eyes biutiful #random also wallpapers for laptops/desktops and phones #random https://dark.fi/media.html / https://dark.fi/media.html / https://dark.fi/media.html #random nicee #random Listening to a Crypto Valley talk in Zug. Wow, such simple thoughts conveyed with such complex sentences. Polar opposite of genious who conveys complex thoughts in simple terms #random did you say memes!?? say no more #random simple thoughts conveyed as complex sentences are just to sound smart #random B1-66ER guys, we need to be future looking and offer higher resolution than full HD. I know it's not a priority but ... c'mon #random wdym? is the res too low? #random Of the wallpapers #random 1920 #random oh yeah should be 3840, right? #random I'd push it through a super resolution GAN? 4x the size xd #random pangea: ^ #random some images were done bigger, some at 1920*1080 #random also these aren't wallpapers #random just images #random airpods69: As my wife just said, that's what we do in corporate world when we can't say "we don't know". So they use phrases like 'collaboration', 'bridging the gap', 'ensuring alligment' #random you're welcome to pass through some AI size enhancer #random pass them* #random They are cool images and walls though. Lots of detail and messaging. Just like Illuminati and free masons :p Looking forward to some minimalistic ones, for arch and void users haha #random pangea: nope, want the real shit #random pangea: yeah I had a notebook for SR gan, training it and pushing it through. wouldn't be the best though #random thought the same, i'll keep updating with more images #random including more minimalist stuff #random Okay, love ya man #random <3 #random drigy: ah yes those are some phrases I need to learn. I always end up being very straight forward that "yeah idk sorry" to my manager XD #random though I got the intern card for now so I usually don't get scolded or something #random still scared of steamboat mickey mouse showing up to my house though someday #random test #random test back #dev brawndo: looks like zkas compiles constants with type but vm strips the type off? #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/zk/vm.rs#L292 #random hello world #random hoi #random airpods69: Or just move to South-east Europe. Straightforward and passionate - dangerous combo though #random Hahaha would love to. Gotta wait for a while though before I can stack up some funds to leave #random South East Europe would be near poland side right? #random More like Greece :D #random You're thinking Eastern Europe where ppl are direct and less hot blooded. I always liked their saying: "Life is hard but at least it's short" #random Ohh I like Greece #random And that saying surely is something which keeps me going forward #random test #random test back #dev hanje: I have a doc .md for the anon credential tutorial :D, what platfrom do you recommend to share? hackmd.io? #random I was having trouble to connect, fortunately someone shared a live seed, ty #random : somebody was looking for a nice linux, declarative package management looks tempting #random : https://www.youtube.com/watch?v=CwfKlX3rA6E #random : NixOS: Everything Everywhere All At Once #random : hmmm, @arm0415.dc2dbec0 broke mirror-bot #random : yeah .. bad bad boy #random : what can we do ... #random : wait for the master to fix us ? #random : let's wait and see #random : test #random : test #random : yo #random test back #random : oh wait ohh oki the bot is down yes #random : but still getting a "No connected channels found" on ircd weird #random test back #random : if someone is out there, I'd like to know, am I still here? #random : test #random : sad #random : I see you here #random test back #random : Title: NixOS: Everything Everywhere All At Once - YouTube #random : ACTION enters the chat #random Gm #random : https://arstechnica.com/gadgets/2024/04/linus-torvalds-reiterates-his-tabs-versus-spaces-stance-with-a-kernel-trap/ #random : Title: Linus Torvalds reiterates his tabs-versus-spaces stance with a kernel trap | Ars Technica #dev gm #dev gm brawndo #dev How's it going? #dev getting some work done for mickey mouse so hoping through meets, then gonna study about some EC stuff #dev gm #random hey deki, how was your journey? #random (thought I'd shift the random convo to here) #random hey airpods69, I haven't left yet >.> #random leaving in the next few days for Swedenland #random who's mickey mouse btw? #dev : gm #random Ohh fair my bad, I thought you were leaving yesterday #random Mickey mouse is Disney #random I have him on a shirt actually haha #random Hahaha I got some merch from them, wait lemme look for the picture #random test #random test back #random deki: Don't mind the linkedin link, I couldn't find the image on my phone and linkedin wasn't letting me download it. Merch: https://www.linkedin.com/posts/airpods69_disney-activity-7153489712618332161-gbfi #random lol that's cute, can't go wrong with mickey mouse! #random ikr, I love the plushie though it stays in. Can't find a place to keep it on my desk. #dev test #dev test back #dev gm #dev hows it going #dev and also gm #dev still trying to wake up, updating my miniquad app https://github.com/narodnik/fagman #dev what does it do? #dev cmon lazy boi im sure you can see the code #dev lol #dev wow the name really comes together #dev B1-66ER: XD i didn't want to. #dev gimme a min #dev so rendering character and "show king" fair enough (ngl I spent 5 mins playing with it after running it xd) #random B1-66ER: also why not king on return key? #random its just a quick hackjob #random got it, rendering for the win #random huh that reminds me, gonna make something using vulkano-rs too #random test #random test back #random test #random test back #random @varoo1709 does it ping me on telegram? #random Oh wow it does, nicee #random brb (won't be connected) #philosophy loopr: good question, I think either complete ban or some kind of embracement of the technology #dev gm #dev 4gm #philosophy : remember ... ideas are bulletproof ;) #random https://www.youtube.com/watch?v=DEHfbcan_PA #random device to cool testicles #random looks nice for sleeping #random test #random test back #random back #random B1-66ER: I wouldn't risk an electric shock down there #random also seems like a fake demo #random its real but they went out of biz #random looks like some CBT tool #random my balls get so hot sleeping its unreal #random lmao #random we need stickers on IRC #random its very uncomfortable #random idk bout your clothings so not the best judge but fair #random cut 'em #random That's fashionable these days #random the jewels will be lost forever #dev B1-66ER: Around? #dev hey yeah #dev Hey #dev Doing more thinking on the WASM plugins for contracts #dev Now at the db/storage design part #dev Wondering, perhaps it's best that each wasm module maintains its own storage (and the logic) ? #dev We currently have the .sql files, but I think the WASM in fact should hold this logic #dev yes and also an external storage for comms between modules #dev We'd have to resort to sled or something else embedded though #dev but ideally these are specified in terms of properties and public methods #dev This means for example, the Money module would be in charge of maintaining the keypairs #dev https://en.wikipedia.org/wiki/D-Bus#/media/File:D-Feet.png #dev They would be specified through the API, I think each contract can specify their own #dev And in case another contract needs it, they can simply have them as a Rust dependency #dev did you ever see how XUL was designed? or blender plugins? #dev you have a giant property tree, everything is in terms of this tree #dev We'd have to design a standard for it #dev then other components can choose to subscribe to changes to these properties #dev I'm not sure I can do that at this point, since there is not enough data on how things will be used #dev yeah we won't get it right first time around, and should look at other examples #dev altho don't feel any pressure because most of these systems just started with a rough model and tweaked it until they got there #dev Yeah #dev https://www.xul.fr/tutorial/ #dev But generally you agree with the storage idea/plan? #dev There'd be a sled DB and the contracts would have their own trees for storing stuff #dev you mentioned SQL too, how would that work? #dev altho having sled too is handy since you can build DBs that don't have to be contract side #dev No I was saying we currently have SQL, but we would not be using it anymore #dev ah ic #dev what about using SQL users? #dev Not doable in sqlite, you need an SQL server for that #dev the FAQ says you can do a seperate DB per user #dev anyway up to you, you can add sled, and add SQLite later too if you want #dev It's based on UNIX users there #dev filesystem permissions #dev (Talking about sqlite) #dev maybe we want a virtual filesystem #dev nah #dev and then you can instantiate sled or sqlite with it on the File objects #dev or you can do whatever you want inside of it (like create or move files) #dev You can't have a generic interface between sqlite and sled #dev You will always end up with k/v #dev So it's better to just design for sled #dev i mean with a VFS, you have your app local storage, and when opening a sled DB, it gets translated internally #dev you should probably make a separate sled DB per wasm since each wasm runs in its own thread #dev i think opening trees on the same DB won't be performant anyway since sled DBs use a single thread in the background #dev sled is filesystem-based it's fine #dev Thread-safe #dev It's a lot better than sqlite in this case actually #dev i don't mean thread-safe, but performance wise and also resiliency #dev perf is great #dev sled runs in a single thread #dev if you create trees from a global sled DB, then all those trees run on the same thread #dev sled doesn't "run" #dev but each wasm should ideally be isolated in case it crashes #dev It does IO ops via kernel #dev sled maintains its own single thread in the background iirc #dev i mean the maintenance process #dev Why does it matter? #dev because then it means a wasm plugin can crash the entire daemon #dev How? #dev each wasm is sandboxed in its own threads, if it starts going crazy, the other wasm threads + daemon still operate fine. we can kill the wasm process and everything associated with it dies. #dev That doesn't answer my question #dev well the sled DB creates a subset of threads that handle IO ops. when you call sled, it actually just queues ops for the backend. #dev if the wasm plugin misbehaves, then it could overload the queue #dev congestion #dev depends how strongly you want to isolate the processes, maybe you decide to allow it #dev This is an issue that any plugin can do regardless of threads or whatever #dev a single queue will get saturated, whereas multiple queues will not get saturated #dev using a single DB is just one queue and a bottleneck, but having a DB per plugin means each DB instance is sandboxed #dev we could send the sled devs $100 and ask their opinion #dev check this btw https://github.com/komora-io/marble #dev > Each call to Marble::write_batch ... It is blocking. #dev ik #dev seems like writes are fully sequential across the db? #dev so this is called by the background write thread after the cache is filled #dev since you have the SQL defns and its better for wallet stuff, why not add SQL support first? might be easier, and just do separate instances per plugin #dev Will consider #dev how will it work with UI btw? will wallet also load the same WASM? #dev It's gonna be a lib that any UI can use #dev you know the way Qt (and other UI libs) have Button, which has a draw method containing the sequence of actions to draw the button #dev i was wondering why the button isn't more like an object containing subobjects like rectangle, line, textlabel, .etc #dev idk if that is too crazy #dev then you can easily customize button by modifying its child objects #dev mad how firefox XUL was a generic application dev platform, and they wrote apps in that like thunderbird #dev https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Tutorial/XPCOM_Interfaces #dev https://udn.realityripple.com/docs/Archive/Mozilla/XUL/Tutorial/XPCOM_Examples #dev : @skoupidi pushed 1 commit to master: 40739693a1: darkfid: persist sync headers in a sled tree + some minor beautifications #dev the bad part of XUL was X #math I found a pdf copy of Modern Cryptography & Elliptic curves if anyone's interested, I checked the link and it's legit: https://www.pdfdrive.com/modern-cryptography-and-elliptic-curves-a-beginners-guide-d189512436.html #random weird #math thanks deki, would start without it in a bit (10-15 mins I believe) #random hm? #random the contraption discussed earlier #random ah yes well, it is a creation nonetheless #math ah seems like bad gateway for me #math libgen lead me to this -> http://library.lol/main/564FA4146BB1EAD8FF5AB8F233A1B430 #math oh weird #math I just uploaded it here, the pdf version: https://wormhole.app/Loop1#nK6dtHsiFJdPVt4729deQw #math link will expire in 24hrs #math anyway I have to go #math thanks #random test #random test back #lunardao hey, i see the message received by GG20's support chat: #lunardao https://forum.lunardao.net/t/application-for-gg20/220/11 #lunardao Title: Application for GG20 - #11 by sadar - General - Discourse #lunardao What are they saying? We can still edit our application unti the 28th? but we'd need to re-submit? #random test #random test back #random test #random test back #random !hackersays #random “Intellectuals solve problems; geniuses prevent them.” — Albert Einstein 15[Quote #0d7328] #random Damn, might be a genius for not writing buggy code by not writing code at all. Prevention at its finest #random geniuses prevent code #dev : @parazyd pushed 1 commit to master: bdb24d3078: tau: Rename main.py to tau #random test #random test back #philosophy new whitepaper from 0xMaki on incentiving complee validators (on eth initially) in order to head off the risks of continued centralization of validators as a result of so many liquid/restaking protocols: #philosophy https://github.com/Finallyt/Heroglyph/blob/main/Heroglyph-Whitepaper.pdf #philosophy Title: Heroglyph/Heroglyph-Whitepaper.pdf at main · Finallyt/Heroglyph · GitHub #philosophy "large node operators create a nexus of control that regulators will find #philosophy hard to resist as a tool to enforce government financial censorship or speech #philosophy restrictions #philosophy " #philosophy (also a word of warning for our own eventual DarkFi POS designs) #philosophy hamletmachine: I just open the pdf, do I see redacted stuff? wtf #random test #random test back #dev amir what were u gonna say abt the net code at ethdam before u got cut off. been looking at it myself #random test #random test back #dev : gm #random test #random test back #random foo bar (classic function naming) #dev gm #dev gm #dev : @draoi pushed 1 commit to master: 88f4d67b47: doc: upgrade arch/p2p-network.md #dev B1-66ER: what should i study to better understand the net scoring subsystem idea? #dev seems to be taking some concepts from https://qed.usc.edu/papers/ChowGM08.pdf #dev this is the bug you mentioned right: "Since the reader in messages.rs preallocs buffers, there should be a hard limit here" #dev hi #dev yes correct #dev for scoring, i don't have any good refs #dev https://docs.libp2p.io/concepts/security/dos-mitigation/ #dev Title: DoS Mitigation - libp2p #dev https://github.com/libp2p/go-libp2p/tree/master/p2p/host/resource-manager #dev Title: go-libp2p/p2p/host/resource-manager at master · libp2p/go-libp2p · GitHub #dev we want a "resource manager" #dev so if you look at the wasm runtime or eth smart contract engine, there's the concept of "gas" #dev it's like that but for p2p #dev if you cross the watermark, then you get banned #dev it's not actually gas tho cos not DRK denominated right #dev yes it's not gas, it's just 'metering' for the duration of that connection #dev ++ #dev https://github.com/ipfs/kubo/blob/master/docs/libp2p-resource-management.md #dev Title: kubo/docs/libp2p-resource-management.md at master · ipfs/kubo · GitHub #dev my idea is this: the resource manager is configurable by applications, but we provide a default one with sane settings #dev this default just works on the message types, and you can add custom messages for scoring too #dev https://github.com/libp2p/go-libp2p/tree/master/p2p/host/resource-manager#readme #dev Title: go-libp2p/p2p/host/resource-manager at master · libp2p/go-libp2p · GitHub #dev > resource usage accounting #dev aka scoring connections #dev actually we don't need to make it configurable, just having something scoring messages (which you can add custom ones) #random test #random test back #dev ok will read thru the provided, tnx #dev the idea is there are actions and params: RECV_MESSAGE with params (message_type, message_size), SEND_MESSAGE (same as RECV), ... #dev receiving a message consumes some resources depending on its size so there's a base calc just for message_size #dev but then also there's additional work (set by the application) on top of that, depending on what action the message triggers #dev i think it can be quite simple and do the job but needs a little thought into its design #dev ++ #dev will reflect and get back with Qs #dev the other thing is darkfi/src/net/message.rs:137 #dev both String and Vec aren't checking the length of their data before they start reading #dev ++ #dev so for example if the data i'm sending you is 1 trillion bytes #dev yeah needs to be bounded right #dev you shouldn't just keep reading all 1 trillion bytes and *then* ban the host #dev idk what an acceptable bound looks like tho #dev ideally it should stop reading immediately #dev so maybe AsyncDecodable in serial/src/async_lib.rs needs another trait AsyncDecodableBounded or AsyncDecodableSafe #dev decode_sync(..., limit: usize) #dev those are the 2 things for hardening p2p layer #dev cool tnx #random test #random test back #dev B1-66ER: The decoding is still not entirely safe though #dev It's easy to encode for example a Vec> with the inner one being a huge size. This wouldn't be checked by the outer packet decoder #dev There's a lot of places you can fake the size and make the serial lib do a big allocation, possibly getting them OOM #dev true so _safe name is a misnomer, limit or bounded is better #dev actually draoi, i have an idea that could work without changing serial lib #dev You need this: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve #dev Title: Vec in std::vec - Rust #dev But still not thread-safe I think #dev draoi: .decode_async() uses AsyncRead, and we pass in a stream which is AsyncRead #dev we should make a wrapper iterator with AsyncRead that implements bounding on the reader #dev let stream = BoundedStream(stream, limit); #dev let command = String::decode_async(stream).await?; #dev like that #dev draoi: about the message dispatchers doing decoding and scoring subsystem, the easiest change might be just to pollute message subsystem with scoring subsystem altho it's non ideal #dev however if we wanted to do things correctly, then read_packet could be changed/optimized to immediately deserialize the message from the stream. So we would 1. use .peek() to read the size of the payload (before reading), 2. call the appropriate dispatcher which does M::decode_async(stream) directly (instead of reading the Vec then deserializing it to M) #dev so i guess this would just involve moving code around, or generalizing message_subsystem from being purely a dispatcher subsystem, to actually taking in the streams directly (rather than packet data), handling calling the scoring subsystem .etc #dev we should also modify .send_packet() so it calls .encode_async() on messages directly rather than using this intermediate packet type. it would be more efficient and cleaner code #dev note we then need to add AsyncEncodable/Decodable to our message types (and maybe remove non-async Encodable/Decodable) #dev Can't remove non-async serialisation because wasm #dev We have to support both #dev scoring subsystem should have a table consisting of enum ScoringAction type where it is ReadPacket(multiplier), SendPacket(multiplier), RecvMessage(lambda &message), SendMessage(lambda &msg) .etc #dev Only perhaps if it's possible to somehow rewrite the non-async functions to support both async and non-async at the same time #dev But I'm not sure Rust can do that #dev so applications can customize the table #dev oops I meant RecvMessage(command, lambda &message) (same for Send) #dev brawndo: ok np but we're talking about net messages like Ping, why does wasm need those? #dev >(and maybe remove non-async Encodable/Decodable) #dev I was refering to this #dev i meant from the net messages #dev not remove it entirely ;) #dev ah well the derive macro just does both #dev im not _that_ crazy #dev We'd need separate derive macros #dev Which essentially just duplicates the code #dev dont worry sync serialization is a must imo #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/serial/derive/src/lib.rs#L88-L92 #dev Title: darkfi/src/serial/derive/src/lib.rs at master - darkrenaissance/darkfi - Codeberg.org #dev ok so SerialEncodable also generates AsyncEncodable/Decodable too? nice #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/serial/derive-internal/src #dev Title: darkfi/src/serial/derive-internal/src at master - darkrenaissance/darkfi - Codeberg.org #dev Yeah it does both and is feature-guarded #dev ah brilliant #dev i find these macro tokenizers a little scary lol #dev Only on the first skim :) #dev They are sensible actually #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/serial/derive-internal/src/sync_derive.rs#L157-L177 #dev Title: darkfi/src/serial/derive-internal/src/sync_derive.rs at master - darkrenaissance/darkfi - Codeberg.org #dev Everything inside quote!{} is just normal code that you turn into a macro #dev #foo is stuff you can build #dev still impressive #dev B1-66ER: did i correctly understand that you're saying to move the notify() call inside of message::read_packet and have it call M::decode_async(stream) directly rather than the current deserialization steps (packet -> message -> dispatchers)? #dev just talking purely about the architectural change now, not the other hardening tasks #dev : @parazyd pushed 1 commit to master: dd3f0583ce: net/tests: Fix license header #dev yep #dev hello fellow packet sniffers #dev :D #dev hello there #dev hey user #dev check this summary here https://darkrenaissance.github.io/darkfi/start-here.html#detailed-overview #dev Title: Start Here - The DarkFi Book #dev contains all the detailed info #random test #random test back #dev https://notgull.net/expect-smol-2/ #dev Title: What to expect from smol 2.0 – notgull – The world's number one source of notgull #dev stjepang left smol so its under new mgmt now #dev It's been out for a while now but there's still some bugs to fix before we can update #random test #random test back #markets https://twitter.com/ryanberckmans/status/1780651919372910991 #markets Stablecoin regulations coming next and it's going to get ugly #dev : @skoupidi pushed 1 commit to master: 12efdd87f3: darkfid: use proposals/consensus logic while syncing... #random https://twitter.com/TuckerCarlson/status/1780355490964283565 #random Interview with Telegram's founder #random I'm installing debian on my computer via bootable usb. When starting the installation I get "There is no disk with a gtp partition table. run gdisk to create one for uefi boot. There is no EFI partition, you will need to create one or install system without a bootloader" I don't understand what I need to do. If someone could consider supporting me learning this I'd be very grateful. #random anon #random fuck debian #random use devuan #random wha... #random devuan -> chinese debian? XD #random lol #random no im serious devuan is the way to go #random airpods69: blasphemy... #random upgrayedd, you won't be able to think of anything else now when you hear dev-yuan XD #random also anon, the problem you are facing has the solution written write there, what is the issue? #random airpods69: I'm not child. #random im anon2 #random upgrayedd: oh... my bad, apologies. #random anon: check if you have efi #random airpods69: I am not familiar with this. I'm sure for those knowledgable it must be obvious #random Oh anon, my bad, do you have any other linux distro installed? #random but devuan is the way. u can convert to devuan after debian #random also chinese makes no sense, more like mexican/spanish, like dev-juan #random upgrayedd: he hates chinese cause of propanganda in his country #random yuan is the chinese currency so sounds similar to me? yu-aan #random anon2: naah nothing like that, I'd rather live in china than india #random airpods69: it's a new installation #random anon #random anon: then I'd recommend using ubuntu or linux mint instead. (if you want debian only, then I am typing down the solution) #random anon2: yes #random fuck ubunut and mint #random go devuan #random real men test in production #random XD devuan okay sorry #random btw the "warning" is because your drive is either partitioned for windows or empty #random I just want to know how to make gpt partition table for uefi boot #random so you will need to create the gpt table, aka partition it to have a bootloader and os #random if you are using a gui installation(kalamares) it should have that in there #random anon: go to libera irc #devuan #random upgrayedd: I did that today XD alot of users were using my chatbot at work and I tested and made changes straight in prod lol #random also imma check out devuan too now xD #random glhf #random upgrayedd: its a gui, installation from .iso live #random the warning is in the gui #random anon: then it should/would/will have the corresponding setup #random iirc you first choose languages, timezones and shit #random after that it should be the disk partition #random haven't installed using a gui for a long time now, so my memory might be rusty #random in any way, don't let warnings dictate how you live your life, yolo it #random anon2: it is devuan. I was always devuan. #random upgrayedd: ty <3 #random Any coders here? How can I make ftmuxp command run in my zsh terminal? #random https://gitlab.com/dotfiles8500902/dotfiles/-/blob/master/zsh/scripts.sh?ref_type=heads #random Title: Just a moment... #random public: https://paste.centos.org/view/811fe9da #random Title: Untitled - Pastebin Service #random no1etal: what exactly do you mean? how to call/execute it? if thats the case, in the bottom of your script add "ftmuxp" and then make the script executable with "chmod a+x {script_name}.sh" and simply execute it with "./{script_name}.sh" #random upgrayedd, airpods69, anon2: should i create just one partition or multiple - what makes sense? #random anon: if you are going to distro hop, I would suggest create creating a separate partition for /home so you don't need to migrate your personal/dotfiles all the time #random realistacly you just need 2 partitions, bootloader/efi one, and one for the os #random you can also add a swap partition if you need it #random upgrayedd: is it bad to not have a separate partition for bootloader? #random it needs to be a separate partition, so yeah its "bad" XD #random XD #random you can also put it in a usb if you feel more adventurus #random haha #random you're funny #random I've been told yes #random the simplest config is like: 500MB-1GB for the boot/efi partition, rest disk for os #random when I create the partition do I need to allocate space for bootloader or there is automatic partition allocation for bootloader during installation? #random partitioning means separating the disk in specific addresses, so the "size" you define means you have "allocated" that specific sequence for that partition #random and this is a manual process? #random so in the config I showd, from 0MB to 1024MB it will the master/boot/efi partition, and from 1024.01 MB -> .. the other partition #random what do you mean "manual" #random when I create a new partition I can slect size and if it is the primary partition. It is currntly set on using all the disk space (its in gparted). is this the paces where I should reduce this primary partition with 1GB so it's reserved for the the bootloader and then create a second partition? #random yeah and set its filesystem as efi(or gpt) and the second partition a normal file system like ext4 #random btw I will ask, is this an empty drive or you try to dual boot? #random bootloader is efi and primary disk partition ext4, or is it the other way? :| #random asking since the drive will get wiped #random it's empty #random oh if its empty then you could use the automatic paritioning? #random upgrayedd: what do you say? I believe they wouldn't have to worry about paritioning that way #random well I assumed the gui installer would suggest/automate it indeed #random I don't know why they make it seem so hard #math hi everyone #philosophy hello! #random bootloader is efi(the first partition), "primary" is ext4(the next one) #random ++ #philosophy hi! #random anon: quick q, why do you prefer to ask help for this process in a chat, since there are literally a billion guides and videos, official and whatever, doing the same exact steps you are trying to achieve? #random I researched and read guides, but sometimes just wanna talk to someone directly and I know that you are knowledgable. #random tho I understad if it's annoying #random and completely fine to direct me somewhere else #random I'm just trying to understand, since we are not inventing the weel here #random I pretty much parrot whatever you will find in those guides #random <3 #random just don't take this for granted, this is not a general linux support channel XD #random anon: most of the times yep, just copy pasting should yield the same result. Usually trying it out would give you the confidence too. As long as the command doesn't explicitly ask you to say "Do as I say" or something similar, you should be fine. (or if its a rm -rf just be cautious) #random I dont and I appreciate it a lot #philosophy how's everyone doing? #random airpods69: ++ #random don't just copy paste, don't be a script kiddie... #random lol #random thank you very much, have a nice day/afternoon/evening :) #random upgrayyed, I want to make the script run when i type 'ftmuxp' in terminal #random upgrayedd, but it says command not found. I know I had it working before at some point and dunno why isn't it working now #random alias exists for the script?? #random no1etal: alias is #random one sec... #random Don't have it under alias. But I could swear that it worked without an alias. I did it according to a book and it was fine. I must have missed something or changed something #random I will make an alias #random do you still have the book? #random Yup, can send it over #random no, I was gonna say: since you made it according to the book, which is on your possesion, why not consult the book again? #random XD #random Heh, yeah, I am. That's what irritates me. I think I need to sleep it over. #random rub one out for post nut clarity #random I think it;s gonna be DJ Pillow for me #random oof #random In case interested: https://drive.proton.me/urls/R2ZZYSHJP8#IKefph1Jlvb6 #random Title: Proton Drive #dev : @dasman pushed 1 commit to master: df6a99ba9e: bin/deg2: added graph column showing a minimized plot of the event graph #dev : ^ this currently handles two events in the same layer, but should be expanded soon #dev : https://imgur.com/78hZLRj #dev : Title: Imgur: The magic of the Internet #dev Title: Imgur: The magic of the Internet #dev : @dasman pushed 1 commit to master: bfb2c01905: bin/darkirc: use none-default ports in test script #random Test #random Test back #random gm #philosophy war #philosophy theatre #dev : gm #dev draoi: right now we read bytes_size, then we read the bytes into a vec, and lastly we deserialize that vec. #dev better is to do this: #dev 1. read bytes_size (async_deserialize or whatever it is) #dev 2. check bytes_size does not exceed the limit (for now just do limit > FOO, although we could just use the scoring system directly for this) #dev 3. construct let stream = BoundedReader(stream, bytes_size); and deserialize from that. Deserialization will fail if the object we're deserializing is bigger than bytes_size, so then we handle that and ban the channel #dev the BoundedReader acts as though the iterator for reading has finished once we read bytes_size #dev check if there's anything in the rust stdlib for this already, if not maybe there's a lib implementing this, then you can copy the code #dev ok and this is all happening in the message subsystem via the channel (hence channel.ban()), and read_packet etc methods will not exist any more #dev ah yes true, we need the dispatchers to take the stream and handle deserializing from it #dev you can implement this already for String where we read the command #dev ok #dev this BoundedReader is a system/ or util/ type thing #dev https://users.rust-lang.org/t/implement-stream-with-asyncread-trait-bounds/79377 #dev Title: Implement Stream with AsyncRead trait bounds - help - The Rust Programming Language Forum #dev https://github.com/jbr/async-read-length-limit #dev Title: GitHub - jbr/async-read-length-limit: async read length limit #dev it should be easier since we are specializing it for the smol stream type and exporting AsyncRead trait, but this lib for example implements it (search around for others) #dev ++ #dev https://docs.rs/tokio/latest/tokio/io/trait.AsyncReadExt.html#method.take #dev Title: AsyncReadExt in tokio::io - Rust #dev nice #dev ah yeah we need the generic version since we have a trait type PtStream for all the transports #dev it's not just smol stream anymore #dev check system/condvar.rs #dev all the .read() methods are from AsyncReadExt which is just a wrapper for the basic AsyncRead in futures::io #dev https://docs.rs/futures/latest/futures/io/trait.AsyncReadExt.html #dev Title: AsyncReadExt in futures::io - Rust #dev https://docs.rs/futures/latest/futures/io/trait.AsyncRead.html# #dev Title: AsyncRead in futures::io - Rust #dev oh look you already have it in AsyncReadExt #dev https://docs.rs/futures/latest/futures/io/trait.AsyncReadExt.html#method.take #dev Title: AsyncReadExt in futures::io - Rust #dev draoi: ^ you can just do stream.take(bytes_size) lol and pass that to decode_async #dev :D #dev happy days #dev yeah so read_packet is a vec which is (var_uint, bytes), then we take bytes and deserialize that object #dev but instead now you read the var_uint manually, apply checking to the size, then use .take(N) and deserialize on that thing #dev same for the string #dev ++ #dev i'll start here, then look at messagesubsystem refactor #random test #random test back #dev brawndo: i remade therapy (just the rendering part) with miniquad https://github.com/narodnik/therapy #dev Title: GitHub - narodnik/therapy #dev you can use dbus to control it from python, so we can add zmq p2p stuff and whatever tools we want easily #random so many anons #random airpods69 they are talking about systemd being bad #random test #random test back #dev hello #dev a bit confusing to have a code path src/sdk/python/src and have rust code beneath it? #random in anons we trust #random anon3: I am anon, send me your coinz.... #dev hanje-san: brawndo: I updated the constants PR, make test still running but should pass (ran yesterday too and only did few cosmetic changes) #dev to be very honest: it has been quite a ride #dev it feels those enums and structs are a bit messy and inconsistent #dev then lacking all the domain skills in terms of the crypto used, i didn't dare to refactor more than I actually did #dev use of advanced traits and rust features added to the confusion for a nascent rustacean... #dev looking forward to the reviews, not sure i really got it sorted #dev expecting also improvements and optimizations can be made #dev make test just passed #dev codeberg is down https://status.codeberg.org/status/codeberg #dev Title: Codeberg Service Status #dev huh #dev my push crashed it #dev B1-66ER: up again for me #dev ah yeah #dev why are you parsing the hex string in the zk vm? #dev to validate it is a valid 32 byte value #dev umm did you even test this code at all #dev aaah hehe #dev actually forgot to ask #dev ctrl-f 'find_zs_and_us` #dev 0 matche #dev how can I write a test for this #dev edit a .zk file, i gave you a const before #dev well it compiles #dev maybe this is too difficult for you? #dev are you a web dev? #dev no #dev idk how you think passing a hex strings internally to represent bytes is ok at all #dev i mean, i did edit a .zk file and compiled #dev with zkas #dev i don't see any .zk file in the pull req, and no unit test or anything #dev https://codeberg.org/darkrenaissance/darkfi/src/branch/master/proof/opcodes.zk#L31 #dev Title: darkfi/proof/opcodes.zk at master - darkrenaissance/darkfi - Codeberg.org #dev loads of places where the consts are used #dev https://pastecode.io/s/b3wr45xa #dev Title: Untitled (b3wr45xa) - PasteCode.io #dev why are they quoted strings? #dev used this and manually tested with zkas #dev EcFixedPointBase MY_OTHER_CONSTANT = ( "0x07f444550fa409bb4f66235bea8d2048406ed745ee90802f0ec3c668883c5a91" , "0x24136777af26628c21562cc9e46fb7c2279229f1f39281460e2f46c8a772d9ca" ), #dev EcFixedPointBase MY_OTHER_CONSTANT = (0x07f444550fa409bb4f66235bea8d2048406ed745ee90802f0ec3c668883c5a91, 0x24136777af26628c21562cc9e46fb7c2279229f1f39281460e2f46c8a772d9ca), #dev Self { g: nullifier_k::generator(), u: vec![], z: vec![] } #dev there are no tests inside proof, so where are other unit tests located? #dev this is wrong #dev fn set_zs_and_us(&self, us: Vec<[[u8; 32]; H]>, zs: Vec) -> Self; #dev they are never used empty #dev this is never called anywhere #dev so this task has two main elements #dev 1. implement parsing and vm handling #dev 2. setting the actual constants #dev i only said i updated the PR, not that it is finished #dev i said many many times you have to call find_zs_and_us() in the zcash library to set those values from G #dev this is web dev style, not system code #dev i haven't written any web code since 2017 but ok #dev considering that at the same time i am also learning rust... #dev these mistakes are not to do with rust #dev it's completely unacceptable to pass strings around internally to represent bytes #dev you never do that in system code #dev *to pass hex strings #philosophy :D i thought ww3/4/5 was starting last night #philosophy anyone have favorite resources on new warfare? drones, and how etc groups like the houthis use cheap drones to drain usa's military budget #markets https://www.axios.com/2024/04/18/avi-eisenberg-convicted-crypto-defi-mango-markets #markets Title: Just a moment... #markets Crypto trader Avi Eisenberg convicted of fraud in $110 million Mango Markets scheme #dev aren't we parsing all strings though in this parser? #dev yes but not in the VM to represent data that goes on the stack #dev so if that whole fn would have be left "inline" inside the if it would have been ok? #dev not calling a fn? #dev no, the hex data must be in the bincode itself, not a hex string #dev ok #random upgrayedd: sleep helped! I did not source the script file in my zshrc =D #random typing from my server; drigy=no1etal #dev tbh there aren't that many unit tests in zkas, are they somewhere else? #random test #random test back #random anon: yeah I figured, systemd bad, runit good #random https://cfp.monerokon.org/2024/schedule/# 7-9th of June #random 20% off with promo code: 10YEAR #random https://monerotopia.com/ #random Title: Monerotopia2024 - Monerotopia 2024 #random Nov 14th-17th, Mexico city #philosophy user: maybe looking at previous stuff on the history of guerrilla wars may help, like other forms of asymmetric warfare, would be interesting to look at from a historical perspective. #philosophy could be interesting to look at to look at some of this new stuff. #dev : @dasman pushed 2 commits to master: cc01c7767d: bin/deg: remove unused code #dev : @dasman pushed 2 commits to master: 851ad0bfe2: bin/deg: use rpc.py for RPC connections #dev Oops, this ^ also fixes 'enter' for details view, and 'b' to get back to main view #dev : @dasman pushed 1 commit to master: 9a0d582dca: bin/deg: rename deg2 to deg #dev : @dasman pushed 3 commits to master: 528e03302a: bin/deg: remove JsonRPC class to actually use src/rpc.py and handle its connection errors #dev : @dasman pushed 3 commits to master: 8ec39f8368: bin/deg: add footer to details view #dev : @dasman pushed 3 commits to master: 5906da4382: bin/deg: add parents to events details #philosophy can everyone share their favorite big thinkers - geopolitics, philosophy, history #philosophy this year will be pivotal. what a time to be alive #random SIN ty #philosophy user: this was interesting https://www.youtube.com/watch?v=LK8K_69R9iI #philosophy Title: Jason Jorjani & Uberboyo | American Colossus - Prometheus on Alcatraz - YouTube #philosophy about the drones stuff, israeli pioneered those drone swarm tactics, also bayraktar and how turkey become a mini-power from drones #philosophy my bros rn are junger/ nietzsche/ eliade/ schmitt #dev gm #random test #random test back #dev gm #random test #random test back #dev : @draoi pushed 1 commit to master: 7528147b6c: message: extract the length of the packet into a buffer, then deserialize... #dev dasman: it looks super cool rn #dev : test #dev test back #dev really cool #dev https://agorism.dev/uploads/screenshot-1713599236.png #dev dasman: is it possible to have the event hash displayed as well next to the datetime? #dev i mean the first 8 chars of the event hash, not the entire thing #dev brawndo: here? #random https://www.youtube.com/watch?v=e1pZIfretEs #random Title: toe - グッドバイ / Goodbye - YouTube #philosophy https://www.youtube.com/watch?v=LK8K_69R9iI #philosophy Title: Jason Jorjani & Uberboyo | American Colossus - Prometheus on Alcatraz - YouTube #philosophy oops reposted XD #philosophy reposted for emphasis :D #philosophy user: Geopolitics; I follow policy shapers and academics. These are the most relevant. To understand the world order; Kissinger = World order. To understand the great game and current wars; Brzezinski - Grand Chessboard. #philosophy Current and objective analysis of war in the Ukraine; Big Serge on Substack. This is more detailed and requires some understanding of the "art of war" #philosophy I heard good things about Perun's Youtube channel also. #philosophy History; Peter Frankopan - The silk road, is a nice recap of the history and also doesn't follow 'Hitler was simply evil bad guy' narrative. #philosophy Philosophy; I higly recommend to find academics and thinkers within the "Critical Theory" such as Gabriel Rockhill. Please avoid Slavoj Zizek. #philosophy Anyway, Brzezinski's book will hit the nail on the head and make you question how isn't everything out in the open since all the war theaters are preplanned and written down ten years ihn advance at least. Maybe a bit hard on the stomack though, like Kissinger to some extent. #philosophy Stomach* #philosophy draoi: Tell us more :) #random https://www.youtube.com/watch?v=jbu0kmCeLSI #random Title: 1983: Meet the COMPUTER ADDICTS | Newsnight | Retro Tech | BBC Archive - YouTube #random lmao #random people are so nice and polite back then #random and everyone wearing suits and shirts for the TV lol #philosophy junger- the forest passage, on pain.. nietzsche- will to power, thus spoke zarathustra.. eliade- eternal return, patterns in comparative religion.. schmitt- theory of a partisan.. (haven't gotten further than this but schmitt 'nomos of the earth' is a fundamental thesis on geopolitics) #philosophy some books that made a strong impression on me recently #philosophy i'm also a big fan of 20th century celtic revival literature esp. padraig pearse, but realize that might be more of a niche taste... #random that old lady running a sweet shop building her own PCB is so heartwarming #philosophy dugin is good to read to understand russian geo-pol (he inspired the politicies) #philosophy *policies #random such good footage #philosophy philosophy wise i'd also consider nick land pretty much required reading since all contemporary theory these days is in some ways post-land, in the same ways it has been post-kant since 19th century #philosophy tho land probably suffers the same affliction as deleuze in that he's almost "too" contemporary, "too" timely, "too" precident #random lmao 2:10, that guys basic program has 30680 lines of code #dev B1-66ER: thanks, or maybe hashes be instead of the footer, like in tig? #philosophy Anything from Dugin that is an easy entry into his work? And Nick Land? #dev i mean like this: #dev 787993657e97b67948ad 2024-03-22 10:19 +0100 parazyd o halo2_proofs/dev/cost: Support circuit-params in measure() #dev so that when a hash is missing we can discuss it together and find where the problem is #dev ++ #dev : @dasman pushed 1 commit to master: 58b14d7c9d: bin/deg: show first 10 chars of event's hash in main view #dev hi #random test #random test back #dev yo #dev omg it's immanuel kant himself #random test #random test back #random test #random test back #random test #random test back #philosophy https://twitter.com/VitalikButerin/status/1781773198192783369 #philosophy <3 #random test #random test back #dev gm #dev I started to look into this PR: https://codeberg.org/darkrenaissance/darkfi/pulls/252 and got a doubt. Would there be a situation where `EcFixedPointBase` wont be `NULLIFIER_K` and maybe some user input in proof/voting.zk:7 ? #dev Title: #252 - Implemented generalisation for generator constants access - darkrenaissance/darkfi - Codeberg.org #dev I'd like to think that EcFixedPointBase won't really get a user input point or I missed out on something #dev airpods69: wdym? ofc it has user input EcFixedPointBase FOO = (x, y) #dev rn these constants are hardcoded but they should not be #random fyi hitler's birthday is 420 #random wut is that why ppl blaze? #random yup i just found out thats why #dev B1-66ER: ahh okayy I thought that NULLIFIER_K could remain like that (should've looked deeper) #random https://en.wikipedia.org/wiki/420_(cannabis_culture) #random Title: 420 (cannabis culture) - Wikipedia #dev yes you're right #dev NULLIFIER_K is precoded #random it says it's incidental/ coincidence #dev i'd also like to confirm one more thing, when constants are being set, all of the `constants` are supposed to be manually set? (like FOO=(x, y)) or can it be just any one (or x numbers) and other constants using the hardcoded values? #random or at least seems to imply that #random also anniversary of columbine massacre #dev so if the name of the constant is NULLIFIER_K, VALUE_COMMIT_R or any of the ones that currently exist, then you cannot do = (x, y) #dev but if it's some other name then you must do = (x, y) #dev some of those values in fixed_bases.rs might need to become enums, like impl FixedPoint for NullifierK { #dev rn if you see darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:190 #dev well you get the idea #dev darkfi/src/sdk/src/crypto/constants/fixed_bases.rs:143 #dev it needs tidying up #dev maybe all these enums and structs can be merged into a single one #dev it's like normally the consts are user configured but we provide some presets #dev yes but are all constants supposed to be user configured at the same time? or can it be randomly done? like some user configured and some constants precoded #dev Kinda like this: constant "Vote" { #dev EcFixedPointShort VALUE_COMMIT_VALUE, #dev EcFixedPoint MY_OWN_CONSTANT = (10, 20), #dev EcFixedPointBase NULLIFIER_K, #dev } #dev EcFixedPointShort and EcFixedPointBase are precoded but EcFixedPoint isnt? (Idk I could be missing out on something here) #dev Actually idk, I'll get the parser to work first so that the constants reach bincode, could figure this out once that's done #random test #random test back #dev yes correct #dev airpods69: that is correct, we already have precoded constants working so we don't want to break the existing code, but we want to enable configuring them #dev Perfect okayy, gonna eat some noodles and then get back to this again. afk #random https://agileotter.blogspot.com/2014/09/programming-is-mostly-thinking.html #random Title: Agile Otter Blog: Programming Is Mostly Thinking #random this is why you don't need AI or fancy IDE #random just an editor and compiler, write the fucking code #dev your intuition about getting the parser working first to generate the correct binary is correct #dev back, thanks, starting to work on it. #dev gm #dev Had unstable electricity this weekend #dev Ordered another UPS lol #dev brawndo: welcome back to the matrix #dev yooo #dev brawndo: did you see my gift? #dev https://github.com/narodnik/therapy #dev Title: GitHub - narodnik/therapy #dev ooh excellent #dev I'll try it out :) #dev its so cool i was waiting all weekend for you to see #dev we could replace dbus with zmq, i just wanted to try the zbus lib and dbus to mess around, but for p2p we can use python-zmq with json msgs easily #dev Yeah I don't really like dbus #dev Also it wouldn't be available on Android and stuff #dev If it ever comes to that #dev zmq can probably be bundled somehow #dev i couldnt find a good rust zmq lib #dev Wasn't there one made from C bindings? #dev yeah thats the default #dev also what zmq pattern do i use for multiple request-reply conns? #dev isnt normal REQ socket just for a single connection? #dev What was the one we used in therapy before? #dev It seemed to work #dev That one was with a centralised server #dev i mean the renderer here, not the p2p comms #dev And it multiplexed the data to everyone #dev you see the python scripts communicate locally with the canvas #dev so for example in therapy/pencil_libinput.py:19 #dev we're drawing a crosshair for the wacom cursor (when not drawing) #dev I can't see that file #dev oh #dev ah nvm it's in the root #dev I was looking at subdirs #dev ah yeah #dev so there's a separation between p2p network traffic, and the local canvas which is operated by the python scripts #dev could also be done with jsonrpc #dev Yeah #dev the dbus stuff is so heavyweight, it starts its own async core, and has so much stuff #dev but busctl tool is quite nice, you can introspect everything #dev anyway just try, its really fun, i made it in a fit of angry passion in 1-2 days #dev Will do :) #dev :D #dev aggresive code writting is always good :D #dev splitting the render canvas from the logic is such a good idea #dev let the hate flow into bytes #dev the render canvas is fast and minimal #dev then the logic you can make using python and is completely customizable #dev so you can edit and script everything #dev the canvas just has layers, a camera to move around, draw line .etc (see pytherapy/api.py) #dev you select tools by running different python scripts #dev Nice #dev just getting started with miniquad #dev gfx stuff is v fun #dev the wallet needs templeOS on screen sprites and bouncing balls #dev 10/10 would use #dev XD #dev :D #dev comment from hackernews thread about terry davis: "any competent programmer if given 10+ years could do what terry davis did" <- lmao #dev what did he do in 10 years #dev #goals #dev shieet #dev someone said to picasso "I could have done that!!" and he replied "why haven't you?" #dev haha #math https://www.youtube.com/watch?v=SyD4p8_y8Kw #math Title: Hitler Learns Topology - YouTube #dev >Not implemented for X11 #dev >mfw #dev oh really? let me test, it should work fine... #dev linux_backend: miniquad::conf::LinuxBackend::WaylandWithX11Fallback, #dev maybe the wayland fallback for x11 is buggy (i have it this way cos the x11 fallback for wayland is buggy) #dev It's just a log line that the rust program wrote #dev weird im booting my x laptop to test #dev Now looked deeper, zmq would be nicer than dbus tbh #dev Alternatively could also just be a simple socket #dev https://github.com/mikelodder7/android-building/tree/master/x86/zeromq #dev Title: android-building/x86/zeromq at master · mikelodder7/android-building · GitHub #dev ok great i can put rust-zmq np #dev brawndo: it runs on X np for me #dev does fagman work for you? since it's essentially the same code #dev Yeah it does #dev is your computer maybe single threaded? #dev https://parazyd.org/pub/tmp/screenshots/screenshot00377.png #dev it works fine #dev It's just something internal to miniquad likely #dev wdym, it looks fine here #dev It spits out that message when I start it #dev I never said it doesn't work lol #dev which message? #dev Not implemented for X11 #dev ohh #dev weird idk what that is, maybe a miniquad thing #dev i don't see the message in your screenshot #dev i thought you were saying it doesn't open for you #dev ah sry no #dev gotcha, but nice works as planned haha #dev Failed to connect to Wayland display. #dev Failed to initialize through wayland! Trying X11 instead #dev 13:23:20 [DEBUG] (1) therapy: draw_line(origin, -0.1, 0, 0.1, 0, 0.001, 1, 0, 0, 1) #dev 13:23:20 [DEBUG] (1) therapy: draw_line(origin, 0, 0.1, 0, -0.1, 0.001, 1, 0, 0, 1) #dev Not implemented for X11 #dev ah yeah that's normal #dev last line is not normal, idk what it is #dev Yeah dunno #dev i see it too, will look later into it #dev you should run ./keyb_nav.py too #dev miniquad/src/native/linux_x11.rs:329 #dev Only place where that message is :) #dev Something to do with kb #dev oh maybe it's for virtual kb or something? #dev ah true cos i'm doing show keyboard which is for android #dev ok yeah that's probably it #dev yes good find #dev fixed, git pull #dev That's it :) #dev the app is proper suckless philosophy #dev the tools are hackable #dev Yeah #dev The dbus stuff might be a tad too much :D #dev I like the idea of bundling zmq statically, or just using a unix socket #dev Then you make it actually portable #dev zmq maybe even more than a socket, since windows (altho who uses windows) #dev Would be fun to try 9p #dev It's also kinda designed for this usecase #dev i did actually think about raw sockets but zmq is built for this kind of stuff, esp on the p2p layer #dev https://man.cat-v.org/plan_9/5/intro #dev Title: intro page from Section 5 of the plan 9 manual #dev nice, kinda like a rest api #dev https://zguide.zeromq.org/docs/chapter3/#The-Asynchronous-Client-Server-Pattern #dev Title: 3. Advanced Request-Reply Patterns | ØMQ - The Guide #dev In plan9 you have the WM called rio #dev It exports a control interface under /srv #dev ah yeah i need a ROUTER for the server, then clients can just use REQ sockets #dev https://stackoverflow.com/a/29502330 #dev Title: zeromq - ZMQ: Multiple request/reply-pairs - Stack Overflow #dev So you can do `echo new -dx 800 -dy 600 > /dev/wctl` to open a terminal #dev woah nice, i guess that's what dbus wants to be #dev Yes I think that's what we probably did in the first version (re: zmq) #dev the first version didn't have a separate render canvas #dev zmq proxy #dev i mean the dbus part, replacing it with a zmq socket (rather than jsonrpc) #dev yeah but that was between hosts sharing traffic #dev ah you want actual p2p instead of distributed? #dev i think we should go full p2p lol, and just host proxies for ipv4 plebs #dev https://gitlab.com/drummyfish/small3dlib #dev Title: Miloslav Číž / small3dlib · GitLab #dev so if you use ipv4, you run a special script which uses a proxy #dev Yeah #dev actually original inspiration for this, was a kind of livecoding env where we could quickly prototype the wallet realtime #dev so placing objs on screen and then porting it to rust #dev heh cool #random join #memes #random kant: use /join #math haha #random https://www.youtube.com/watch?v=Y789SugNiA0 #random Title: John Mearsheimer: “Things are going to get worse in Ukraine, Middle-East and South-East Asia.” - YouTube #lunardao test #lunardao test #lunardao community meeting tomorrow at 1600 UTC #lunardao i may be able to join for a short time #lunardao doing a podcast recording at the end of the hour so have to get setup for that #lunardao nice #lunardao !topic updates #lunardao Added topic: updates (by sadar) #lunardao !topic gg20 #lunardao Added topic: gg20 (by sadar) #lunardao !topic darkfi nft #lunardao Added topic: darkfi nft (by sadar) #dev gm #random test #random test back #dev !list #dev Topics: #dev 1. Header::height should be u32 (by hanje-zoe) #dev 2. add call_idx to env => remove from process() ix (by hanje-zoe) #dev gm #dev gm #dev gm #dev gm, huh these are old topics #dev !clear #dev !deltopic 1 #dev Removed topic 1 #dev !deltopic 2 #dev No topics #dev !list #dev Topics: #dev 1. add call_idx to env => remove from process() ix (by hanje-zoe) #dev !deltopic 1 #dev Removed topic 1 #dev My computer where the bot is crashed #dev So perhaps it was the old pickle #dev B1-66ER: https://github.com/zeromq/pyzmq/issues/1646 #dev Title: ROUTER-ROUTER communication example · Issue #1646 · zeromq/pyzmq · GitHub #dev This is likely what you want #dev yes ty #dev afk offline (dr) #random test #random test back #dev hey all! Messaging from Sweden, i'll finally be able to make it to a meeting lol #dev also, manage to get this all working on my macbook using Multipass (kinda like WSL), I know nobody likes macbook's here and I'll admit I feel slightly ashamed but there's a way to get it working #dev I can compile the change I've been trying to implement now too, so I can try to finish it #dev https://miro.medium.com/v2/resize:fit:687/1*urkG1quJnJIApIMyTQIe1A.jpeg #dev lmao #dev literally me, having said all that, it's cold as hell where I'm at, -5C in the mornings #dev damn its cold there wow, I freeze at 2C here #dev yeah my hands are dry and bleeding already #dev !topic stale tx handling #dev Added topic: stale tx handling (by upgrayedd) #dev gm #dev gm #dev b #dev o/ #dev yo B1-66ER arround? #dev : @skoupidi pushed 1 commit to master: 39bfc94d39: darkfid: sync cleanup #random echo #random echo back #dev !list #dev Topics: #dev 1. stale tx handling (by upgrayedd) #dev : @dasman pushed 1 commit to master: f270278588: bin/deg: fix identation issue for larger layer numbers #dev : ^ indentation* #markets https://x.com/ericbalchunas/status/1782370577518354727 #random test #random test back #dev yo #dev !topic sync checkpoints #dev Added topic: sync checkpoints (by upgrayedd) #dev holla #dev heyo #dev heyy #dev \o #dev hi #dev upgrayedd: hey yeah #dev Hi #dev B1-66ER: we can discuss in the topic #dev : @draoi pushed 1 commit to master: 7085ac34b1: doc: add libp2p resource manager notes to arch/p2p-network.md #dev !start #dev Meeting started #dev Topics: #dev 1. stale tx handling (by upgrayedd) #dev 2. sync checkpoints (by upgrayedd) #dev Current topic: stale tx handling (by upgrayedd) #dev ok should we start? #lunardao test #dev sure #random test #random test back #dev ok so the context is: user spends a coin and creates tx A using that coin, then unspends coin and creates tx B using same coin, then broadcast these two txs to the network #lunardao hi anon #dev when nodes pick them up, they are both valid, therefore enter the mempool #dev what do you mean "unspends coin"? #dev speaking old drk wallet terms, tldr: just reuses same coin #dev ic #dev so we need to define how to handle when one of those two becomes invalid, aka stale #random test #random test back #dev 1. when we create the new block, we grab all upproposed txs of the fork from the mempool #dev lets say this sequence will be: [txA, txB] #lunardao hello zero #dev tx verifies so it enters the block, txB will not so it will get skipped #dev for example #dev should we immediatelly remove it from specific fork pool? #dev I guess yeah #dev yeah seems to be correct since it fails to verify #dev A node that isn't actively mining probably shouldn't even maintain its own mempool but just relay things around #dev then we need some mechanism to cleanup pending_txs which are not referenced from active forks #dev A node that is mining can do garbage collection whenever it tries to construct a block #dev doesn't relaying txs make the p2p vulnerable to spam? #dev I guess an async task at fixed intervals can do that, aka grab all pending txs, see which are nor referenced into forks mempools, and simply drop/remove them #dev !topic tutorial document peer review #dev Added topic: tutorial document peer review (by ash) #dev Dunno #dev brawndo: well the point of keeping txs is for example we can implement a rebroadcast mechanism #dev !topic philosophy meeting #dev Added topic: philosophy meeting (by ash) #dev We have a lot of those bg tasks tbh #dev lets say my node was not connected to any other nodes when I broadcasted #dev so network is not aware of it #dev we could make an rpc call to rebroadcast our pending txs #dev Yeah #dev so how do you think we should tackle this? if not with a background task? #dev The garbage collection should probably be happening whenever something relevant is happening #dev e.g. building a fork/block #lunardao :) #dev aha then we can do it after finalization, were we cleanup/reset the forks too #dev is that garbage collection for miners or relayers? #dev everyone does it, since they all keep current fork states #dev ok #dev Yep #dev What about the tx ordering? #dev ok then 1. remove erroneous from forks mempool when building block 2. on forks reset, remove unrefernced pending txs from global mempool #dev I think the correct way is to always go oldest-to-newest #dev about rebroadcasting, you can actually check if a tx was propagated or not #dev we are doing fifo now #dev have you heard about tx radar? #dev upgrayedd: ACK #dev B1-66ER: yeah, but that can come later, not trivial right now #dev all good here? move to next? #dev yep it sounds all rational, and broadcaster or not is fine either way #dev yeah we can tackle this at future time, a simple rpc rebroadcast call should be enough #dev !next #dev Elapsed time: 13.2 min #dev Current topic: sync checkpoints (by upgrayedd) #dev ok so we want to add a checkpoints functionality in syncing, where you configure known checkpoints and node will first sync until that, then go to "uncharted waters", aka actual tips #dev B1-66ER: the question is: should we use a checkpoints array, or just a single checkpoint? #dev array #dev since the array would be a sequence of hashes, using just the last one ain't enough? #dev two arrays can't produce the same last #dev do you sync by headers first then verifying txs? #dev B1-66ER: Can you maybe explain how checkpoints in libbitcoin work? #dev or is it just verifying each block one by one? #dev yeah, we grab headers backwards, and then grab the blocks going forward #dev ah then maybe a single value works fine #dev the array is when you do one by one #dev because you want to fail earlier rather than later #dev but headers sync is fast #dev right now the logic is: #dev ask peers for their tip, grab the most common and highest one #dev grab the headers from tip until your last known, going backwards #dev once all headers are received, do a quick and dirty verification of the sequence [last, tip] #dev if that passes, start grabbing the corresponding blocks going forward, and apply them #dev this is without the checkpoint #dev with a checkpoint, we introduce a step before this process, where we ask peers not for tip, but dirrectly for the headers [..checkpoint.height] #dev cool #dev so if the sequence.last() == checkpoint.hash we know they follow our checkpoint #dev the logic is actually simpler because in normal (non-finality) PoW, chains can diverge #dev and then grab the sequence [last, checkpoint] and verify it #dev so we have to send a 'block locator' object #dev yeah here we have a single sequence #dev we sync forks after syncing everything canonical #dev great it's very straightforward #dev reorg logic can get very messy and hard to verify #dev ok so you reckon using a single checkpoint is enough right? #dev yeah ofc #dev we only use multiple for speed #dev ok another thing is: #dev What happens in the code when the tip changes while syncing? #dev You reach tip then sync again? #dev https://wasmer.io/posts/py2wasm-a-python-to-wasm-compiler #dev brawndo: yeah its a loop #dev kewl #dev now i can write contracts in python #dev you keep looping til tip is not changed #dev check bin/darkfid/src/task/sync.rs #dev B1-66ER: kek #dev so back to what I was going to ask: #dev right now we ask peers for their tip, then filter out those that are not synced or on most common and highest tip #dev with the checkpoint, should we filter after this, or introduce a middle step, like filtering out directly those who don't follow the checkpoint? #dev do the easiest one #dev The checkpoint is used to speed up syncing #dev lol fair answer #dev which is simpler, so keep current logic and just have checkpoint like an assert #dev Meaning you skip verification of stuff up to the checkpoint #dev brawndo: hm I wouldn't skip anything tbh #dev use the checkpoint just to verify we are syncing the correct sequence #dev you can skip verifying blocks before checkpoint #dev ok sure can be done #dev Yeah you just execute the state transitions, not care about sigs/proofs #dev ok will do #dev btw B1-66ER how do I drop a p2p peer from the app logic? #dev call .stop() #dev or .ban() #dev for example in the scenario we can drop the peers that are not following the checkpoint #dev To answer: Then you skip the peers who don't have the checkpoint #dev aha ok #dev After that, find the most common tip, and follow that #dev brawndo: i think we can assume peers generally have the checkpoint #dev Perhaps #dev we still need to verify received block correctness tho no? #dev it will simplify things #dev yes ofc from the checkpoint #dev I mean someone can inject erroneous blocks if we don't verify them #dev talking blocks before checkpoint #dev but we just make sure the checkpoint actually exists #dev yeah and when we retrieve blocks until that checkpoint, we said to skip verifying them #dev but can't a peer inject an erroneous block in that case? #dev You're verifying the block headers #dev yeah the chain must be valid #dev but you cannot compute hashes backwards #dev when verifying headers, we verify the sequence correctness #dev so if prev_block_hash = hash(prev_block_header) #dev we still have to verify the block itself afterwards #dev then it's in the chain #dev ^ #dev brawndo is saying to skip the block, just make sure the hash chain is valid #dev yeah we already do that #dev header.previous = previous.hash() && header.height == previous.height + 1 #dev if this passes, then the checkpoint ensures this block is in the checkpointed chain and therefore is valid #dev and since hash contains txs merkle tree root, when receiving the block, we can just do: block.hash() == header.hash() #dev and its enough #dev Yeah #dev correct #dev ok gg just making sure we check everything #dev With the checkpoints you get to skip all signature and zk proof verification #dev Which likely introduces a solid speedup #dev yy it will #dev syncing right now became a lot slower, since we append everything as a proposal, aka going the full hardcore verification route #dev ok these are the two last pieces for darkfid, along a general cleanup whereever its needed #dev then it will be good to rock n roll #dev it will be an issue for sure (sync speed) #dev nice #dev testnet imminent #dev <3 #dev looking forward to it #dev !next #dev Elapsed time: 21.2 min #dev Current topic: tutorial document peer review (by ash) #dev Hey fellows! #dev Hi #dev greetz #dev I did a document of the anon credential tutorial #dev I would like if someone can do peer review (new here) #dev please #dev where is the PR? #dev No PR just a document, agreed to work on a document first then move in to the code #dev agreed with whom? #dev agreed with hanje, but unfourtunately I haven't found her/him #dev hanje-san is a girls name #dev i think hanje meant to make a PR for the book #dev You can make an anonymous account on codeberg: https://codeberg.org/darkrenaissance/darkfi/ #dev Then if you open a pull request, someone will review it :) #dev Good! I will do that #dev ty #dev next? #dev next #dev ash: hit !next if that's it for this topic #dev !next #dev Elapsed time: 6.0 min #dev Current topic: philosophy meeting (by ash) #dev Well I was thinking that it would be cool to do philosophy meetings #dev maybe once or two in a month, not too much #dev what's the format of the meetings? #dev maybe read a small text or a video #dev then discusse it in turns #dev i'm up for that #dev sure i'll join #dev I found a interesting text just a tentative starting point #dev https://www.researchgate.net/publication/290120192_Free_software_philosophy_and_open_source #dev we can do the meetings in #philosophy #dev I'm in for that #dev About the philosohpy of free software #dev I'm also keen #dev cool! #philosophy !list #dev Nice #dev What do you think about the text? Or if you can recommend else? #philosophy Will add it ;) #dev let's go with that as a first one #dev we can propose subsequent texts at the meeting #philosophy what does ! list do? #philosophy ty :) #dev can someone link the pdf? i can't find it on sci-hub #dev that would be great #philosophy fatback: lists open topics for discussion, like in meetbot #dev and can also propose the schedule? #philosophy !list #philosophy No topics #philosophy !topic hello #philosophy Added topic: hello (by brawndo) #philosophy dasman: right on, thanks! #philosophy !deltopic 1 #philosophy Removed topic 1 #dev maybe wednesday at this same time #dev can we do it an hour earlier maybe :> #dev wfm #dev maybe next week or two more? #dev any is fine just pick one imo #dev Next week, wednesday, an hour earlier than this meeting? #dev ++ #dev wfm too #dev 1st May 14.00 UTC #dev ++ #dev ++ #dev excellent! #dev ty #dev <3 #dev !next #dev Elapsed time: 28563292.3 min #dev No further topics #dev !stop #dev !end #dev Elapsed time: 0.2 min #dev Meeting ended #dev link the pdf plz #dev * hi #dev Good mtg #dev tnx all #dev as B1-66ER is ignoring my dms, I want to say a few words here #dev ty all, cya #dev Thanks all #dev yes, a sec #dev thanks everyone #dev I highly respect everyone's skills, dedication, knowledge and work #dev o/ #dev loopr: im way to exhausted to deal with people, i'm not a manager #dev I know #dev Hear me out #dev I realize my skills were not up to the task i was working on, i misjudged what it required #dev That's fine, i can take that #dev What i think is not fine is the way my work has been thrashed, and close to ridiculed #dev I knew people here were no snowflakes, and heck I have been around in many projects and environments, i am no 20 years freshman from uni #dev But the language and vibes border to outright hostility here if people are perceived to not be at the same level as others - at least this was my experience #dev I don't think that is beneficial tonthe project, especially prospective newcomers #dev nobody disrespect you personally #dev I was just going to say that #dev I know #dev I respect and honor that too #dev But I want to close saying that I did not fail #dev You failed B1-66ER, because you did not do due diligence on my skills beforehand, and then were bashing my work for not fulfilling your expectations #dev 20 years senior dev my ass #dev Now this is personal #dev ok well i chose to trust what you say about your skills #dev Yes you did, and that is the point #dev i guess trusting people is a bad quality #dev You wanted to help someone as a friend, rather than onboarding like in a conventional way #dev pfff we don't do calls and bullshit like that, either step up or step out. we're not here to manage soydevs #dev I am confirming your words, not saying you should have had to #dev I stepped in and now i guess stepping out #dev I solely feel you can do better than bashing like that on someone's work #dev . #dev And disrespect someone's experience, because it doesn't match your expectations and the one you need #dev . #dev Still, thanks for the opportunity and good luck everyone #philosophy hello #math hi everyone #math greets, howdy fatback #math any math news? #math i've done a bit of category theory #math I was listening to a few podcasts about that but in the subject of machine learning. #math interested in it for (co)homology and multilinear maps #math a lot of practical uses in crypto #random Hi everyone, just testing ircd out, seems cool #lunardao !topic lunarpunk future update #lunardao Added topic: lunarpunk future update (by sadar) #random welcome! #random I must admit that this is my first interaction with IRC in general, i'm probably too much of a zoomer or something #random Just compiled ircd, installed WeeChat for the first time and now I'm here haha #random Sweet #random Hi #random How many people do actually chat here? I might look into setting up ircd as a service and figuring out a way to enable notifications in weechat or something.. #random Lots #random Most of the activity is in #dev #random Googling will help with weechat configuration stuff #random yeah #random sounds nice #random so, this might be a newb question, but is there any sort of mechanism in place to stop spammers/network flooders? I ask this because it was very simple to join without any sort of registration (which is nice, of course -- but it got me wondering: can't this be attacked and abused?) #lunardao gm #lunardao gm y'all #random In this version no #random Anyone can join and write freely #lunardao hey drkbull #random Later we'll perhaps implement https://rate-limiting-nullifier.github.io/rln-docs/rln.html #random But realistically we only need to activate this if there is spam/attack #lunardao sup sadar, how are you doing? #lunardao good, was gonna give a few minutes but not sure where the others are #lunardao howve you been drkbull #lunardao doing good, just saw darkfi devs say "testnet is imminent", excited for that! #lunardao drkbull with some alpha ✊ #lunardao 👀 #lunardao not sure where everyone else is, but we can get rolling, tg bridge is up #lunardao unless youre avail for a few to see if anyone jumps on late #lunardao the meeting should only be a few minutes, otherwise it'll be me talking into the ether #lunardao np, we can give some more time for others to join #lunardao we can get started #lunardao !start #lunardao Meeting started #lunardao Topics: #lunardao 1. updates (by sadar) #lunardao 2. gg20 (by sadar) #lunardao 3. darkfi nft (by sadar) #lunardao 4. lunarpunk future update (by sadar) #lunardao Current topic: updates (by sadar) #lunardao updates from my end: much the same from previous weeks #lunardao Ive updated https://forum.lunardao.net/t/actionable-tasks/219/3 #lunardao we've put in apps for morosgrant and gg20 #lunardao . #lunardao !next #lunardao Elapsed time: 1.6 min #lunardao Current topic: gg20 (by sadar) #lunardao gg20 was submitted by yves, saw from owocki the gg20 begins tomorrow, i wanted to ask if there is anything else outstanding #lunardao as I was unsure what was meant by this post https://forum.lunardao.net/t/application-for-gg20/220/13 #lunardao “16th was the hard deadline in order to ensure you get a review ahead of the round starting. This period is for any appeals, reviews and late applications. You can still apply, but then you’ll only be reviewed by the 28th!” #philosophy Gd! At 1st May 14:00 UTC we will have a philosophy meeting where we will discuss a text related to free software. #lunardao We finalized the app, so Im good with going forward with everything we've submitted #lunardao !next #lunardao Elapsed time: 2.3 min #lunardao Current topic: darkfi nft (by sadar) #philosophy Here is the link to the text: https://www.researchgate.net/publication/290120192_Free_software_philosophy_and_open_source #lunardao drkbull, thanks for joining #philosophy pd: no need to register #lunardao internally we are working out how members of the DAO can gather funds together to help in the R&D, not much of an update, but it seems relatively straightforward and there are already public contracts available #lunardao yw, no updates from my side #lunardao we're just working on the minor details #lunardao ++ #lunardao !next #lunardao Elapsed time: 2.4 min #lunardao Current topic: lunarpunk future update (by sadar) #lunardao I wanted to mention to hux, but i can follow up next week #lunardao potential ideas for topics for the next lunarpunk future: #lunardao Navcoin just released a proof of private staking mechanism #lunardao prifi syndicate discussion #lunardao firn discussion #lunardao thats all on my end #lunardao !next #lunardao Elapsed time: 1.7 min #lunardao No further topics #lunardao !end #lunardao Elapsed time: 0.1 min #lunardao Meeting ended #lunardao appreciate you coming by drkbull #lunardao <3 #lunardao and if anyone sees the bridge bot, and want to add any notes, just drop it in the ircd, Ill see everything and can respond, we can collab async #lunardao have a good week #lunardao cya #philosophy ash: That's so cool, will try to join #random just found out you can also rice macos xD https://github.com/koekeishiya/yabai #random would be cool if you can also debloat/de"apple" the OS, like you can degoogle your phone #random but guess that's not possible because some parts of macos are closed source? #dev : @skoupidi pushed 1 commit to master: ee2859554a: darkfid: optional checkpoint usage during syncing added #dev yo #dev yolo #dev how's it going, evenzero? #random de"apple"ing the iOS would be a crazy endeavour considering how much coupled to the core that OS would be (if the source code was available lol) #dev hi, been a while since i used irc actually #dev \list #dev anyone there? #dev e0 yes #dev baitin? #dev 1) What #random You can try capturing all non self-initiated network requests on a fresh install of macos, and then just 0.0.0.0 all IPs #random this is not de"apple"ing of course, and stuff will probably break since the entire operating system is built around the icloud ecosystem, but perhaps it's a start #dev i would like to contribute, have worked on web3/zk before but am a bit clueless here, help? #random its gonna break the os, yep #random a better start would be: don't buy/use their products #random xd yep that works even better #dev e0: https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html#contributing #random johrz: though actually it shouldn't break the entire OS, just the stuff related to icloud ecosystem. #random based, but "muh M1" #random mac os works without internet too, right? I believe 0.0.0.0-ing those network requests should be fine #random johrz: m1 argument is (really) old by todays standards... #dev thanks upgraydd for that #random M3* #dev \nick kamacho #random you fell into my trap #random latest intel and amd demolish it, in the workloads that supposed to benefit "professionals" that would buy them #random :D #random I'm not big into mobile chips, nor own a laptop, but are there any *good* mobile cpu's out there currently? #dev e0: its the other slash / #random wait, you are suing macos on a dekstop? #random s,suing,using #random i'm not using anything Apple kek, I was just suggesting ways to potentially de"apple" it #random upgrayedd: funny you think I fell into your trap. Actually it is you who fell into my trap #dev yeah been a while since i used irc, sry #random M3 ultra will demolish intel and AMD combined with its unified memory for GPU purposes. #random johrz: oh lol, well de-appling should be sell it XD #random airpods69: I had that exact conversation some time ago in the tg group #random What would be a good alternative for a lightweight laptop, a la macbook air, then? #random tldr: it doesn't really #random upgrayedd, I come from the LLM side of things so atleast in that space it does. Not that I am protecting it or something, I don't really like M chips xD #random were are your benchmarks? #random johrz: I got an acer aspire here, not as strong as the macbook air, but it is almost as light as the macbook air and way cheaper. Can run games too XD #random upgrayedd, gimme a few minutes. #random all of "my" benchmarks are the ones posted on reddit. Personally, only used it once and felt the same. #random yeah sure, sources then #random yeah, but what about the performance per watt? I'm not trying to push apple silicon propaganda, but we really don't have laptops that compete in terms of performance/battery life -- as far as I know #random amd is killing it right now it terms of efficiency #random battery life is still bound by the os #random Here is the latest one with Mixtral, honestly this is good enough: https://www.reddit.com/r/LocalLLaMA/comments/1c0zn12/comment/kz15xtw/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button #random upgrayedd ^ #random again not protecting the M series it just happens to be good at GenAI related tasks (or maybe DL but yet to see that with my own eyes) #random I'm wondering if the new Snapdragon chip will become an interesting platform in the future for new Linux laptops #random But it will probably be a proprietary nightmare to get working properly #random O #random oops ignore that #random johrz: I think the ARM laptop from Microsoft is using snapdragon only. Even the one from samsung (I believe) #random I forgot the names, god damn it, wait #random nvm my bad #random microsoft surface pro 9 was what I was thinking bout but it has its own ARM chip #random Lenovo Thinkpad X13 uses a Qualcomm chipset #random But the performance sucked #random future is riscv #random The snapdragon elite x or something is supposed to rival against the M2/M3 #random airpods69: interesting thread, although(as you might saw), the only real benefit that chip has is thats on a laptop, so portability #random other than than, since its stationary, you can beat its performance easily with a well specced desktop #random s,since its stationary,since you need it stationary aka plugged in to get max performance, #random yep, thats what I am planning to do. Build a desktop and ssh into it instead of getting a mac xD #random so the discussion then goes like: why buy a so expensive protable device, when you can built a better desktop/server? #random > buy secondhand chromebook for <$50 #random > flash linux on it #random that will beat it in terms of performance and you will probably still have money for a decent laptop #random > ssh into your beefy computer at all times #random > profit #random ahaha johrz thats "almost" what I did. Got a rather cheaper laptop which can run games and get work done while I save for a PC instead of dropping everything into a better laptop. Once the PC is in the house, ssh into it from laptop from anywhere and profit. #random upgrayedd: also macbooks really only make sense when you are a soydev for apple applications/ webdev stuff or if you are constantly on the go. #random upgrayedd, the idea of a portable device is precisely that you wan't a stable and responsive environment, without being dependent on the internet/a network #random want* #random man pages + void linux :p #random ^^ #random that "stability" argument is not applied to powerusers #random if you need a "stable" environment and you accept proprietary shits, then you are not a poweruser #random my final redpill will be exclusively using the tty #random lmao don't torture yourself with that xD #random also speaking of stability, whats the most commonly used os servers, who supposed to be the most stable use? #random well at internship, they were using centos and for my dev server, I asked for a debian so maybe these two? #random upgrayedd, of course, but most mac consoomers literally don't care about proprietary software, they just need to do their work and move on #random also someone on twitter hosted BSD servers so I think "stable" can be anything now #random johrz: still, if you don't care about proprietary software, why not use redhat distro? its literally the most well guarded and stable os you can buy #random "oh I would have to use the scary terminal *cry cry* #random Because not everyone is a NEET nor a "poweruser". Think about the normies #random that argument is also fake in my eyes, since lets be real, you want mac for the vanity #random not the stability #random ^ ++++ #random johrz: what is a NEET? #random National Eligibility Cum entrance test? sounds fun #random That's for Indians to become a medical professional #random The NEET they are talking bout is different I believe #random alright, true in some sense. But if you're a soydev: would you rather carry a slick laptop with you with a unix-like operating system, that is fast(tm), stable and also good looking out of the box? Or instead.. a 20lbs librebooted thinkpad running a "stable" distro that dies after 4 hours of normal usage #random I never argued that lol, I just like bashing on stupidity and fakeness :D #random what is a neet? don't leave us hanging #random I'm not advocating for apple, I'm merely saying that I understand why many people in the tech industry prefer macbooks #random we don't sleep, we want answers #random 1:20 am here and I really want to know now #random Not in Education, Employment or Training (is this a bait?) #random basement dwellers #random i think they meant LEET aka L33T #random true #random lol leet yeah that I understand #random What's leet? (Sounds like leetcode) #random close, it is the opposite of n00b #random Oh like elite? #random yup #random Got it #random airpods69: thanks for letting us feel how old we are... #random airpods69 has not seen idiocracy #random Oops I was like 3 when idiocracy came out XD #random (don't reveal your age, bad opsec) #random (ah yes apologies) #random I do think there should be more people optimizing Linux for mobile platforms. What I don't understand is, why is this actually the case? #random Why does Windows consume less power on most laptops? more throttling? Is all userland software on linux the culprit? Android doesn't seem to suffer from these issues #random Should be and actually can, different things. Alot of the source code related to the device is locked behind the corpo wall and oftentimes not released #random Windows consumes less power? What? Source please #random dyi: pick a laptop, install windows on it, browse the web, and compare your energy consumption with the same behavior on linux #random Or look at the countless examples online of people noticing it and benchmarking it #random Huh... Never noticed it happen to me (I have a dual booted laptop, windows for games) #random Or if I had to guess, atleast for me on Intel, it's the efficiency core bullshit maybe #random Idk #random It's probably different per laptop/drivers of course, but this is a general trend on Linux systems #random You can optimize your battery life by forcefully throttling your CPU, reducing the amount of background processes and so forth, but Linux on laptops is just sub-optimal if you care about battery life/performance - hence the original conversation about mobile chips, M1, macos, etc. #random sudo tlp bat -> gets the job done and boosts when necessary. I don't think I need all my cores to read messages on weechat #random s/all/all off #random s/off/of #random God damn it I am sleepy. Gonna log off #random yeah, you can optimize your battery life, so it's indeed not a fair comparison (unoptimized linux distro vs. windows) #random good night #random gn #markets big things happening in nyc. will have global consequences #random Gm #random https://nitter.esmailelbob.xyz/saboo_shubham_/status/1781748135473131740 #philosophy that's great! #random How to run the problem isn't the issue fren, the computational power to run is the real problem #random s/problem/model #random ++, not sure what the power of these local models would be comparatively, but getting these locally instead of sharing with a third party is better than nothing #random If you are fine with prompting a bit more than what you would do to GPT, then llama3 is goated from the reviews. I use mistral 7B at my internship project and it does well with the instructions #dev gm #dev upgrayedd: batin is from idiocracy lol #random upgrayedd: we are NEETs #random your momma brings you chicken tendies #random johnrz: check out libera, use /list to see all channels. they have ##rust, ... loads of topics there with 100s of users in each chan #random also lainchan #programming is quite gud #random I thought lainchan irc's #programming is dead #random not super active, but i had some pretty good flamewars with ppl there #random intelektuel de-batin #dev draoi: libp2p is over-engineered hot garbage so you can look at their requirements/featureset and tone it down re: resource manager #random lol fair #dev good to get informed / widen the perspective, then try to come up with MVP #random I just had a friendly convo in #general over there. #dev we can always do less now, more later, esp if the arch is good such that it allows expanding to that in the future without huge destructive changes (so good to keep in mind the future when designing software now) #dev also this software is solid: https://www.rasterbar.com/products/libtorrent/ #dev it runs all the torrent apps, so whatever they do for DoS is good. take a look at that #dev libp2p is made by , whereas libtorrent is real world software perfected over 2 decades #dev libtorrent -> libbitcoin -> darkfi p2p, so our p2p stack comes from libtorrent #dev checkout the code and dig through it: https://github.com/arvidn/libtorrent #dev it's an interesting history lesson on pre-async net code stuff lol #dev everything is done using callbacks #dev rg snub src/ #dev rg choke src/ #markets nycbro: more regulations? lol #random test #random test back #random nice #dev did you read the notes i made on libp2p? #dev not sure if you're responding to that or just making a general comment #dev ah not yet, ty #dev general comment #random test #random test back #dev in arch/p2p-network.md #dev https://darkrenaissance.github.io/darkfi/arch/p2p-network.html#scoring-subsystem #dev yep that's it #dev so basically it splits the different processes into scopes that contain eachother (like node -> session -> protocol -> channel in darkfi terms) #dev where each scope has a corresponding limit that is calculated from memory usage and other resources #dev > Since the reader in messages.rs preallocs buffers, there should be a hard limit here, and the raw reads also affects your score too. #dev tell me why this is wrong #dev i didn't write that lol #dev ah true i did #dev but go on, tell me why #dev well we changed the code now #dev so we are no longer preallocating buffers #dev correct #dev nice so you have a model here for scoring, i'd still look at libtorrent which does snubbing/choking/..., and see which strategies you might employ apart from stopping the connection or banning the host #dev ++ #dev also this scoring system is very fine grained, we could probably get away with less #dev also libp2p just gives an error when a limit is reached, and its up to other parts of the stack to decide what to do with that error #dev for example file descriptors - we don't really have any except the peers list #dev it was saying that socket addrs are file descriptors on most machines and it's a scarce resource that must be constrained... idk rly #dev ah ok, yeah they are file descs #dev that's the connection limit #dev you don't need to meter that in scoring subsystem, you could probably just use a hard limit #markets https://consensys.io/blog/comment-letter-to-sec-on-eth-etf-approval-pos #markets wonder how this plays out #markets https://twitter.com/JasonYanowitz/status/1782488216412496141 #dev Anyone running darkfid? Or is testnet not online? #dev gm #dev i think it's coming v soon (see yesterday's meeting) #dev the final testnet #random https://aztec.network/ #random > The first milestone toward Aztec’s endgame: A no-compromises privacy-first Layer 2 on Ethereum. #random > no-compromises #random tough talk for a regfi L2 #random aztec manifesto https://aztec.network/blog/regeneration-a-manifesto-for-an-autonomous-future/ #dev tnx #random "compliant privacy" #random alkaloid: which crypto projs did marketing well do you think? #random is curve a good one? https://www.youtube.com/@CurveFinance/videos #random "We are at a unique point in history and stand at the threshold of two worlds." #random yeah i saw that lol #random ACTION *whispers* RegFi will be unusable and bolted down. It will be toothless. The other side will be the underground DarkFi. It will have bite. #random philosoraptor: Polygon and Avalanche spent a ton on marketing last cycle, they did well but not sure it was worth the money #random i heard namada will launch in ~2 months, but in its current form won't do much as there's no eth bridge- potentially kinda like a mixer for ppl on cosmos to IBC into the shielded pool and back out again #random anoma is maybe 1 year out #random penumbra is also apparently around 2 months out #random alkaloid: oh gosh avax marketing is so bad and cringey, would you say they did well ROI wise? #random philosoraptor: Cardano and HEX did well because of their cult leaders, not sure if they paid for marketing #random best marketing has to be remilia #random genuine guerilla marketing #random i'm interested more in the tech marketing side altho remilia is useful #random draoi: ++ #random best marketing is if you have all the crypto twitter people behind your project #random remilia is instructive since they are also a fashion movement which darkfi is kinda tapping into #random they send free swag to egirl fan girls who take selfies in it that they use to advertise merch #random they also do these great high speed schizo montage vids #random that are like borderline violent #random which crypto projs have the best blogs? esp tech related ones (but not only) #random goldenmirror :D #random i was looking at starkware and others, it's all mostly spammy news #random sorry it's called goldenlight #random was mixing it with yarvin grey mirror #random https://goldenlight.mirror.xyz/ #random never heard of it #random charlotte fang's blog #random oki #random pangea: https://shop.avax.network/ #random brooo #random https://shop.avax.network/products/avalanche-black-beanie #random https://store.remilia.org/ #random could they not get better models... #random :D #random i must admit avax website is pretty well organized #random memecoins pumping without any utility/tech/fundamentals showed how powerful meme's can be #random lots of legit projects coping hard because their tokens are not performing #random which legit projs did well through good memetics? #random dogwifhat :D #random remilia XD #random i mean which tech projs, you guys keep talking about memecoins #random ok memcoins good to know, but which tech projs operated memetics well #random well, maybe Solana, lots of memecoins launched there lately and activity picked up a lot on Solana compared to other chains #random https://www.avax.network/blog #random it's just all garbage liquidity financebro fluff #random HarryPotterObamaSonic10Inu #random ticker $BITCOIN #random https://solana.com/news #random it's so normie and bland #random some tech projects have good tech memes like celestia modular blockchains #random but no tech project has done memes notably well imo #random yup, the Solana thing was more organic #random same shit https://blog.celestia.org/ #random people use Solana because of the low tx fee's #random it's like all these projs outsource their blog to some random normie #random Ethereum maxis are coping hard rn because of the high activity on Solana, while activity on Ethereum based L2s is still lagging, although they have low fees as well #random there is no love or care put into media presence? #random they just do liquidity pump strat #random back in defi days there was some pretty cool meme<>tech synergy happening #random like ohm etc #random yeah curve is nice too #random (3, 3) was a great meme #random all the celestia blog articles are written by this one dude, and they are all so boring #random yeah it became trendy for a bit tho #random prolly just insider stuff #random ok it's clear we can't learn anything from existing popular L1/L2s #random I miss the DeFi days, new crypto entrants seem to lazy, they are just looking to buy the next coin that's gonna pump, not doing anything fancy onchain which is pretty sad #random they offer no insight or originality into community crafting #random either retail is not fully here yet or the new retail is just dumber #random lol #random it seems there is an ever shrinking pool of liquidity that is mercenary #random and everyone is fighting zerosum for that pool #random for darkfi to join that fray is a losing proposition, we have to create our own market #random however retail in general is exhausted and skeptical of crypto #random creating own market is good but also i think we can be attactive to existing crypto community #random everyone is jaded about how crypto has gone #random that's a very good point #random we have to be like linux or silk road, which rallied people to a cause #random ++ #random ppl in crypto are here cos a) they answered the cypherpunk call and b) number go up #random to different degrees etc, but it's pretty much always these two things imo #random but there's a big sense of malaise rn #random the underlying values have been worn away and ppl are realizing that number won't go up if there's no real vision to offer #random yeah that mindset can be dangerous and paralyzing #random we have an opportunity to present an alternative vision for crypto #random it's powerful bc it taps into why ppl are here in the first place #random i remember in zuzalu there was a couchsurfing guy spreading 'mindpoison' which was to the effect of nobody can ever do anything, nobody can change nothing, and people were listening to it like it's wisdom #random so part of our strategy involves combating that malaise you refer to #random that's a general problem of contemporary mindset, not unique to crypto but exists there too #random wrt malaise i meant rn the market is off- no new narratives have been formed- ppl are leaving crypto for other things #random the only narrative rn is pretty much the halvening #random but there's a sense among crypto insiders that no real value has been created #random there's also a segment of initially ideological people (arthur hayes) or self bullshitters (gav wood), that now stay for the liquidity and their actions don't follow their ideological line #random test #random test back #random that's true, and many of these pay lip service to the original values #random it's kinda like "ok the ship is sinking, i don't believe anymore, but lets take everything" #random i'm not sure how to deal with that #dev : @zero pushed 1 commit to master: e73aa009fa: doc: wallet functionality #random is it true though? that no real value has been created? the challenge thrown to the existing monetary paradigm ought to be worth something #random yeah agreed #random just paraphrasing what ppl leaving crypto have been saying #random morale is low these days its true #random https://polynya.mirror.xyz/ptscXuh3J3KOj2uJAn0vrEanpn2nauwA7iytYZ4cM9U #random ^ an example #random the most popular cryptocurrency vid on youtube (262M views): https://www.youtube.com/shorts/8aYr2ueCFvs #random test #random test back #random yo #random heyo #random was having issues with multipass but got in #random enjoyed reading the convo you guys were having re crypto disillusionment #random https://youtu.be/ORdWE_ffirg?t=3144 #random 52:25 #random "we saw clearcut usecases, we could ..." #random I think with any new system where the possibility of rapidly earning a lot of money is within arms reach, it's always going to be abused with grifters, scammers etc #random a lot of people won't see the value of the tech, and that's okay, it's up to the rest of us to bring about something that will incentivise proper use cases #random it's why the state was so hell bent on shutting down silk road #random if James thinks crypto is the worlds biggest scam, I wonder what he thinks of our current fiat central banking system #random can't imagine a bigger, more successful scam/psyop than that #random the usecase of crypto: a peer to peer electronic cash system #random idk why people keep saying crypto has nothing to show for #random just feels like people want to see it fail #random it can already used as a payment alternative in many shops online #random is it revolutionary? no, but it's something #random that's probably the best simplified way to put it "p2p electronic cash system" without any intermediary party that can thwart your transaction(s) #random test #random test back #random what phone do people use here? I wanna move away from iphone, samsung or pixel is the only alternative it seems because there isn't a decent linux phone #random i use lineageOS (on OnePlus) grapheneOS (on google pixel) and kaiOS (on banana phone) #random oh nice #random I had a redmi with I believe crdroid OS (I forgot now) and now a oneplus with the stock OS on it, planning to shift to LineageOS next weekend. #random nice stuff #random i want a linux phone that can rung signal and telegram. don't care about anything else #random but linux phones are so damn expensive #random yeah or they're under developed #markets https://www.youtube.com/watch?v=pKEsgX2CaR4 #random hardware is difficult if you don't have proper funding, plus the right people who know how to do it #markets > This crypto cycle is different from past ones, Binance CEO says #markets cos of tradfi blaa blaa #random btw no sure if anyone is trying to send me a DM but I don't have my original public key on me because this is a new setup until I get back and add it to this one #random https://www.youtube.com/watch?v=YVI6SCtVu4c #random > How To Use FFMPEG On Linux #random https://www.youtube.com/@AndreaBorman/videos #random I'm loving the ffmpeg twitter feed recently #random i'll check it out #random this yt chan is pretty rad #random her very first vid: https://www.youtube.com/watch?v=mwBvvt5Dbro #random deki: wasn't trying to reach you but you have me wanting to do it XD #random haha I don't remember if we ever exchanged public keys, but if I give you this new one I have now, you'll have to delete it and add my original one when I'm back #random brawndo: ever since the microsoft incident happened, I think ffmpeg's social media manager got a confidence boost XD #random deki: Yep you are right, we have never exchanged public keys and I dont mind deleting and switching yep #random :D #random test #random test back #random airpods69 hold on let me generate the public key forgot I had to do it #random deki: take your time, no hurry or anything :D #random test #random test back #random there's always a hurry :o #random I actually can't get ircd --gen-keypair to give me a pubkey, just spits out some usage stuff then 'server not started' what mean? #random me trying to make a PR to darkfi "quick quick quick quick" #random forgot how I did this originally #random pretty sure it was just that (not sure though, did it once and it worked for me) #random yeah I thought it outputs in the CLI, I have my private key in the .toml file in ~/.config/darkfi/ but I know we dont share that #random You can use that private key to regenerate your public key, maybe try that?? (not so sure) #random k lemme see #random ircd --recover_pubkey #random nope I Just get this: Usage: ircd [-a] [-b] [-c] [-h servername] [-q] [-i][-T [tunefile]] [-p (strict|on|off)] [-s] [-v] [-t] #random Server not started #random welp #random indeed #random deki: well we talk here then XD #random yah, das okay #random but I'm curious to figure out what the go is #random what if you keep ircd running and then do it? (not that it should matter) #random yeah that's what I've been doing, also tried it with ircd not running #random I mean could also be due to me using this Multipass vm thing, where I'm running Ubuntu from, but if it's similar to WSL, should work okay #random mind putting the whole log into a pastebin file? (if thats okay) #random probably could find something in it? #random as in the output I get after running ircd --gen-keypair? #random yep #random well I don't get much except for these 2 lines: #random Usage: ircd [-a] [-b] [-c] [-h servername] [-q] [-i][-T [tunefile]] [-p (strict|on|off)] [-s] [-v] [-t] #random Server not started #random I think it might be a permission thing with my VM #random Oh this usage #random deki: that's not darkfi ircd lol #random soz should have said so #random oh :< #random we renamed it to darkfi irc cos of this exact confusion #random but the old version is still called ircd #random this is embarrassing lol #random try running it using ./ircd #random np #random omg that worked...believe it or not I thought at one point "maybe I should try ./ircd" and idk why I didn't try that #random test #random test back #random i'm a bit retarded sometimes, I blame the cold I'm not used to #random Whaaa lmaooo I thought you had it in your path lol XD #random deki: us retards #random kek #random lol :> #random ok airpods69 here's my info, but remember when I get back to my PC, I'll get you to update this because that has my original pubkey: [contact."deki"] contact_pubkey = "3phyn64SPvU61GakheRtbhzPiLodc12x6FK9djFiXBLG" #random whats yours? #random deki: [contact."airpods69"] contact_pubkey = "CoHPDJS6NzjLJKHq2dp3SPi4gKuPppmFGhwHVdmGsdT1" #random ok added will msg #random test #random test back #random back I am #random did you get my msg #random nope, I just joined back and was going to say, if you dropped a message then I missed it #random I have to restart after adding someone to the config, right? (cause I did that) #random ah not sure actually, but I'll restart anyway #random ah yeah, would be a good idea (since I saw the startup logs and ircd was going through the toml config file to look for contact configs) #random this line from the log on startup: ircd::settings: Found configuration for contact deki #random test #random test back #random ok sent msg #random got itt #random :> #random phone's battery is low coz I'm using it as a hotspot so will be afk for a bit #random what you guys think about i2p #random monero implemented kovri #random anon: re i2p, so many people offering "privacy" it is as if none exists LOL #random an offer for privacy almost invariably seems to spell, "you can have your privacy, but not from us" lol #random ACTION smacks himself on the head #random test #random test back #random https://youtu.be/NxTu1KpQGpE #random alkaloid: 20 seconds in and I just realised, if a software can be used for good then it can always be used for bad. #random also laura looks generated idky #random the allegations don't make sense at all, you can also use your operating system to do bad things or any software really yeah #random you can use a hammer to kill, whats the point here? #random eh the government probably is just scared that if crypto becomes mainstream then their banking system goes down #random airpods69 affirmative #dev : @skoupidi pushed 2 commits to master: c208ba4442: validator: better erroneous and unreferenced penging txs handling #dev : @skoupidi pushed 2 commits to master: ad7f835d50: darkfid: pending txs garbage collection added #philosophy hello #math hello #math yo fatback #philosophy o/ #philosophy how we doin? #math what's happening? #math https://www.youtube.com/watch?v=wD4xrnzKN1Y #math > Ted Kaczynski's PhD Thesis #math who wants to study this with me lol #math I've been meaning to read some of his writings. I see it come up often. #math may I ask a silly beginner question? #philosophy hi #philosophy how's it going? #philosophy blah #random test #random test back #math sure #math I've been reading some introductory material into cryptography and I often see the mention of "circuits". Would someone mind explaining what a circuit is? #random 31 years ago https://piped.privacydev.net/watch?v=VlN0kYoPHIU #math fatback: "circuits" in this case are arthematic circuits. #math set of operations to be done just like a boolean circuit (or a real life electrical circuit which is meant to perform operations if you wanna think of it that ways) #dev Trying to add user specified constants to zkas, but kinda stuck with how should fill up the constant_map (parser.rs:327) #dev cont... #dev So, first -> Either decide at runtime which NextTupleX to use. So defining a NextTuple9 if name.token == MY_OWN_CONSTANT is present. This would probably be clear for someone working on the code about what is happening. #dev s/Either// #dev s/327/324 #dev second -> keep NextTuple3 in the while statement (parser.rs:327) and check if name.token == MY_OWN_CONSTANT and then do a NextTuple5 so that constant_inner reaches the seperator comma at the end of our statement in zk file, and define reinitialize comma in parser.rs (from parser.rs:327) to this new comma from NextTuple5. This one does make sense but then while runs twice, I dont like it that much. #dev second -> keep NextTuple3 in the while statement (parser.rs:327) and check if name.token == MY_OWN_CONSTANT and then do a NextTuple5 so that constant_inner reaches the seperator comma at the end of our statement in zk file, and define reinitialize comma in parser.rs (from parser.rs:327) to this new comma from NextTuple5. This one does make sense but then while runs twice, I don't really like it that #dev much. #dev third -> in #252, they check if comma.token_type == TokenType::Assign and then proceed accordingly. This also works but still gotta follow what second approach does. Does make sense but would have to make it clear why this is being done. #dev Done. Not sure which one to go with (if first then help lol) #random test #random test back #dev going from second to first shouldn't be that troublesome I suppose. Gonna try second approach #dev : @skoupidi pushed 1 commit to master: a5b9706829: darkfid: properly handle the garbage collection task #dev Hello #dev I am a senior software dev, but my cryptography skills stop and knowing what a hash function is and how to use it :) #dev elloo #dev Can you guys suggest some online course or book for improving my cryptography skills? #dev Hi airpods69 #dev I don't want to become a deep cryto-math-expert either #dev myscdcdr: The learn section would be a good place to start looking for stuff to learn: https://darkrenaissance.github.io/darkfi/dev/learn.html#methodology #dev Actually I saw that page, and that is the reason I decided to drop by here #dev For 'Software Developer' it doesn't mention much in terms of cryptography #dev I don't think my goal is 'Cryptography Researcher' #dev Maybe 'Protocol Engineer' #dev 'Algebra studies are also required but not to the same degree as cryptography.' #dev So what would be an appropriate course of study? #dev Hi frens #dev Whatsup johrz #dev mysdcdr: well, I'd take a step back from the convo and wait for those with more experience to drop in. (my 2 cents would be that even for software developer, you gotta know cryptography till some extent ofcourse to understand what you are doing. Protocol Engineer would need more than that, Cryptography Researcher ofcourse needs the most.) #random yoo johrz #dev Cool, appreciate you wanting to help though! I'll be lurking around and see if something comes up. #dev sure thingg #random afk: getting something to eat #random b #random I'll be back tomorrow, heading to bed #random gn #random eh gn seems so rude, goodnight xD #dev gm #dev hey mysdcdr, you want to learn crypto? #dev most people try to study books on crypto, or more specifically zk schemes. a requirement is to know some basic abstract algebra (see pinter for a good intro) #dev then you can try to study zk schemes starting with groth16 or plonk. after this, you can go deeper into math (starting with EC), or you can treat math as a blackbox and just study a lot of different crypto schemes to learn little tricks you can use #dev the justin thaler zk book is decent #math ^ exactly that #philosophy anyone got the pdf for https://www.researchgate.net/publication/290120192_Free_software_philosophy_and_open_source ? #philosophy draoi: small world, https://gcas.ie/about/our-leadership/board-of-trustees/tere-vaden #philosophy the author of that paper #philosophy his fund robin hood coop has a pic of macao lol #dev gm philosoraptor #dev o/ #random anon: i2p is decent, we should maybe use it instead of tor in darkfi #random tor is heavily infiltrated by glowies #dev gm #dev maybe this was shared already: https://qed.usc.edu/papers/ChowGM08.pdf #dev it should be in the book #dev this blog is really good https://blog.libtorrent.org/ #dev https://www.rasterbar.com/products/libtorrent/utp.html #random test #random test back #dev i just used unsafe https://github.com/narodnik/therapy/commit/8dcb6dbc94ef79f2c115a5c94ebae6e6bbbb1847 #dev : @draoi pushed 1 commit to master: ea9044216d: doc: add useful attack definition to arch/p2p-network.md... #dev https://coredumped.dev/2022/04/11/implementing-a-safe-garbage-collector-in-rust/ #random uh oh https://www.404media.co/ai-is-poisoning-reddit-to-promote-products-and-game-google-with-parasite-seo/ #dev q #dev sorry hah #dev misclick #dev vim motions seem to be a bother sometimes xD #dev gm #dev gm brawndo #dev airpods69: You'd have to modify the logic a bit there where the NextTuple3 is happening for constants #dev Since you'll have two different ways of declaring constants, you'll somehow need to scan for either #dev This is what I did: https://codeberg.org/airpods69/darkfi/src/commit/c0aecb26e77604d39a02c73e332188ea7c5ba39b/src/zkas/parser.rs#L331-L369 #dev seems like it works (like atleast reads the constants, just need to figure out how to put it into parse_ast_constants function) #dev function at parser.rs:590 #dev ok but it'll have to be an arbitrary name, not MY_OWN_CONSTANT #dev Ah okay so maybe check if the name is not from the available ones? #dev Yes that, and you see each of those in 590 check that it exists as a hardcoded one #dev So there you skip that check if it's a constant declaration, e.g.: EcFixedPoint FOO_BAR = (0x00, 0x01), #dev I think then also the `Constant` enum should have a `coords` field that is an Option #dev err, I meant `Constant` struct in ast.rs #dev ;q #dev back, sorry was afk: had to deal with internship meeting #dev I haven't reached the part where I had to look at `Constant` enum (Was dead stuck with the part I sent you cause I couldn't decide how to proceed until yesterday). `constants_map` would need to take in `x` and `y` with the arbitrary name but `parser_ast_constants` doesn't like that. Would have to change the definition of the function too. #dev To put the variables into `Constant` enum, gotta go through `parser_ast_constants` first ;-; #dev Yeah you have to modify it #dev okii shall do #dev !topic commit log format specifier #dev Added topic: commit log format specifier (by philosoraptor) #random test #random test back #random philosoraptor, how about the option to use EITHER tor OR i2p? #dev philosoraptor: That looks like a structured plan, thanks #dev np #dev You would still say that is the plan for someone who doesn't want to end up being a Crypto researcher, just a solid grasp of crypto as a dev? #random well firstly someone has to write the code for i2p and take responsibility, secondly people need to run stable nodes on the networks. it's overhead #philosophy https://www.noemamag.com/we-need-to-rewild-the-internet/ #philosophy SIN: thanks for sharing this article #dev mysdcdr, I suppose yeah even if you don't want to be the researcher (just treat the maths as blackbox like philoso said) #random https://www.youtube.com/watch?v=tYVm62oEyWA #lunardao saw the callout for videos to build the wiki #lunardao will drop some resources here #math hello #random hello #philosophy hello #philosophy hello fatback #math o/ #random hello fatback #random XD #random replied everywhere I believe #random Hahahah! #math hey airpods69 #math are you experienced in cryptography? #random I'll move everything to the math channel, lol #math nope, I just had one course at university about cryptography. Thats where my experience starts and ends honestly. #math wassup though, what do you wanna ask? #math well let me ask as this might be a beginner question... #math I've been reading some introductory material into cryptography and I often see the mention of "circuits" #math Do you know what is meant by a circuit? #math ahh I did answer that today #math check out the chat log here: https://agorism.dev/log/ :D #math or on telegram, whichever suits you #math Oh was that my question you answered? #math yepp #math my bad! #math its alright, happens to the best of us :D #math The last thing I saw when I logged into this channel today was that question I posted. Is it possible to extend the number of lines saved? I think mine is set to 20. #math you can always get the logs from ~/.local/share/weechat/logs/ (I couldn't figure out how to do it so I just look at the text logs XD) #math Ohhh that's good to know. #math yepp #math Ok, let me read through your response. I appreciate it! #math So is it all the math operations that go into an algorithm? Sort of like a computational graph? #math As far as my knowledge goes, yes. #math Ok that makes sense. #math Thanks for the answer. Anything on your mind today? #math glad I could help :D #math Trying to add constant support to zkas here so thats on my mind. #math zka? #math fatback: https://darkrenaissance.github.io/darkfi/zkas/index.html #lunardao https://www.youtube.com/watch?v=jlB2QV5wVxg #math got it! #lunardao ty sadar #dev mysdcdr: yeah but do less abstract algebra and as airpods said, just treat it like the blackbox #dev like an API #dev : @skoupidi pushed 1 commit to master: ca5df82a72: darkfid: apply blocks with minimal verifications when using sync checkpoint #dev so I am able to get the values of coordinates reach compiler.rs:85, but as soon as I push the values to bincode, decode starts freaking out :/ #dev raising a draft PR in 5 mins just to keep things visible #markets https://twitter.com/sethforprivacy/status/1783213401855889729 #markets SW: bruh... #markets bruh is right #markets This is why this tech should never rely on "operators" #markets Lmao wtf - even samouraiwallet.com now displays "THIS WEBSITE HAS BEEN SEIZED!!!!" - le glowies #markets Whirlpool is offline too, it's just broken right now #memes https://twitter.com/TheBTCTherapist/status/1782341074175902142 #memes cool meme #dev Alrighty philosoraptor airpods69 let's see where I get to :) Thank you #random exit #random ./quit :') #lunardao https://neat.tube/w/wxhe6FjfWLFwDsiNHtnsFF techlore - The Ultimate Guide to Using Tor Browser Securely #lunardao https://www.youtube.com/watch?v=wGIh5tQcw68 - Mental Outlaw - I2P Easy Install Bundle #lunardao https://wiki.lunardao.net/anonymizing_assets.html#anonymize-assets-using-btc #random test #random test back #lunardao https://twitter.com/lunarpunksquad/status/1783267631329316921 #lunardao LunarDAO is in the Gitcoin grants 20 web3 infrastructure round #lunardao Spread the word and share with your networks, lets bring more eyes 👀 to the lunarpunk mission #dev so I raised a draft PR last night, #253 is the PR number. (Apparently the constants also get written with the output, just gotta figure out decoder.rs now) #dev mysdcdr: looking forward to your learnings :D #dev gm #dev oh this makes sense, it freaks out cause it doesn't identify '0' as a VarType (I am putting 0 as a NoneType Token for the coordinates, can be changed later) but hmm idk lets see what can be done. I am guessing this is related to how compiler.rs puts the value into bincode instead of decoder.rs itself. #dev or not... ;-; #dev decoder.rs:132 is where the problem starts (more like the problem that I created lol) #random test #random test back #random https://www.justice.gov/usao-sdny/pr/founders-and-ceo-cryptocurrency-mixing-service-arrested-and-charged-money-laundering #dev gm #dev o/ #dev o/ #dev (0, 0) is not a valid EC point. you could use that #dev yay, that hunch was right. #dev Thought still stuck with decoder.rs part, so close yet so far. adding 3 to iter_offset at decoder.rs:147 would make sense since we have 2 extra values in between? (it does compile the zk binary) #dev shouldn't it be 2 * length_of_value? #dev and the length_of_value is 32 #dev ahh for now the coordinates are TokenType::Number and iter_offset was `iter_offset += 1` and I changed that to 3 (cause 2 new values) and things started to compile. 2 * length_of_value would probably overshoot the iter_offset? #dev also Number because its easier to deal with it before adding the hex values. #dev : @draoi pushed 1 commit to master: f60a1983bc: doc: add darkfi p2p resource manager notes to arch/p2p-network.md #dev ah nvm i didn't realize you're working with tokens, i thought it meant bytes #dev im working on the UI rn https://armor.vision/ui/1/ #dev mysdcdr: in #math, feel free to share your study plan #dev philosoraptor, no problemo. #dev oh wait, whats that UI for? I thought we would just use weechat or someother irc client as client for darkirc #dev we'll keep weechat compat, but making a UI for everyone else #dev oh wait so no compiling? just download and run? #dev darkfi.exe #dev yeah lets see, it's tricky since we have the daemons like darkirc and darkfid #dev ah fair I remember someone talking about this on the telegram chat a day or two ago. #dev we could compile them in #dev or keep them separate #dev i'm not sure what's the correct approach #dev or like you can optionally "attach" them to the UI #dev if you want to enable payments etc #dev idk #dev option 1) node is compiled inside the UI, option 2) node is external and UI uses jsonrpc #dev you can actually do both as well #dev altho you don't want to have tons of binaries like darkirc, darkfid, taud, .etc managed by your UI, which is why me and bra*ndo discussed making something like a 'kernel' which has pluggable modules. that way there's a single binary managing all the backend daemons. #dev you can also do in process jsonrpc, so even if the UI runs the daemon code directly, it can just use jsonrpc... or talk to an external process #dev for example on the phone, you might want darkfid on another server since it's heavyweight #dev but maybe run darkirc locally is fine #dev that sounds good re: kernel #dev darkfiOS #dev :D #dev apple devs hate this one OS #dev a lot of code/mechanisms are shared by the individual binaries. for example when we add swarming support to p2p network #dev you will want to run a single p2p overlay network shared by all apps #random brb: gotta hit up the internship office #dev gm #dev philosoraptor: The UI should definitely be a separate thing that uses a protocol to communicate with software it supposed to work with #dev You can have another "main" daemon that can handle the logic, but the UI should be an interactive thing only display/interface #dev That "main" daemon for example could be the wallet/ircd #dev Then any interface can interface with it using a protocol like JSONRPC #random test #random test back #dev For the chat, you could simply have a JSONRPC subscription which multiplexes - it would notify you about new messages, and you would send your messages through that same connection #random https://linuxiac.com/gentoo-focuses-on-binary-packages/ #random damn I am blocked from viewing the link. #random from the url, I am guessing that gentoo is planning to shift to binary packages now? #random I thought the package manager for it could already do that #random It's not shifting, just offering a central repo for binary pkgs #random That's nice. I've been doing that for myself for quite a while. #random Compile things on my fastest machine, and then use that as a binpkg host for all my other Gentoo machines #random It's great if this can get people away from systemd :D #random ah thats nice actually, I'd have to setup an over-the-network compilation to use all of my machines, aint no way my single lad can do it #random Before the support for binpkgs was really good, I used distcc, which gave you a way to use multiple computers to compile the same thing in parallel #random But there you had to keep everything in sync wrt. versions #random With binpkgs you can have what they call a prefix #random https://wiki.gentoo.org/wiki/Project:Prefix #dev i remember using mldonkey-gui, which had the same model with mlnet daemon, where the daemon implemented kazaa, ed2k, ... a whole bunch of programs #dev it was a nightmare to manage. many times i installed mldonkey-gui and it couldn't find the mlnet daemon, or it would be running but not able to connect .etc #dev then also when closing the app and reopening, sometimes it would think mlnet is already running, ... lots of weird stuff like that #dev Could just be poorly written, I dunno #dev now i see bitcoin-qt, monero gui, qtbittorrent, instead of using jsonrpc with the daemon, they just integrate it directly as a lib #dev idk, yeah could be poorly written #dev Yeah I dunno what qbittorrent does #random test #random test back #dev I know that it has a Qt UI, and also a WebUI #dev it should be possible to start the daemon in a special task group, and then manage the group #dev qbittorrent is libtorrent-rasterbar + Qt UI #dev aha #random brb: again #dev I use this https://pypi.org/project/python-qbittorrent/ #dev or will we host a darkfid daemon? like electrum or cake wallet #dev liability #dev i guess on mobile you will connect to a remote darkfid, but maybe do some stuff locally #dev liability++ #dev so it's a mix of remote/local daemon #dev Maybe in the P2P network we can export some public RPC endpoints #dev Because darkfid doesn't maintain a wallet #dev So it's relatively safe to expose #dev Ideally we don't host anything ourself #dev Dunno if seed nodes are also facilitating usage #dev s,also,& considered, #dev ok good we're thinking about this, but for now i'll assume jsonrpc single endpoint mode #dev It's always single endpoint #dev In P2P you'd just select a random node to work with #dev you should select multiple #dev and cross correlate what they send you #dev No, why? #dev meh #dev because they can lie about what's canonical #dev Same goes for Electrum, yet it seems to be working #dev yeah i'd argue that's an attack on electrum #dev electrum should allow connecting to 3 nodes and comparing traffic #dev It's still not a solution, it's just lowering the chances of a dishonest node #dev lowering chances of a dishonest node is good #dev only full safety is running your own node, but if people won't do that, then provide next tier protection #dev commercial wallets run their own node and users trust them #dev Yeah #dev with community servers, then it's more risk #dev anyway i have more idea of the direction, will keep things simple for now #dev *nod* #random ok maybe gentoo is my next distro #random :D #random yeah i will switch to gantoo #random it's a really mature big linux distro with good fundamentals #dev : echo #dev echo back #dev ohai #dev : Hi #dev : darkirc seems stable #dev : echo #dev echo back #dev : hey #dev : draoi: didn't taud recently lose some tasks? #dev : yeah taud was not very stable last i was using it #dev : i think that's event graph related but idk #dev : needs someone to look into #dev : it should be easy to fix if we have the proper tooling #dev : then when it doesn't sync, we can simply isolate the graph and try to replay the event to see if it gets added #dev : if it does then it's most likely a protocol issue #random > headline posed as a question #random the answer is always no #random that's some kind of "rule" but tbh i've worked in media and it's not universally true #dev fun fact about dbus, i normally disable it but enabled it for therapy. now it starts elogind which captures my Sleep button (which i use for other stuff) #dev great example of bad engineering #dev airpods69: around? #random ah ok, i just saw https://www.zdnet.com/article/is-ai-in-software-engineering-reaching-an-oppenheimer-moment-heres-what-you-need-to-know/ #random he's speculating on software dev without understand industrial engineering is done using formal verification and tools like that, not chatgpt #random the ai hype is ridiculous #random test #random test back #dev I am now upgrayedd #random back #random test #random test back #random test #random test back #random test (jesus I have some unstable internet here so apologies) #random test #random test back #dev airpods69: re #253: commit messages should be usefull, as per https://darkrenaissance.github.io/darkfi/dev/dev.html#making-life-easy-for-others #dev preferably squased into a single one #dev another thing is that you are signing your commits, which is probably revealing your main account. I don't know if thats a problem for your, but if it is, use a repo specific signing key. #dev : @draoi pushed 3 commits to p2p_hardening: 657e74604c: channel: add start_time to ChannelInfo #dev : @draoi pushed 3 commits to p2p_hardening: 823b329b0c: doc: update research manager notes in arch/p2p-network.md #dev : @draoi pushed 3 commits to p2p_hardening: 98fb01d1ba: net: add initial `economy.rs`/ resource management sketch #dev upgrayedd: oh okay, shall do it according to that. I somehow missed that when I was reading the documentation #random test #random test back #dev so I shouldn't also make microcommits? (not sure cause then the same intent would be across multiple smaller commits) #dev airpods69: microcommits? no. batch stuff that touch same places and/or part of same functionality addition into single commits #dev okay, shall do. #dev also you should avoid random prints you use for debugging in the final commited code. #dev airpods69: It's also fine to push random commits in a PR just to keep a log of the work #dev Later you can always do a git rebase and squash certain commits together so they make sense #dev upgrayedd: yes the random prints would be removed in the final PR (This one is just a draft, so its like if someone runs it then I want them to see what I am seeing here). #dev yeah this brawndo advice is good also, was mainly talking for the "final push" #dev ah yes, I'll squash it in the final push and make a descriptive PR. right now its just like checkpoints to go back and forth and keep up with what I am thinking. (and also how the code comes forward for whoever is keeping up with the PR) #dev bbl in a few hrs #dev airpods69: yeah thats understandable and makes sense, the point was so you just start making it a habit to write proper commits #dev yess, that I will do from the next commit. #dev even when microcommiting, its much better to have a good commit message, so its clear right away what it touched, without needed to look the code #dev then squashing becomes even easier, since you simply mash up all these into a single one, so you can take the commit messages as the changes in the final squashed commit #dev make your future self work easier, he/she/they/them will appreciate it :D #dev : hello from darkirc #dev : i'll be running darkirc tor nodes only for the time being, these two are online and you can add them to your configs if you want: #dev : tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25554 #dev : tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551 #dev : <3 #random did anyone try to setup ircd via qubesos with tor+nym? #random test #random test back #dev yes upgrayedd, I will follow the advice :D #random back #random : https://www.coindesk.com/policy/2024/04/24/samourai-wallet-founders-arrested-and-charged-with-money-laundering/ #random : Title: Samourai Wallet Founders Arrested and Charged With Money Laundering #random : wow #random test #random test back #markets blackrock etf investment slowed https://farside.co.uk/?p=997 #markets market showing weakness #random test #random test back #markets may to october is a pretty boring period #markets sell in may and go away #markets i'll be very surprised if we keep making ATHs during the summer #dev back #dev : nice errorist #dev welcome back #markets the global financial situation isnt getting better, gold buying by chinese citizens is going parabolic #random : Another point for not hosting infra #random hello #random hi fatback #random test #random test back #random test #random test back #random test #random test back #philosophy hello #random test #random test back #random : test #random test back #random 2nd UPS connected, computers are safu #random lez go nice #random LEZ GOOOO! #lunardao https://twitter.com/i/spaces/1YpKkwLpDEoKj Grab a tea, pull up a chair and join us tomorrow for our Friday Shill & Chill Space. Open to ALL rounds participating in #GG20 1600 UTC tomorrow #lunardao https://twitter.com/gitcoin/status/1783540305951649895 #random test #random test back #dev gm #dev o/ #dev hows it going? #dev sometimes i spend ages on trivial questions, but rn think i have an answer #dev meanwhile sidetracked hacking on our whiteboard app #dev dbus is such a crap tech #dev : gm #dev philosoraptor: any thoughts on this? https://codeberg.org/darkrenaissance/darkfi/src/branch/p2p_hardening/src/net/economy.rs #dev it's just a sketch rn and the interface will likely change as i start integrating it #dev and i will probs rename to resources.rs rather than economy.rs #dev yeah it's a good start, called it Resource, not Resources #dev ++ #dev : gm #dev philosoraptor: Nice that you hate dbus from actual experience with it #random https://pastebin.com/TYgU70vy #dev could've been done well, a system bus would be cool #dev maybe we're meant to use proc/fuse for that #dev : @draoi pushed 1 commit to p2p_hardening: 6cfbd76f80: net: integrate resource API (dummy values for now) #random goddamit #random will look later #dev plan9 solves this #dev brawndo: i made it fully p2p now and using zmq https://github.com/narodnik/therapy #dev fun fact, in zmq you can have multiple publishers -> single subscriber model, just by doing the bind on the sub socket instead of pub socket #dev so the app just accepts draw commands like that, and then the python scripts can push directly to your canvas #dev https://github.com/narodnik/therapy/blob/master/pencil.py #dev see PEERS #dev Sweet #random test #random test back #lunardao https://lunardao.net/why-anon.html now more than ever #random test #random test back #random test #random test back #dev yoo #random test #random test back #dev !list #dev Topics: #dev 1. commit log format specifier (by philosoraptor) #dev ^ in case i'm not here, this is that we have a pre commit hook which enforces a particular format for commit messages #dev that way we can generate a ChangeLog directly from the commit log #random test #random test back #random back #dev gm #dev : hey errorist are the above nodes seeds or peers? #random : echo #random echo back #dev : ok seem to work as seeds #dev map 1949917 #dev btr 1915595 #dev hashmap vs btreemap speed comparison for 6 keys #dev ACTION drumrolls #dev vec 1190192 #dev i just increase sample size to 100k: #dev btr faster than map #dev vec faster than map #dev vec 114206946 #dev map 215887664 #dev btr 206030136 #dev so vec actually makes sense for low number of values #dev https://agorism.dev/uploads/main.rs #dev 100k keys? #dev no the same size, see the code #dev *sample size #dev ah ty, been meaning to check this for hostlist max sizes (1k, 2k, 5k, respectively) #dev i think for large sizes, hashmap becomes more efficient #dev philosoraptor: quick q #dev is it fine if I change every MerkleTree::new(100) to MerkleTree::new(1) for consistency? #dev the provider usize is the checkpoints size, which we don't really use, so 1 is enough everywhere #dev yes i just copied what brawndo did #dev lol #dev yy no worries #dev will do a quick find/replace everywhere #dev izi pizi #dev copy pasta error #dev well its not an error :D #dev true s/error/mistake #dev : @skoupidi pushed 3 commits to master: 80044e306f: darkfid: fully configurable fees verification #dev : @skoupidi pushed 3 commits to master: 9178923c9e: darkfid: gracefully handle everything in live loops #dev : @skoupidi pushed 3 commits to master: 080417bb3f: chore: replaced all MerkleTree::new(100) with MerkleTree::new(1) for consistency #dev rust borrow checker driving me crazy #dev #safety_first #dev https://agorism.dev/uploads/main.rs #dev i cannot do this in rust ffs #dev what's the point of a borrow checker if i have to use RefCell everywhere #dev gm #dev greetz #dev yeah I think async rust is a bit notorious for being annoying #dev i spent all morning trying to make a tree that takes 10 mins in every other lang #dev realized it can only be done with Arc, so instead moved data out of graph structure, create an allocator and use usize indexes #dev now it won't let me make a function to link 2 nodes because you can only have 1 mutable ref, despite you can do it without the functions completely inline wtf #dev sounds annoying #dev I wonder if other languages are opening up a big possibility for race conditions or other memory issues in that case #dev or if rust needs better ergonomics in matters like this #dev so often the solution in rust is to just use indexes like usize #dev but then you just recreated a pointer #dev hm and it looks like RefCell uses unsafe code under its API too #dev so you kind of end up in the same place #dev lol this is the solution https://users.rust-lang.org/t/multiple-mutable-references-from-vector-content-how/90132/3 #dev unbelievable #dev : @draoi pushed 1 commit to p2p_hardening: 753b3a8160: net: apply arbitrary limit on packet size #random test #random test back #random brb: connecting to vpn somehow messes up ircd #random test #random test back #random test #random test back #random well it still works nice. #philosophy New submission for DarkFi insights by @Narodism #philosophy "Let's do something fun together. Let's deny fate. The more of us that say no, the more fun it is. Deny the corrupt politicians. Opt out and say no. They are impotent. They cannot do anything to compel us to follow their arbitrary rules." #philosophy https://dark.fi/insights/samourai-devs-arrested-is-a-wake-up-call.html #philosophy you heard it here first #philosophy banger #philosophy the only project having the balls to push back is DarkFi #philosophy "DarkFi realizes these issues. All our dev contributors commit through Tor on codeberg on an anon account." oh lord... #dev what if I get the coords as a String format and then played with it to the needed format later after decoder.rs does its job? (in reference to #253) #dev I mean, it is a dirty fix and doesn't really uphold to the flow(it should be a number token), but it should work, atleast in my mind. #dev rationale behind this is that deserialize_parallel was working previously without x and y added to bincode array/stack and it was a string so in theory if I just went with the flow of string, so iter_offset += 1 and += offset after deserializing, it should work. (decoder.rs:149, or somewhere near it, I added some code so line number might vary) #random test #random test back #random oh wow this still works, damn nice (the connection is something which I particularly won't call stable so yeah) #random test #random test back #random test #random test back #dev 1.5 hours later, It does work nicee, https://imgur.com/a/pUmPaMx #dev decoder.rs decodes the values just fine, gotta put it into the Zkbinary that gets printed now then I can finally move onto actually using the constants #dev well, that was fairly easy lol https://imgur.com/a/j6QYp3I #random test #random test back #random short test #random test #random test back #dev gm #random test #random test back #dev http://0x0.st/XHxv.txt #dev unable to compile v0.4.1 on aarch64 #random test #random test back #random test #random test back #dev gm #dev topia weird that's a rust internal error #dev problem with this crate https://docs.rs/digest/latest/digest/ #dev sometimes these problems go away and are because there's a new compiler version, and the library authors didnt update yet .etc #dev you could try downgrading compiler or upgrading to nightly #dev : gm #dev : hey #dev airpods69: use a [u8; 32] bytearray. There's a method to_repr()/from_repr() #dev oh okay, for the zkbinary right? #dev (yeah Im stupid, my bad) #dev yeah instead of string #dev yep, hopefully shouldn't be a problem to do that. Also question, once this is done, how do we test that generator is working with the provided coords in vm.rs? Not so sure. #dev just add a print to make sure it's the correct value being loaded #dev draoi: can we rename Subscriber to Publisher? darkfi/src/system/subscriber.rs:61 #dev ah fair then, shall make a PR for the whole thing by tonight then #dev wonderful #dev sure #random test #random test back #dev test #dev test back #dev hi I've been having issues trying to implement the TryFromt trait into zkas/parser.rs for VarType, here's the code I've implemented (only the first part I'm getting errors on) https://pastebin.com/7iUSP2j5 #dev this is the error: https://pastebin.com/VGXkNDtc keeps on saying expected 1 generic argument for Result any ideas? #dev I've tried String, but no go #dev it follows the Rust by example code, so unsure why it's having issues #dev ah wait, if I remove Self::Error, the error goes away, does that make sense? #random : https://news.itsfoss.com/ubuntu-24-04-disappointment/ #random : RANT - I AM SO DISAPPOINTED WITH UBUNTU 24.04 #dev trying this solution does away with the error, but I get another "expected 'String', found 'std::io::Error'" https://stackoverflow.com/questions/57794849/result-getting-unexpected-type-argument #dev : have you tried to ask AI @deki ? (upgrayedd's "AI is laughable" incoming in 3 .. 2 .. 1 ..) #dev I did ask about the error and it gave me something similar to the stackoverflow, actually think I got it working, the second error suggested this: help: change the output type to match the trait: `std::result::Result #dev I know longer get the same errors after make test, guess that's a good sign #dev : :D #dev deki: you have defined type Error = String;, which means that your Result is actually Result hence the initial error #dev also why is it a tryfrom and not a simple from? like here https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/blockchain/header_store.rs#L55-L61 #dev I was trying to follow the Rust example: https://doc.rust-lang.org/rust-by-example/conversion/try_from_try_into.html but you're right, doesn't make sense #random http://0x0.st/XHgr.txt #random now this error about error: failed to download `aead v0.5.1` #random v0.4.1 #dev not also the original TODO said: change to TryFrom impl for VarType #dev I can change it to 'from' if you think that's better #dev oh no was ust asking since I don't remember lol #dev ah fair :> #dev meant to say *but also #dev in rust example type Error = (); means the Error type is nothing, so it works #dev since it complies as Result #dev so Err(()) is actually (()) #dev yeah that makes sense #random topia: these are not repo related errors, it looks like you have connectivity issues with rust crates #random ok #dev okay I'll try to sort out the other errors I have, will bbl, thanks for feedback #dev use type Err = Error (the darkfi one not std) #dev ah philosoraptor, I was dealing with Token right? so token field in it only supports string so it will always go as a String into the binary. #dev cant really go into the [u8 ; 32] territory i guess? (maybe could translate it from String to [u8 ; 32] in vm.rs) #dev ah my bad #dev airpods69, no you're correct, not me #dev the binary should be [u8; 32] not string tho #dev String is serialized as length (using VarInt) + byte array, whereas here we just want 32 bytes, no length #dev brawndo: https://gagor.pro/2024/02/how-i-stopped-worrying-and-loved-makefiles/ #philosophy > "UFOs aren't real" #philosophy mfw https://en.wikipedia.org/wiki/Jimmy_Carter_UFO_incident #philosophy > Jimmy Carter, United States president from 1977 until 1981, reported seeing an unidentified flying object while at Leary, Georgia, in 1969. #dev phiosoraptor: "the binary should be [u8 ; 32] not string" do you mean the coords constant type here? #philosophy > Despite his earlier pledge, once elected, Carter distanced himself from disclosure, citing "defense implications" as being behind his decision. #dev also yeah, maybe some function to make the string only work if data in string is like that of 32 bytes? (not sure) #philosophy after saying if elected he would make everything public #dev i mean what goes into the binary file is 65 bytes, 1 byte (either 0 or 1) and an optional (if the byte is 1): 32 bytes for x, 32 bytes for y #dev well either 1 byte or 65 bytes #dev nothing more or less #dev afk (offline), cya l8r #dev seems doable, it would be a check for 64 bytes (x, y) in parser.rs which gets triggered if we have an arbitrary constant name. #dev alright, have a good one. #random test #random test back #random test #random test back #dev upgrayedd: you said to use the darkfi error 'type Err = Error' is that all it is? #dev deko: I don't understand the question #dev s,deko,deki #dev in response to my code from before: https://pastebin.com/gYmEiEVw you said to use the darkfi error type 'type Err = Error' instead of what I had? Just want to confirm if that's the only thing I need to use for declaring the error type? #dev well if its not imported already you need to also import it #dev also don't use std::result::Result, crates Result sould be fine #dev the definition should be fn tr_from(value: &str) -> Result { ... } #dev also don't use VarType::{type}, use Self::{type}, for a cleaner look #dev ah I see, thanks #dev in error bracket(_) don't use format #dev you should be able to use Err(Error::ParseFailed(value)) or some other similar error from src/error.rs #dev okay, so all the error related code is in src/error.rs then? I was looking in zkas/error.rs #dev zkas/error.rs is zkas specific errors, src/error.rs is general darkfi lib errors #dev I see #dev where is the todo you are doing? #dev zkas/parser.rs line 686 #dev ok so you shouldn't use darkfi result error #dev should I just leave it as type Error = String then? #dev no it should be ErrorEmitter #dev btw your impl is wrong you know that right? #dev well yeah, that's the issue I've been having with the line fn try_from(value: &str) -> Result #dev the todo is not for a FromStr #dev or is it wrong elsewhere? #dev sec thinking #dev someone suggested the task as a way to learn more about Rust, and from memory I think they said VarType could have a method from a str #dev yeah so you replace the match with something like: let typ = v.1.toke.as_str().into()?; ret.push(Witness{name: k.to_string(), typ, line: v.0.line, column: v.0.column}); #dev so your TryFrom impl should match exactly the match #dev therefore since the match uses Err(self.error.abort(..)) your tryform should use that #dev so Error = ErrorEmitter #dev or just ErrorKind::Other should be much simpler #dev test #dev test back #dev okay, thanks for the feedback think I get it. I'll re-try that, also need to reset my VM because it's acting up #dev will bbl #dev glhf #random hi #random \quit #random wrong slash #random hi though #random https://dark.fi/insights/samourai-devs-arrested-is-a-wake-up-call.html #dev b, checking logs #dev welcome back o/ #dev > seems doable, it would be a check for 64 bytes (x, y) in parser.rs which gets triggered if we have an arbitrary constant name. #dev ah yeah this is a better idea actually than the bool #dev philosoraptor, thats what I am going to do. First step, get vm.rs and fixed_bases.rs working with the constants. The checks can wait since those are checks and won't really bother the functioning but only make sure things work. #dev noice bruh ;) #dev ohh also also, I'd need help with this check. https://codeberg.org/darkrenaissance/darkfi/src/commit/27feb7b4446c7471c5f378c8f64e9a7b45cacdc7/src/zkas/parser.rs#L596 (it was the same as:D) #dev s/:D/"witness check" #random test #random test back #dev in the match case at vm.rs:655, if we have arbitrary constant names, then it should actually replace the error for invalid constant name (since that would be handled in parser.rs while defining. If not valid then assume arbitrary constant name and then check for x and y accordingly? if failed then zkas will start screaming about it instead of this reaching till vm.rs) #dev guess I'll replace it yep, whats the worse that can happen #random test #random test back #lunardao test #lunardao https://twitter.com/web3privacy/status/1784603213435371748 #lunardao community meeting tomorrow at 1600 UTC #dev 1 #dev paul: o/ #dev lol, hi #dev I'm a noob to irc #dev too much time on discord, etc #dev same, dont worry bout it xd #dev I saw a post on reddit looking for devs (https://www.reddit.com/r/rust/comments/1bpg8b8/official_rrust_whos_hiring_thread_for_jobseekers/kylb7de/). I might be needing a new role in bit so I figured I'd sit in on the meeting tomorrow. #random test #random test back #random test #random test back #dev gm #random oh, hii deki :D #dev gm o/ #dev another day I'm glad this project isn't on discord #random hewwo #dev me too although I still need to setup an always on machine instead of this laptop cause I haven't switched to windows to play some games for ages now. I would have appreciated some centralized stuff XD /s #random wassup? still above the equator? #dev lol yeah same, I've been running of VMs but you can get it on an android phone #dev yeah, gonna set it up once I'm done with this PR. #random yes :> still cold, it was snowing this morning lol wbu #random still working on #253 and burning cause of the heat #random noice #random one part of the message is nice and one isn't, which one do you think is it XD #random hehe gotta be the coding one that's nice #random indeed xd #random :3 #random afk: getting some coffee #random back with my drugs #random same #random lez go nice, a cup of coffee together xd #random a good fireplace is all what is needed now XD #random s/XD/XD \/s #random hahaha well not sure if that's a good idea for your lol #random *you #random oh yeah no I'd travel to a colder environment first ;-; #random indeed #random oh btw deki, do you use neovim or vscode? #random I use vscode >.> #random but I'm gonna shift to neovim/vim because someone on here said IDEs are bloat and I gotta agree #random oh fair, if you use neovim, then you could check out neovide. yes I know IDE bloat but it is pretty fun to use #random oh nice ty #random Here is the only reason why I use it: https://neovide.dev/features.html#some-nonsense- #random ngl that looks awesome #random ikr, even supports remote neovim connection too so thats a huge plus #dev gm #random wow really #random oh it's just nvim headless mode, you don't need neovide for that #random i want true multiple people editing the same text support #random and you see it realtime #dev gm #random philosoraptor: you need neovide /s (I just like the scroll and non-sense it has) #dev gm #random also I think what you mentioned, zed can do it but its MacOS only #random this plugin does it but its fragile and unmaintained https://github.com/jbyuki/instant.nvim #random one major update and it will breakdown. But that said, giving it a shot would be fun. #dev : gm, just got back, tried to build new dockers, nice work ! #dev : {x86_64,aarch64}_{almalinux,fedora,ubuntu,debian,rocky,oraclelinux}_2024-04-27_080417bb3 #random i just found this https://github.com/jxm35/livecode.nvim , might give it a try #random would be fun with a GAN. Coding together from different parts of the world lol #random GAN as in generative adversarial network? #random Global Area Network (or VPN I believe) #random oh i see #random Generative Adversarial Network -> we gonna generate some images together? hahaha #random idk probably lol #random only acronym I could think of, plus GANs are super interesting to learn about #random yeah! if you get the sense of that then check out about diffusion models. Blew my mind away when I read about the whole chain that goes on in it and how it involved concepts from thermodynamics. #random oh yeah definitely, I used to work in ML/AI, still wanna be involved in it but I'd rather contribute to a project #random huh, you worked in ml/ai but never contributed to a project? #random I meant as in I had it as a job, but I'd rather contribute to an open source project than do it as a job #random just the field I work in, I don't want to contribute to it anymore #random oh that makes more sense. I have it as my internship work. #random nice #random btw btw if you wanna contribute to it, maybe check out tinygrad? #random would be a nice place to start off with for open source stuff. "Not making models but making what is needed to make models" #random for AI i mean #random yeah I know of them, it's either them or nous research, but for now I'm just focusing on darkfi/rust #random oh yes Nous Research. The group of absolute gigachads in my opinion. #random indeed #random yep, Im just waiting for AMD to kinda improve their GPUs a bit for AI and then tinygrad for models on an AMD GPU cluster is my norm. #random test #random test back #random https://github.com/chaoren/vim-wordmotion #random this is good #dev : arm0427.080417bb: does it work? #dev : i didn't change anything lol #random test #random test back #random philosoraptor: thanks for the plugin link. I wanted this consider the problem that the plugin states is happening to me as we speak xD #random i need both foo_bar to be 1 word and 2 words in vim, so not sure how to configure this rn #random no more keybindings left XD #random lol #random f_ and F_ #random that should treat it as 2 words instead of w-ing your way through it #random i do this too much #random well does it serve the purpose? #random i have to do f_f_f_, and it doesn't work on FooBarXyz #random ah well then just do w twice with the plugin? #random maybe i can do f_.. instead #random test #random test back #random yeah but i use cw to rename a variable foo_bar, but now it doesn't work so i disabled the plugin for now XD #random f_.. how does that work (I tried and it took me straight to oblivion, aka last character of the line) #random . repeat the last keymotion #random i use it a lot for unindenting blocks #random since when i use < it deselects the block #random i once configured vim to keep it selected until pressing esc but that's annoying #random (since most of the time you do a single unindent) #random huh, f_ would be a motion right? not working for me for some reason but I. works and sends me to the start of the line? #random ah true it doesnt work for me either #random I just use a visual block for that case if I want to unindent a block something #random shift+v is quicker #random future vim users https://www.youtube.com/watch?v=KlJ8eTuFe9U #random Visual block the indent tabs then delete the whole thing in one go #random lets say we unindent by 2 #random visual block: ctrl+v, jjjj4l4lx #random line block: shift+v, jjjj<. #random Ah I'm a disgrace and a disappointment when it comes to that... #random lmao don't say that XD #random Mouse -> click click for visual block -> drag the indent -> press d #random nooo haha #random i only use the mouse for web #random Haha but you'd be surprised how fast this is actually. Like effortlessly fast for atleast deleting stuff #random i use mouse for dwm sometimes #random also scroll in weechat #random I use it when I'm bored and start scrolling through the workspaces from the top bar. Cured my addiction of Instagram but then... Alas a new addiction took birth #random Forgot to add /s #random also the issue with f_ is that foo_bar will jump to foo[]_bar when i want foo_[]bar #random Ah fair yes #random f_a #random That should work #random Oh also, philosoraptor, did you get my dm? #dev !list #dev Topics: #dev 1. commit log format specifier (by philosoraptor) #dev gm #dev gm sir #random test #random test back #dev gm #random yo deki welcome back #dev gm #random ty #random "man is born free and everywhere he is in chains" #dev !topic darkirc migration #dev Added topic: darkirc migration (by brawndo) #random test #random test back #dev draoi: Is lilith supposed to be doing this? >>Whitelist is empty! Cannot start refinery process #dev basically means it does not have knowledge of any peers #dev it's valid behavior when the whitelist is empty, however ideally on a healthy network lilith should have a hostlist consisting of whitelist peers etc #dev it could just be bc the network is small rn #dev maybe a warning is too harsh here, should just be a debug msg #dev or info #dev !list #dev Topics: #dev 1. commit log format specifier (by philosoraptor) #dev 2. darkirc migration (by brawndo) #dev ok #dev : @draoi pushed 1 commit to master: af72f67309: lilith: change log level from warning to debug for empty whitelist #dev !list #dev Topics: #dev 1. commit log format specifier (by philosoraptor) #dev 2. darkirc migration (by brawndo) #random test #random test back #dev upgrayedd: my latest code changes for zkas/parser.rs https://pastebin.com/FgWtqREP (I've removed some code from parser_ast_witness so it's shorter to read) #dev make test no longer gives me syntax errors but I do get this: error: failed to run custom build command for `yeslogic-fontconfig-sys v3.2.0` #dev is that something added recently? #dev no, thats propably something to do with your rustv #dev also why is this not a PR? #dev we should "review" over pastebins #dev because I was getting compilation errors, so wanted to fix them first, wasn't sure if this yeslogic thing was part of that #dev can do one now on codeberg #dev deki: its fine to put code in a WIP draft PR I believe (atleast thats what I am doing, just follow the commit guide cause I wasn't doing that and upgra*yedd pointed that out) #dev ok ty #dev : @skoupidi pushed 1 commit to master: d9f1753381: contrib/localnet/darkfid-single-node: updated README.md with drk functionalities testing table #dev !topic drk #dev Added topic: drk (by upgrayedd) #random test #random test back #random had to reset my machine #random ditched ubuntu, now fully migrated to artilinux #random based #dev : @dasman pushed 1 commit to master: a822c89085: bin/deg: fix a bug in graph column that caused events in the same layer switch places leading to inaccurate graph #dev : @skoupidi pushed 1 commit to master: e956ee71f2: drk: bincode rpc retrieval fixed, transfer tx generation fixed #dev hey might suddenly drop out of the meet since waiting for an appt #dev hey terry #random test #random test back #dev gm! #dev ugh i realized that if we give the MessageDispatcher the ability to read from the stream directly, rather than going via packet, we need to implement a generic stream Reader on the dispatcher #dev basically adding everywhere like to all the parents etc #dev gets really messy #dev yo #dev gm #dev o/ #dev o/ #dev !list #dev Topics: #dev 1. commit log format specifier (by philosoraptor) #dev 2. darkirc migration (by brawndo) #dev 3. drk (by upgrayedd) #dev Hi #dev holla #dev hello #dev should we start? #dev hi #dev gm #dev draoi: just the methods not the struct #dev !start #dev Meeting started #dev Topics: #dev 1. commit log format specifier (by philosoraptor) #dev 2. darkirc migration (by brawndo) #dev 3. drk (by upgrayedd) #dev Current topic: commit log format specifier (by philosoraptor) #dev hmm tnx terry, will try that #dev for commit msgs, can we add a pre commit hook to enforce a certain format #dev then we gen changelog from commit log #dev component: message +bugfix +othertag #dev then next para is anything #dev this way we can filter noise from commit log, see which ones are important #dev I'd prefer if we follow the existing format we've carefully been using #dev Adding tags in the first line of the commit message is awful #dev ++ #dev You can do it in the next lines of the commit message, e.g. #dev sdk/crypto: foo bar #dev #dev Tags: bugfix, improvement #dev last line could be good #dev Follow the git standards of having such things in the commit messages #dev Key: Value #dev ok great #dev Where is this going to be documented? #dev So your hook could grep '^Tags: .*' #dev i'll put a file in proj root with the list of components allowed in the prefix. then it must match exactly #dev https://darkrenaissance.github.io/darkfi/dev/dev.html #dev ^ we'll add it here #dev ok next? #dev (thumbs up emoji) #dev !next #dev Elapsed time: 6.1 min #dev Current topic: darkirc migration (by brawndo) #dev Should we migrate to darkirc and deprecate this one this week? #dev I feel it's been quite stable #dev there is one persistent issue, which is the lag on stop #dev lag? #dev ACTION also been doing infra cleanup so we will have everything in place #dev my weechat rejoins several times on start #dev afk #dev ++ same #dev https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html#mainnet-tasks "Currently closing DarkIRC with ctrl-c stalls in p2p.stop(). This should be fixed." #dev yes i have the same issue wrt weechat rejoining #dev draoi: I haven't observed that in darkfid, so maybe check if handling is different? #dev yes someone should #dev i will #dev nice #dev I haven't been having any issues #dev Granted I'm running the node 24/7 #dev it does seem mostly stable #dev I experienced it couple of times, it's not persistent #dev But yeah all in all we should migrate #dev I'd be happy to try the migration, can always come back here. I don't have a daemon running all the time so would appreciate the chat replay feature #dev okay #dev aside: Is there an issue tracker? Tracking issues in an md book feels inefficient. #dev yeah same #dev Then will finish setting up nodes asap #dev paul: bin/taud #dev nice #dev terry: will check #dev https://darkrenaissance.github.io/darkfi/misc/tau.html #dev yeah i will do some node deployments as well #dev !next #dev Elapsed time: 9.6 min #dev Current topic: drk (by upgrayedd) #dev dont want to hijack topic but working on this https://codeberg.org/darkrenaissance/darkwallet #dev was fighting borrow checker last few days #dev thats a gui right? #dev : dasman added task (FQsM3c): handle darkirc tasks stop. assigned to dasman #dev yeah its for gui #dev well ain't it going to use drk as its "backend" ? #dev use as in import, right? #dev if drk is a library #dev well you can call it directly like a system call #dev but drk as a library is already suggested in a PR so it might make more sense #dev Yeah have the lib provide the necessary RPC handling #dev yeah its much easier if we could make a libified way to run programs like daemons as well #dev rather than i have to write win/mac/linux/android process management lib #dev and some way of setting/getting the settings so it can be configured in the menu #dev I'm against a do it all app... #dev anyway thats a future discussion, back to drk? #dev it could even just use localhost rpc, but its running the daemon #dev yeah sure #dev so just q quick update: darkfid is pretty much finished, so now I will focus on drk functionality, verifying everything is supposed to work, adding fees to txs, testing txs, etc. etc. #dev yay #dev but some stuff is missing so will need some "help" doing them, like dao calls, token mint stuff #dev Yeah terry could help you with the DAO impls #dev happy to chip in where needed #dev I can likely deal with token mint #dev check contrib/localnet/darkfid-single-node/README.md #dev im will be a bit slow tho #dev it has all the info needed #dev on what should be tested, and general status #dev !topic event graph tooling #dev Added topic: event graph tooling (by terry) #dev !topic philosophy meeting #dev Added topic: philosophy meeting (by ash) #dev next? #dev !next #dev Elapsed time: 12.5 min #dev Current topic: event graph tooling (by terry) #dev we mentioned migrating to darkirc and also about taud, just noting that we need tooling here to export the event graph, and be able to replay tasks. currently we have the UI explorer though which is already a big step #dev ok noted #dev !next #dev Elapsed time: 1.1 min #dev Current topic: philosophy meeting (by ash) #dev Hey! Just wanted to remember that: At 1st May 14:00 UTC (this wednesday) we will have a philosophy meeting where we will discuss a text related to free software. #dev terry: it's already added, it's an open task: tau SjJ2OA #dev ash: ok can we link the pdf? #dev ah ty dasman #dev Here is the link to the text: https://www.researchgate.net/publication/290120192_Free_software_philosophy_and_open_source #dev with taud, i had some issues with events not being consistent across instances. i didn't look into it with the debugger tho #dev is there a pdf or just the webpage? #dev There is a button in the platform to download the pdf #dev doesn't require log in or register #dev draoi: could you please send me logs #dev draoi: yeah exactly we need to be able to pinpoint and triangulate errors when they occur. whether they are net errors or event graph #dev ++ #dev ash: i tried doing it but it was asking me to register #dev i don't have the logs, it was from a while ago, however reka may have them #dev really? strange, a sec #dev oh it works for me now #dev (different device) #dev will contact them, ty #dev : @skoupidi pushed 1 commit to master: b97fc9ad83: contrib/localnet/darkfid-single-node/README.md: fixed table formatting #dev terry: Did you downloaded? #dev yep ty #dev excelent #dev good, see you this wednesday #dev <3! #dev !next #dev Elapsed time: 4.2 min #dev No further topics #dev i think researchgate limits your number of downloads, and i had on my laptop already reached the limit #dev !end #dev Elapsed time: 0.2 min #dev Meeting ended #dev ty all, cya next week #dev thanks everyone o/ #dev o/ #dev o/ #dev \o #dev o/ #dev |o/ #dev \o/ #dev Thanks, good meeting #dev ACTION back to janny ansible #dev ACTION does it for free #dev o/ #dev : @dasman pushed 1 commit to master: dec82c1639: doc/tau: update tau clie naming #dev ty janny, your service is noble #dev Huh, what's janny or who is janny? #dev Janitorial workers #dev It's when you have to deal with deploying infrastructure :D #dev Ohhh, got it #dev Thank you senor for your service. #dev lol #philosophy https://news.bitcoin.com/globalist-power-is-no-longer-a-moral-authority-amir-taaki-responds-to-samourai-charges/ #dev How do you brawndo isnt senoretta #dev brawndo, Thank you senorita for your service. #dev lol #dev terry here? #dev terry, I don't know that. I am lazy and was trying to write less xD #lunardao https://twitter.com/gitcoin/status/1784767421493977212 open shill space 1 hour after commnunity meeting #lunardao !list #lunardao No topics #lunardao !topic updates #lunardao Added topic: updates (by sadar) #memes philosoraptor: https://x.com/IroncladDev/status/1784956273739358258 #random question, what happens if someone uses the same private key from two different devices? #random I wonder, time to find out. #random it will create a time paradox #random booom worth it, still trying to build using the docker image, seems like apt can't find openjdk package mentioned so checking out what the correct name is #lunardao !topic darkfi nft #lunardao Added topic: darkfi nft (by sadar) #lunardao gm #random ofcourse, openjdk-21 exists, openjdk-17 exists but openjdk-19 does not XD #lunardao gm gm #lunardao gm drkbull #lunardao waiting on a few others to join #random brb: changing vpn connection so would get disconnected #random test #random test back #random back i am #lunardao ++ #lunardao some others having ircd connection issues #lunardao i can drop their updates here #lunardao !start #lunardao !list #lunardao 1. Updates #lunardao Ive got a few updates from some others who shared out of band #lunardao mine: #lunardao - partnered with web3privacynow for the privacy summit in prague on may 30th #lunardao - broke 1600 TW followers #lunardao - gitcoin grants 20 is live, we've had ~40 individuals donate, pushing this on socials #lunardao . #lunardao og: - infra migration due to the new spec #lunardao - communicating with devs to get the NFT escrow contract ready #lunardao . #lunardao hux: #lunardao - tw space confirmed for part 2 on Dark forest memetics 19-20 CET for this thursday #lunardao - Working on NFT mechanics #lunardao . #lunardao !next #lunardao meeting bot is down :( #lunardao 2. darkfi nft #lunardao as for an update here, we are working with the devs in the background get this setup, so original members that participated in the first round can also participate here #lunardao as well as allow new members to participate #lunardao happy to hear you're preparing the infra for the nft #lunardao hopefully will have this sorted out by this week #lunardao great, if there's anything darkfi can help with, just let me know #lunardao ++ #lunardao thats all for today #lunardao !end #lunardao for anyone watching along in the tg bridge channel, theres a gitcoin grants 20 twitter space in a half hour #lunardao https://twitter.com/gitcoin/status/1784767421493977212 #lunardao go shill lunardao #lunardao *spread the good word about LunarDAO #lunardao 🫡 #random is there a desktop environment people are bias towards here? any favorites? #random SIN, I know a wm for that which is dwm. DE? not so sure but I am biased towards kde #random oh lord `Sync: Could not find any DAG tips` again ;-; #random `[WARN] [P2P] Seed #1 connection failed: IO error: uncategorized error` #random well this is a different error huh #random : test #random test back #random well it works so thats a plus #random : test #random test back #random is it fine if there is a "sleeping and trying again..." thing going on in darkirc? #random : test #random test back #dev upgrayedd: i'm back blud #dev terry all good chill #dev ACTION sweating rushing to computer to serve m'lord #dev whew #dev wtf my isp's ipv6 just stopped working #random test #random test back #random : test #random test back #random : test #random test back #random : test #random test back #random : test #random test back #random : test #random test back #random : okay this works... weird #random : echo #random echo back #random : test #random test back #random : Okay yay it works. #random : test #random test back #random : testing hey there, can anyone hear me? #random : yo #random : airpods69: It works #random : yay, though it gives me DAG sync on my android, again... weird. I was thinking of testing out what happens on dm if two devices have the same private key. #random : The keys shouldn't matter, both clients would get the message #random : oh, fair, that does sounds like the behaviour I want. nice. #random loopr: I'm trying to dm you. #lunardao https://twitter.com/lunarpunksquad/status/1785030684198724052 #lunardao Join us for part 2 of our Dark Forest Memetics discussion this Thursday. The evening exploration of lunar culture is co-led by @jayapapaya #lunardao of @nymproject #lunardao and @lunar_mining #lunardao of @darkfisquad #lunardao Hosted by @huxian333 #lunardao 2nd May #lunardao 19:00 CEST / 17:00 UTC #lunardao https://twitter.com/i/spaces/1eaKbgORnrnGX #random : test #random test back #random test #random test back #random test #random test back #dev gm #random afk: rebooting #random test #random test back #random back #dev gm #dev o/ #dev brawndo, how's it going? #dev 06:43:13 [ERROR] [P2P] Broadcasting message to tcp+tls://acab.accesscam.org:26661 failed: Channel stopped #dev draoi: This happened on this same node and acab. is in external_addrs #dev terry: git clone and cargo run to see the error https://github.com/lunar-mining/unsafe_trait/blob/main/src/main.rs #dev lunar: The generic needs to be either in another trait, or defined on the trait itself #dev thanks brawndo, any other info around the error? if it was in debug mode would appreciate you share the logs #dev It wasn't in debug mode, I'll run so now #dev I do see it being filtered #dev yes so here you can see the changes required to make this compile: https://github.com/lunar-mining/unsafe_trait/commit/18d843a7ebb43ceaece6cabb48e16192d209ed87 #dev https://termbin.com/ai3v #dev Yeah like that #dev so practically for our purposes this means adding a generic reader R to the MessageDispatcherInterface trait, the MessageSubsystem struct and all its parents (Channel etc) #dev What do you want to achieve with it? #dev basically rn we have the reader inside message.rs, and we read from the stream, convert to a Packet, send it to the MessageDispatcher which decodes it to a Message and dispatches it #dev however terry was saying it would be better/ more efficient to just read from the stream to message directly, which means adding a reader R to MessageDispatcher #dev hm #dev Can perhaps `Packet` be modified in that manner? #dev ah make Packet a Reader, maybe that could work #dev No, make packet contain the struct you're expecting #dev I think that can be done with generics #dev Something like that, sry just woke up so not at full capacity :D #dev nw ty for input #dev If it can be done in Packet, then you'll still end up with two clean read/write functions #dev As opposed to passing the streams around everywhere #dev so i think the efficiency gain terry was talking about is to avoid this intemediary step of writing to packet, then changing to message, cos you have to allocate the intermediate resources required for packet #dev but i guess you're saying give Packet the ability to deserialize to Message directly #dev Yeah #dev I think `Packet` as-is would be gone #dev Then read_packet would return your Message #dev And write_packet would take your Message #dev Do experiment, I think it could work #dev With carefully placed generics #dev ++ #random test #random test back #random test #random test back #dev gm #dev ah ic #dev ACTION googles "for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically" #dev gm #dev so i have been experimenting with this, and if we implement it as follows: read_packet() becomes read_message() which reads a Message from a stream, and send it to the dispatcher in channel.main_receive_loop(), we need to add the generics R and M to Channel which is annoying #dev the other thing is perhaps we can move the dispatcher call into read_message() #dev terry: https://doc.rust-lang.org/reference/items/traits.html#object-safety #dev violates these rules basically #dev no i think the stream needs to be Box basically #dev https://agorism.dev/uploads/main.rs #dev because generic functions doesnt exist until it's called #dev but we're using vtable polymorphism, so the functions need to exist ahead of time #dev but because it's generic we don't know all the possible functions #dev ughh still trying to wget that code 3min later, my internet sucks lol #dev so dynamic (runtime) dispatch is the way to resolve this #dev ah ok i see it now #memes ah yeah lol #dev Is anyone connected to darkirc rn? #dev yes i just said sth #dev i see terry and airpods in there #dev Yep #dev Just the bot is off #random test #random test back #random https://www.youtube.com/watch?v=khV3XYWxYQA #random Does anybody have iPhone connected to darkirc ? if yes - what is the simplest setup ? #random if no - is anybody working (or is interested) on the matter ? #random https://www.youtube.com/watch?v=eoruEi7ThVc #random iphone ? #random Sacreligious #random : test #random : test #random : huh echo? #random : echo #random : weird #random test back #random : test #random test back #dev : gm #dev : Anyone here? #dev : test #dev : test #dev : test #dev : Anyone here? #random : test #dev : echo #dev : yes #dev : test #random : seems the bots are down? #dev test back #dev : yoo #dev test back #dev : hey #dev test back #random test back #dev : ohai #dev echo back #dev : i see u guys #dev : Just the bot is down then #dev : i'm gna be deploying some more nodes today/2m #random : Does anybody have iPhone connected to darkirc ? if yes - what is the simplest setup ? #random : if no - is anybody working (or is interested) on the matter ? #dev : Echo #dev Echo back #dev Bots were down #dev Fun trick you can change your nick to 'testbot' you'll enter stealth mode, mirror bot won't detect you #random : :D #dev : :D #random : arm0427.080417bb: not on iphone but i'm running darkirc on a linux machine and just ssh'ing into it #random I use relay and let weechat run on my laptop. #random Relay to connect to weechat. (Weechat Android is the Android app) #dev dasman: nice <3 #random test #random test back #dev dasman: wait so the bots could be very well be down and someone is replying to us to create an illusion, eh? XD #dev airpods69: the cost of changing nicks at will :D #dev airpods69: hahaha we dont get pinged this way though #random test #random test back #random Still connected #random Nice #memes https://i.4cdn.org/his/1714324516277170.jpg #random test #random test back #random test #random test back #dev `[u8 ; 32]` would look like `[0 ; 32]`, right? then how would the coordinate look like when put into zk file? philoso mentioned that it would be like 0x000... so now I am confused cause `[u8 ; 32]` is what `vm.rs` likes. #random test #random test back #random test #random test back #random test #random test back #dev EcFixedPoint MY_CONSTANT = (0x000.....1, 0x000.....2), #dev Then you'd decode the hex into bytes #random Test #random Test back #dev gm #dev thanks brawndo, getting back to it. #dev somehow I forgot it was a hex while knowing it was a hex. Weird lol #random https://yewtu.be/watch?v=bYF2kOjxqKA #dev : gm #dev : gm #dev gm, happy may day #dev :D #dev https://en.wikipedia.org/wiki/Beltane #dev draoi: ohhh, makes more sense now, Thanks. Over here, we celebrate the arrival of spring. #dev Got really confused since its "Labour day" today over here and I was like "? damn is it the same reason for a happy may day" #random https://www.justice.gov/opa/pr/early-bitcoin-investor-charged-tax-fraud #dev rust adding a new return Err(Error::...) syntax: https://github.com/rust-lang/rust/issues/96373#issuecomment-1328631967 #random roger ver wtf #random test #random test back #random test #random test back #dev ZkBinary with hex values after check looks like this, which is what we want right?? Those are randomly generated hexvalues, please dont look too much into it: https://imgur.com/a/vxrnSyZ #dev "0x00...0".[2..] is put into the binary and vm.rs can convert it into [u8 ; 32] bytes which seems right? #random test #random test back #random brb (offline, won't recieve any texts) #dev : i cant connect to ircd anymore #dev : lilith seeds are down #philosophy : greets #philosophy o/ #dev : terry: somewhere in the logs, I think brawn-do gave peers to connect to. #dev : Lemme fetch it for ya (not on Linux so can't fetch it) #dev : Added this to peers and it worked for me "tls://acab.accesscam.org:25561" #random : Test #random Test back #philosophy o/ #dev : ty #philosophy hey don't we have a philosophy meeting now? #philosophy ash #dev i'm back in #dev greetz #philosophy hi #philosophy probably people having trouble getting online #philosophy ah i just saw it's 14:00 UTC #philosophy put this in your ircd_config.toml #philosophy peers=["tls://acab.accesscam.org:25561"] #philosophy i thought that was now, but just googled and it's in one hour #random test #random test back #philosophy ah #dev yay made it back in #dev : Welcome back both of ya #dev I was uninstalling my VM, re-downloading everything, it was a journey #dev : For some reason, darkirc doesn't recieve messages but sends it if I'm running it on my android #dev : Bwahaha glad you got help #dev : that shouldn't happen #dev : yeah ty janny #dev : draoi, Magic, it happens xd #dev airpods69, that was happening to me last time I tried darkirc. I think there's a reason for it but forgot why #dev : Im reading the telegram logs to reply lol #dev : logs also here https://agorism.dev/log/ #dev : Title: Index of /log/ #dev : Ah fair, I'll check it out later deki. I was afk and just opened to help out and phone was the fastest way. Afk again (won't receive dms) #dev : Still not receiving dms on ircd but that's a different story lol (ircd isnt running xD) #dev yeah I nuked my original ircd on here so if you try to send me a dm airpods69 I won't get it #dev upgrayedd: I made a PR for the todo in parser.rs, someone already gave me feedback but tagging you in case you have your own input: https://codeberg.org/darkrenaissance/darkfi/pulls/254 #dev deki: input looks good, follow it. #dev ++ #philosophy ash: unsure if I'll make it on time for the meeting, I need to leave soon because my battery is low and the public transport where I'm at is infrequent coz of this public holiday #random : `ssh terminal.shop` # US delivery only #random test #random test back #random test #random test back #philosophy Gm! #philosophy o/ #philosophy draoi: How are you? #philosophy Let's wait until others join #philosophy hi #philosophy hey! #philosophy good tnx, you? #philosophy I'm fine too, excited to start the dialogue #philosophy nice #philosophy 3-5 min I think should be fine and start #philosophy I'll go for a coffe #philosophy ok #philosophy maybe not so many ppl will show since it's a holiday #philosophy It is true #philosophy and sad that they can't join, but on the other hand we can speak more freely and go deeper, at first I was thinking about talking in turns, but now is not necessary #philosophy deki: no worries #philosophy Let's start? #philosophy sure #philosophy yep #philosophy what's the format? #philosophy nice, what did you think about the text, key conclusions and key questions? #philosophy i think stallman made a mistake with the free software movement, he didn't have a strong economic model #philosophy which allowed opensource capture to happen #philosophy the text was cool, nice to see a schematic analysis of FS vs OS positions #philosophy he wasn't able to adjust strategically at the key moment when it started taking off #philosophy also i disagree with his proposed biz model, it doesn't really work. you end up with dual tiered software (free vs paid versions), and it doesn't fund base infra like libs (see heartbleed, and other core code) #philosophy for context, we are discussing: https://www.researchgate.net/publication/290120192_Free_software_philosophy_and_open_source #philosophy maybe history/hindsight is 20/20, but we've seen that billion dollar corpos are willing to rip off devs work and not pay a single penny #philosophy https://imgb.ifunny.co/images/de19728f871918951ca016d6e2b47ec69d6e1882cfd6453c1cbd43a2b97f6857_1.jpg #philosophy crypto seems to be a good solution to the FS economic problem #philosophy this part of the text stood out to me: #philosophy According to Eric S. Raymond, “Every good work of software starts by scratching a developer’s personal itch” (Raymond, 1999). This is in clear contrast with the intentional, systematic, and collective effort described by Stallman: “essential pieces of GNU software were #philosophy developed in order to have a complete free operating system. They come from a vision and a plan, not from impulse" #philosophy comes from https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar#Lessons_for_creating_good_open_source_software #philosophy i liked the contrast in this sentence between the two positions #philosophy philosoraptor: That's a fair point, but before jumping into the critque I would like to rescue its arguments #philosophy It would be valuable* #philosophy OS tries to deny politics, but in doing so also advocates a very particular set of politics #philosophy but it's a politics based on the denial of politics #philosophy That's right! #philosophy we also see the same kind of attitude in crypto #philosophy What stallman is concerned is that software doesn't avoid sharing, forming a community and be cooperative #philosophy our liberty to form a community #philosophy yes i like the free software emphasis on positive liberties #philosophy sharing and have communities is an inalienable right for him #philosophy draoi: Can you elaborate more about how OS avoids politics? #philosophy Linus Torvalds: “I can’t totally avoid all political issues, but I try my best to minimize them. When I do make a statement, I try to be fairly neutral. Again, that comes from me caring a lot more about the technology than about the politics, and that usually means that my opinions are colored mostly by what I think is the right thing to do technically rather than for some nebulous good” #philosophy it's almost like history is cyclic, and crypto is repeating the same discussions/arguments that happened 3 decades ago in free software #philosophy philosoraptor: true af #philosophy so the quote from Linus above is a kind of retreat into a notion of technical goodness instead of making actual ethical judgements #philosophy it's a symptom of a society where spirituality and morality has been eroded and people become more like machines, or want to be more like machines #philosophy yeah they said the same in btc about blocksize issue #random test #random test back #philosophy that users are too dumb to make the choice, that it's a technical decision #philosophy but reality is that it was not a technical decision #philosophy ++ #philosophy would've been better if they were honest, and instead tried to argue their position on its own merits rather than trying to manipulate users this way #philosophy there's also a tendendency for ppl to talk about blockchain as something eternal and immutable, an absolute etc. even DAOs were originally portrayed in this way, as autonomous machinic intelligences beyond good and evil #philosophy I'm wondering if this apolitical attitudes is being embeded/enforced into the principles of OS, or it is just part of its discourse.(?) #philosophy its metaphysical with opensource #philosophy interesting how opensource and free software are practically the same idea #philosophy but the ideals/memes make the world of difference #philosophy ++ #philosophy on being beyond good and evil, i wanted to share this quote from nietzsche, from will to power where he argues for a re-valuation of all values and basically destroys "morality" which is the dominate notion of good via christianity #philosophy "Have I harmed virtue? . . . As little as anarchists harm princes: it is only after these latter have been shot at that they again sit securely on their thrones . . . For thus it ever was and ever shall be: one cannot better serve a thing than by giving chase and setting the dogs on it . . . This I have done." #philosophy so he goes to war with virtue to better serve it #philosophy i think that's really important and a complete departure from OS and tech morality which is basically a denial of virtue #philosophy i'm just saying i don't think OS is beyond good and evil in a nietzschean sense #philosophy i think it's basically morally and spiritually deficit #philosophy i have another question, did OS "win"? how do we measure the success or failure of OS vs FS? and to what extend did being morally ambiguous (a better fit for the times?) help OS in this "victory"? #philosophy i mean it's kinda a weird question if it won #philosophy hence scare quotes #philosophy it is a corrupted form of free software that got captured #philosophy free software/linux failed to deliver #philosophy altho we're seeing change more recently happening #philosophy I'm trying to understand nietzsche quote #philosophy philosoraptor: can you explain more how FS failed, what it should have done different, and what things would look like if it had? #philosophy there's a myth in technology that it follows a single trajectory, an unstoppable path/ evolutionary process #philosophy but actually when you study history of technology there are many mistakes and contingencies #philosophy still, it's hard to imagine a world w/o OS fueling mass surveillance campaigns and war machines #philosophy Nietzsche says that by fighting the king(morality) one renforces it again, meaning, fighting the negative. Ergo, stand and start with a possitive will first? #philosophy if I got it right? draoi: #philosophy well for nietzsche, all will is will to power- he argues that christian morality condemns life, and wants to create a new pagan morality that celebrates life in all its nuance #philosophy with this quote, i was mostly pointing out that he says "one cannot better serve a thing than by giving chase and setting the dogs on it", i.e. by attacking something you strengthen it, this is what he wants to do for "virtue" #philosophy Got it #philosophy so i was just making the point that being beyond good and evil in a nietzschean sense does not mean being a-moral (like OS/ engineering mindset promotes) #philosophy Regarding the other question I think that Stallman was way advanced in the future #philosophy So personally I wouldn't say that the movement is lost #philosophy right, it actually seems to be gaining momentum rn, with the growth of linux and systemd backlash #philosophy draoi: Exactly, being apolitical is a political point of view #philosophy i think the apolitical thing is also maybe a strategy for ppl to deflect responsibility for what they build #philosophy linux didn't become a huge desktop that everyone uses, it was niche #dev : @skoupidi pushed 1 commit to master: cd4655bb62: src/contract/money: delayed_tx test added #philosophy draoi: correct #philosophy philosoraptor: Yes, well, there is the network effect that microsoft has over the market, that it is. They install windows over all commercial computers. #philosophy oh yeah linux rly lost the phone market as well #philosophy that's a big loss #philosophy imagine we all had linux phones #philosophy that would be amazing #philosophy i think i remember stallman saying something similar #philosophy he also seemed open to the idea of funding free software projects w crypto #philosophy Again, probably crypto is what the software libre needed, Stallman was away ahead of its time I'm afraid. #philosophy ++ #philosophy it's amazing how he forsaw surveillance capitalism #philosophy Going further, Stallman attacks that is core to captialism, property rights. #philosophy well as the article mentions he believes software should be free but doesn't make statements as to other forms of goods #philosophy It is, maybe I can reformulate, society will be more suited to free software, if there is cultural discourse against property #philosophy Since property rights is embeded into the society is difficult to jump into free software #philosophy That hasn't happened yet #philosophy perhaps, but also perhaps digital things are less inherently scarce than physical goods, and so less liable to conflict #philosophy It is, for sure, intelectual property is not scarce, but still the mentality of privatizating everything is present #philosophy To take benefits #philosophy And making benefits at all cost is like the ethics of capitalism #philosophy yes ppl want to monetize/ capture the value of contributions even when non-scarce, like intellectual etc #philosophy however i think this is possibly breaking down due to the internet #philosophy post-authorship etc #philosophy But Stallman says just because something is harder to do (monetize music, books, etc...), that doesn't imply that you are justly allowed to do that #philosophy wdym? not following 2nd half of sentence #philosophy And that people doesn't understand, that liberty is first and sacred #philosophy Ah sorry #philosophy Virtual or intelectual property is easy to copy #philosophy If it is easy to copy, is therefore hard to monetize #philosophy what about crypto? #philosophy you can program economies/ markets and create incentive systems #philosophy But just because some ways of producing goods are hard to monetize, does that means that we are entitled to restrict freedom and cooperation? #philosophy ah gotcha gotcha #philosophy right the stallman perspective is- you should not sacrifice freedom for your business model #philosophy and OS basically says- actually it's fine to sacrifice freedom but the source should be open cos it's more secure #philosophy That's the question of Stallman. Sadly producing art or literature is hard to monetize, but that doesn't mean that we can scarifice the individual freedom to share #philosophy draoi: agree! #philosophy i have a couple of suggestions for the next meeting #philosophy Sure! #philosophy i'll let you guys decide which one #philosophy 1. Democratic Theory and Self-Transformation https://www.jstor.org/stable/1964012 #philosophy this came to mind since we were discussing different kinds of goods (scarce, non scarce etc). it's a really interesting analysis of different forms of democracy, liberal vs transformative democracy #philosophy 2. Do artifacts have politics? https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #philosophy this is a classic philosophy of technology essay that examines the interaction between politics and technology #philosophy I'll love to explore the second #philosophy nice #philosophy let's do that then #philosophy also I think that is related of today talk #philosophy ++ #philosophy want to continue same time, May 16th? (in 2 weeks) #philosophy Sure! #philosophy nice, thanks for setting this up #philosophy hopefully some more ppl come next time :) #philosophy It has been a pleasure #philosophy Sure #philosophy happy to continue to discuss async, gtg afk for a bit now #philosophy thanks a lot, see you #philosophy It would be good to thin about how to conduct the dialogue #philosophy think* #philosophy ++ #philosophy Probably we should use the topic tool for turns, or type "." when finish talking #philosophy Otherwise, can get messy #philosophy but hey nice talk #philosophy hey #philosophy nice talk #philosophy <3 #philosophy ty #philosophy did i miss the reading group discussion? looks like i did :( #random test #random test back #random alrighty, I am back #philosophy checking out the logs #philosophy so we would be talking about the second topic next time? I'll be present as well. #random philosoraptor, there? #random : ah damn it, would have been nice if it was in Asia too #random : terminal.shop I mean, just to try it out #random test #random test back #random hey airpods69 #random : nothing can stop you to make one ;) #random : it just hangs for me #random : ok works now #random : looks amazing #random : arm0427.080417bb: well nothing is stopping me from walking into a store and buying coffee honestly either XD #random : it is for coffee right? #random : yep it is #random philosoraptor, did you get my dm? #random brb #random b #random test #random test back #random test #random test back #random : how do i access the shop? it wants an email addr #random : ah i put a fake one #random : oh you cannot do anything ok #random : test #random test back #random : test #random : test #random test back #random : welp, doesn't work again #random test back #random : test #random : test #random : test #random : one can, I believe, only order coffee from there which is also sold out xD #random : test #random test back #random : god damn wow, im sorry. Did not mean to spam. I wasn't connecting earlier and it decided to drop everything at once. #random test #random test back #random yo deki welcome back #random heyo #random hows it going #random not bad thanks, was having connection issues before but ok now, you? #random Pretty good over here as always :D #random oh btw, mind sharing your public key again? I gotta restart ircd so I can change it now #random sure just a sec #random sure thing #random [contact."deki"] contact_pubkey = "FgKsUj8ujHfhAvhdYH9jfEPMrMQ2nwKsqkP9Q8Jhhh6Q" #random what was yours? #random btw I'll get you to change this when I get back to my original pubkey #random oh wait, your public key changed again? #random yeah because I nuked my ircd when I couldn't connect, thought it was an issue on my end coz of the VM #random so the one I gave you recently isn't valid anymore #random ohh fair yeah #random one second, looking for mine #random what i meant by "I'll get you to change this when I get back to my original pubkey" is that I already have this all setup on my PC at home, so I'd rather stick with that one #random Yep got it #random [contact."airpods69"] contact_pubkey = "CoHPDJS6NzjLJKHq2dp3SPi4gKuPppmFGhwHVdmGsdT1" #random brb: rebooting ircd. #random test #random test back #random deki, lemme know once you add it #random test #random test back #random added you and sent msg #random just got it :D #random :> #random afk: won't recieve texts #random gotta say, nothing radicalises me more than stuff like this https://x.com/RealRossU/status/1785367506821292542 #random my heart always sinks when he posts something #random test #random test back #random back #random test #random test back #random test #random test back #random test #random test back #random test #random test back #dev gm #random philosoraptor, lemme know whenever you are available. #random test #random test back #random test #random test back #dev test #dev test back #dev gm #dev deki: how's it going :D #dev going alright thanks, up and early with my coffee :> wbu? #dev pretty good here too, had my coffee a while ago, time for breakfast and then coffee again xd #dev haha nice #math came across this site that teaches cryptography principles https://cryptohack.org/ unsure how good it is but it seems well established #math or how relevant it is to what you guys do here, but they have a course on elliptic curves: https://cryptohack.org/courses/elliptic/course_details/ #math thanks deki, gonna check it out #math np #dev hey #dev hello #dev yolo #dev : gm #dev : gm draoi #dev so are you guys going to 'sunset' ircd? And shift permanently to darkirc? #philosophy : “In Nuclear War: A Scenario, Annie Jacobsen gives us a vivid picture of what could happen if our nuclear guardians fail…Terrifying.”—Wall Street Journal #philosophy : someone's watching too much fallout #random test #random test back #philosophy : https://en.wikipedia.org/wiki/Nuclear_War:_A_Scenario haha it's gna be a movie apparently #philosophy : Title: Nuclear War: A Scenario - Wikipedia #philosophy : directed by the dune/ blade runner 2 guy #dev deki: we discussed this on monday meeting #dev we are going to migrate over, so are starting node deployments, but are still polishing and testing some darkirc stuff #dev yeah I remember reading it, wasn't sure if a final decision was made, thanks for update #random vim word motion things https://agorism.dev/uploads/vim.txt #random add to your cfg #random phiosoraptor: sweet #dev are constants a new feature in Rust? Reviewing the Rust book and they have a Constants section in ch 3.1, don't remember seeing it there when I originally read it #dev I'll be afk for a bit, going back to my friend's place coz my battery is low #random test #random test back #random back #random test #random test back #random test #random test back #random b #math test #math test back #random test #random test back #random test #random test back #dev : @skoupidi pushed 1 commit to master: 07606d27e4: drk: added fee call to transfer #lunardao https://twitter.com/lunarpunksquad/status/1785030684198724052 #lunardao Twitter space is today on dark forest memetics at 17:00 UTC/19:00 CEST #random https://twitter.com/lunarpunksquad/status/1785030684198724052 #random Twitter space is today on dark forest memetics at 17:00 UTC/19:00 CEST #random test #random test back #dev draoi: is it normal for the p2p test to be stuck in discovery sleep and retry? #dev not all the time, some times it does #random test #random test back #dev : @skoupidi pushed 1 commit to master: 73a159ef83: contract/money: properly integrate txs fees into block rewards #dev not sure what you mean, probably not #dev can you send logs? #dev or any more info #dev /nick nighteous #dev oops #dev alright better #random TW space rescheduled to tomorrow (same time 17:00 UTC) #random Dark Forest Memetics #random https://twitter.com/i/spaces/1DXxyjadlVnKM #lunardao <0xhiro> test #lunardao <0xhiro> nice im back :) #dev gm #dev gm nighteous #dev how's it going deki? #dev I'm going okay thanks, sitting in a cafe sipping my coffee :> wbu? #dev trying to finish off a Rust task too :3 #dev eating breakfast and waiting for the milk to get delivered. Gonna have more coffee. #dev ohh nice, what are you working on? #dev sweet. It's a TODO task to change an implementation in one of the files, also an opportunity to learn more about the language coz I'm kinda new to it #dev unsure if you're familiar with Rust or the project, but you can see what I'm doing here https://codeberg.org/darkrenaissance/darkfi/pulls/254 #dev checking it out. apologies, had to do some chores #dev np #dev oh boi... either you or me would be facing a conflict cause of the PR (either #253 or #254) XD #dev ah nooo lol #dev oh man this will affect what I'm working on lol that's okay #dev idk I'll get mine to a working state and leave it to the devs to decide #dev its fine. whoever gets it done and merged first, the other one can just change accordingly. Shouldn't be a big deal. Just some token stuff to be changed here and there no problemo. #dev sweet, so it's a race (kidding...maybe) #dev ahaha, a few cups of coffee is all i need then XD #dev hehe :> #dev though I still need to plan out the vm.rs part of things. Shouldn't be that much but lets see what I can come up with. #dev go for it #dev shall do senor :D #dev afk #dev gm #dev gm #dev upgrayedd: i think we should put a fee field in money::transfer(). then it's only allowed to be nonzero if the token_commit = hash(DRK, 0) (which can be checked in wasm) #dev that solves the issue #philosophy : gm sirs #dev : @draoi pushed 2 commits to p2p_hardening: 98c8d276aa: net: fix message deserialization #dev : @draoi pushed 2 commits to p2p_hardening: aaceccd494: net: write Message directly to the stream and fix read... #philosophy gm #dev gm #dev do you guys think it's worth knowing WebAssembly integration? there's an online book that isn't long: https://rustwasm.github.io/docs/book/ #dev gm #dev Not really, that's more for web dev #dev ah right, I shall ignore it completely then #dev although my first ever language was HTML, if you think it's a programming language that is >.> #dev draoi: We're still checking the p2p protocol version upon connecting, right? #dev I mean the app version exchange #dev yes #dev we do a version handshake #dev okay #dev I'm thinking of changing the darkirc version to 0.5.0 if that's fine with everyone #dev Would mean ppl have to recompile #dev makes sense #dev : @parazyd pushed 1 commit to master: 53834bbd9b: darkirc: Bump version to 0.5.0 #dev ok there's a lilith and a node running #dev If anyone wants to try #dev recompiling now #dev Try using only "tcp+tls://lilith1.dark.fi:5262" as a seed #dev A node is running on tcp+tls://irc1.dark.fi:26661 #dev And also recompiled one on "tcp+tls://acab.accesscam.org:26661" #dev ok sure #dev i just ran it with my existing hostlist and weirdly got this: [DEBUG] (3) net::protocol_version::send_version(): App version: 0.4.1, Recv version: 0.4.1 #dev which is unexpected, also seemed to connect to older nodes fine #dev ./darkirc -h says 0.5.0 ? #dev oh wait 0.4.1? #dev That's the lib version #dev I suppose net/settings:87 doesn't work as intended #dev darkirc is reporting 0.5.0 #dev so yes i guess we found a bug :D #dev It used to be 0.4.2 even #dev (See my commit diff) #dev So there's a problem indeed if you're seeing 0.4.1 #dev yeah so i guess settings:87 is reading the root Cargo.toml #dev Right #dev : @parazyd pushed 1 commit to master: 4dda409e50: darkirc: Use binary crate version in p2p app_version #dev Let's see if this works #dev I think it's somehow not enforced? #dev net::protocol_version::send_version(): App version: 0.5.0, Recv version: 0.5.0 #dev : helo #dev : helo #dev so the code you pushed works but as you say it doesn't seem to be refusing connections from non-compatiable versions #dev : hey #dev 08:14:53 [DEBUG] (3) net::protocol_version::send_version(): App version: 0.5.0, Recv version: 0.4.1 #dev : Hey I c u #dev mad #dev : hey, i didn't update my config with the newer nodes tho lol #dev : we do this check tho in the version handshake: if self.settings.app_version.major != verack_msg.app_version.major && self.settings.app_version.minor != verack_msg.app_version.minor {... refuse connection } #dev Yeah that'd check the 0.5 #dev hmmm #dev oh but the logic is wrong lol #dev It uses AND #dev ahhh should be OR right #dev kek #dev : @parazyd pushed 1 commit to master: 41e87e3aee: net/protocol: Fix version exchange #dev <3 #dev yay #dev So it always passed because major was always 0 #dev fml that CTRL-C lag is so annoying #dev oh lol #dev Yeah I wonder what keeps it stuck #dev It doesn't always happen #dev ok I'm migrating mine to 0.5 proper now #dev same #dev tho i gotta run in <5m #dev *nod* #dev [ERROR] net::protocol_version::exchange_versions(): send_version() failed: Channel stopped #dev nice #dev (on old hostlist) #dev gr8 #dev Starting mine in a sec #dev woosh so many rejections :D #dev Interesting the nodes keep trying #dev we can modify that #dev ok i see you on darkirc #dev but it seems the bots are on the other version #dev Yeah now we're in a different network than them #dev ++ #dev gtg afk for a bit #dev When dasman is around I'll ping to update #dev cya #dev o/ #random test #random test back #random o/ #random ello brawndo, hows it going? #philosophy gm gentlemen #dev hey can i move the ui work under darkfi/bin/, rn it's in a separate repo #random test #random test back #dev https://codeberg.org/darkrenaissance/darkwallet #random welcome back deki #random ty ty #dev or do we prefer to keep it separate (for now) #dev Sure, why not #random Setting up infra #random You can try to pull the latest repo commits and recompile darkirc #random Use the seed from the latest default config file #random tnx #dev are there TODO tasks for the wallet? Always wanted to contribute to developing a wallet #dev not yet, i'm in the move fast and break things phase #dev btw does it matter which rust version we use when running make test/check/clippy etc? I'm on rustc 1.80.0-nightly #dev philosoraptor: only way to go #dev I"m getting this error for make check, do I need to do a cargo clean or something? #dev It shouldn't matter as long as it's rust nightly #dev https://pastebin.com/ZrQxscZ8 #dev brawndo: thanks #dev Yeah maybe you want to run `make distclean` #dev ah ty, will try that soon, brb #dev philosoraptor: what issue that check solves? we already check fees are non zero etc #random test #random test back #dev b #random test #random test back #philosophy this was awesome https://x.com/lunar_mining/status/1786296169418707180 nice writeup whoever this was #dev o/ #random test #random test back #philosophy thanks, it's not just charlotte fang, but there's a common pattern of using thermodynamics to make narratives more convincing #philosophy i just hate when it's used to make cucked arguments like "oh we can't do anything cos thermodynamics" #philosophy here's another example: https://flugschriften.com/wp-content/uploads/2020/07/flugschriften-6-bogna-konior-the-dark-forest-theory-of-the-internet-v.2.pdf #philosophy yeah I've noticed a lot of analogies lately to thermodynamics, very interesting to read always plus as you said it's often used in the negative #philosophy ty #philosophy making science analogies in philosophy is good etc but ages badly when it becomes dogma #philosophy bogna's essay is peak digital serfdom cope #philosophy (as are some of charlotte's takes too :P) #philosophy indeed, good point, I haven't read this essay will check it out now #philosophy yet another example: https://beff.substack.com/p/notes-on-eacc-principles-and-tenets #philosophy ah yeah I follow this guy #philosophy it comes from nick land imo the thermodynamics metaphor/ aesthetic/ model #philosophy ic #dev I'm still getting this 'invalid metadata files for crate derive_builder' error when running make test/clippy for my PR, no other errors come up https://pastebin.com/ZrQxscZ8 #dev I tried make distclean, anything else I can try? #dev clean your cargo cache, this is probably due to version missmatches in pulled crates #dev have found other people with the same type of error on google but nobody has indicated whether they resolved it #dev okay tnx #dev also, always include what you run and the full execution log, not just the file #dev okay will do #dev s,file,error #dev brawndo: will update rn #dev draoi: the lag happens in p2p.stop(), not always, but when happens it's between 10 to 15 seconds #dev Hey dasman #dev ok thanks #dev Use "tcp+tls://lilith1.dark.fi:5262" for the seed #dev We should make sure it works #dev ++ #dev after running make test it's telling me it can't find a crate for 'tor_rtcompat' log file here: https://pastebin.com/2kTJ2NQm but it does exist in Cargo.toml except by this name: tor-rtcompat #dev it's being used here: src/channel/handshake.rs:15:5 should I change it in the code? Or leave it? #dev deki: no don't touch the code #dev did you clean up the cargo cache? #dev upgrayedd: yes I ran cargo clean, and make distclean #dev can try agai #dev Maybe the crates should be updated #dev yeah I found a command 'cargo update -p tor-rtcompat' keep in mind tor_rtcompat wouldn't work #dev thats cleaning the local stuff #dev not your global ones #dev oh I see, how do I do that? #dev cargo update modifies the locked version #dev hence the missmatch #dev : Test #dev Test back #dev you are probably not using the repo Cargo.lock, or rather you modified it #dev : werks #dev hmm I see #dev : @zero pushed 1 commit to master: a1f891d45a: added darkwallet in bin/. See README for usage instructions #dev upgrayedd: then you can pay for fees like you wanted #dev within the same money::transfer() call #dev this way, it's always possible. we could add it to otcswap too #dev philosoraptor: revert commit #dev you have local paths commited #dev oh #dev fixed, i did a hard push ty #dev : @zero pushed 1 commit to master: c78a469c83: added darkwallet in bin/. See README for usage instructions #dev :D #dev should i use path = "../../" instead of git = "coderberg darkfi" ? #dev philosoraptor: what do you mean pay for fees like I wanted? #dev actually that seems better #dev yes re path, since its in the repo you can use the relevant/direct one #dev : Hi #dev : echo #dev : hey #dev echo back #dev : Nice #dev upgrayedd: so you know we want to within the same tx make a transfer and pay a fee, it's possible if money::transfer() has a fee field #dev i don't see those darkirc messages, i see completely different ones in #dev #dev philosoraptor: You should read the backlog here #dev https://agorism.dev/uploads/whatisee.txt #dev ah ok #dev tldr; update to latest darkirc and use "tcp+tls://lilith1.dark.fi:5262" as seed #dev philosoraptor: how would the fee field help? #dev ++ #dev upgrayedd: because a call can pay its own fee #dev unless you complicating it in the sense allowing both a fee and/or transfer to act as fee calls #dev yes #dev hmm brawndo what you think? #dev The current system doesn't work because of the Merkle tree changes #dev : @zero pushed 1 commit to master: 927c0724a8: wallet: Cargo.toml make darkfi-serial use ../../ instead of git url #dev Since the output you'd be spending for the fee isn't valid #dev Or rather, isn't using a valid Merkle root #dev yeah exactly #dev the problem tho is still for chaining calls that consume previous output #dev adding the fee field in transfer only complecates fee hanlding, and just solves the single coin in a wallet issue #dev what's the usecase? #dev not the core problem #dev the call chaining works for the dao and protocol owned liquidity .etc #dev example chainning that doesn't work: I want to make 2 transfer calls in the same tx, in which the output for the first is the input of the second call #dev so for example flash loans? #dev yeah or multi transfer calls in general #dev when you simulate/validate the tx its valid #dev since the root of second call is: current_tree.append(call[0]).root() which is a valid historic root for the run #dev but if any other tx mutates the tree before your tx is included in a block, the root is not valid anymore #dev btw have you tested the dao tx in real scenario? #dev aka blocks mutating the merkle tree, before the tx is included in a block? #dev (like the test pushed yesterday showcasing this) #dev i think we could achieve this by modifying money::transfer() #dev to for example have a special input/output #dev yeah but again, that just solves the single coin issue, not chainning #dev i think the dao works since it doesn't depend on this behaviour, and the tests all applying everything atomically #dev contracts should be designed with this in mind #dev atomicity is not in the context per se #dev more like linear execution #dev if you only test the linear execution in mind, then they are always "valid" #dev Well you can never create an output and use it within the same tx #dev It only works if no txs happen in the meantime #dev well yeah, but we have to state that "drawback" of the system #dev We should fix it #dev how? thats what we discussing :D #dev if your contract can use a value within the same tx, then if it's not in the tree, then check if it's in that tx #dev so for example the tx could have a second merkle tree and you check that inside zk #dev so it's either in the main merkle tree or within the same tx #dev proof would be invalid tho #dev since it used the old root #dev no it's valid since it's just a merkle root during that tx #dev merkle root of what? #dev the coins of the previous calls #dev The existing coins tree #dev that root might/will never be a valid historic root #dev It doesn't have to be #dev it's the root within the current tx #dev philosoraptor's correct #dev not within the entire coins set #dev That's a good idea #dev aha ok gotcha, so like just a mini sub tree #dev It's a clone whose lifetime is 1 tx #dev yeah but and that tree gonna be having just the tx calls? how would then the chainned call output be valid, since the used root is not part of the main tree? #dev you have to do 2 membership proofs within zk, and one of them must be valid #dev aha one for the main tree, if it passes all good, if not, check second, which is just the tx calls tree? #dev Wait well that still requires a full sync I think #dev yep, up until that current call #dev e.g. #dev You create that tx and submit it, but another tx enters a block before yours does #dev Then you wouldn't have a valid inclusion proof because the position would be different #dev yeap exactly! #dev your root will be before their tx entered the block #dev Which in turn would produce a different root #dev the root is just for that tx #dev it doesnt include any coins outside the tx #dev philosoraptor: thats true only for the first call root #dev that one passes no problem, since the root it used is a historic one #dev the issue is for any other next call, since it used that history_tree.append(call[0]).root() which is not a valid root #dev as the other tx mutated the tree #dev there are 2 trees, the tree for all coins (which we use a historic root for), and the tree for this tx (which we always use the current root up until that output including the previous calls) #dev the historic root is as is #dev the tree for this tx is always deterministic since it only depends on the tx data which we compute #dev how are you going to make the zk proofs with something that you don't now? aka the current root? #dev i do know the current root for this tx #dev it starts from empty set {}, then we add coins to it {c1, c2, ...} #dev but it doesnt include any coins not in this tx #dev yeah but since its not a valid thing for the main tree, what prevents me from double spending or double minting stuff? #dev the nullifiers must be unique across the entire tx #dev ok going to prepare lunch, will check here in 30 mins #random test #random test back #random test #random test back #random b #dev here #dev will there be any issues when using the coins generated by the consecutive calls, which use the tx merkle tree and not the main one? #lunardao hey hiro #lunardao https://twitter.com/lunarpunksquad/status/1786084243531001937 #lunardao TW space on dark forest memetics was rescheduled to today at 17:00 UTC/19:00 CEST #lunardao https://twitter.com/i/spaces/1DXxyjadlVnKM #random test #random test back #dev : @rsx pushed 3 commits to master: 663712f8b0: wallet: only allocate texture once. Instead use a ResourceManager #dev : @rsx pushed 3 commits to master: e76be71d4b: cargo fmt #dev : @rsx pushed 3 commits to master: 05a797ec7e: wallet: add convenience methods add/set/get_property_type() that make code look much cleaner #dev consecutive calls should not have their coins added, only the previous calls within the tx #dev philosoraptor: I mean when we want to use the "final" output of such a tx #dev like: transfer with two calls where second call consumes first calls output, then later we want to consume the seconds call output in another tx #dev then the other tx will generate the same nullifiers as the 2nd call, and this will be rejected #dev philosoraptor: 1) What #dev the new tx consumes the output of the second call, why would its nullifier be revealed? #dev the nullifiers are added to the db after every call #dev you won't be able to consume the same output within a single tx #dev I'm talking about consuming the txs second call output to another tx #dev thats not consumed #dev the outputs of the 2nd call should be spendable by other txs #dev the outputs are unaffected #dev the money contract would need some kind of redesign tho to include the second merkle tree #dev which is always a new empty one for each tx, and gets mutated by each call #dev yep #dev the real question tho: does it impact the security model? #dev since the second merkle tree will only include tx call stuff #dev we'll have to think it over #dev btw fee can also do the same check in the tx specific tree, so we can have self paying txs using call output #dev : @skoupidi pushed 1 commit to master: 5f5cfbafa8: validator: random tx handling fixes #dev : @skoupidi pushed 1 commit to master: 7a891b0b90: blockchain/mod.rs: minor cleanup #lunardao https://twitter.com/lunarpunksquad/status/1786426351852872079 #lunardao Numbers are climbing 📈📈 105 contributors thus far #lunardao There is a matching pool of 300,000 USDC using quadratic funding, the more contributors LunarDAO gets, the better #lunardao the more contributors, the better it is for LD, even if donating a 1 DAI, theres a matching pool and quadratic funding will help make a larger impact #random : test #random test back #random https://twitter.com/i/spaces/1jMJgmvbQVwKL #random updated tw spaces link #lunardao https://twitter.com/i/spaces/1jMJgmvbQVwKL #lunardao updated twitter spaces link #random thanks sadar #dev hi, newbie here. i have a basic question: as darkfi supports user-defined smart contracts, how are contracts deployed to the chain? or is contract code sent as part of public input (instance) inside txs to a universal verifier (VM)? #dev godel: they deploy the was bincode of the contract using the native deploOor contract #dev and txs for that contract define they call that using the contract id #dev s,was,wasm #dev the VM knows which bincode to load by the tx defined calls, and executes the corresponding(predefined) functions of the contract itself #dev thank you, upgrayedd #dev upgrayedd: oh, i suppose this is not covered by the docs. thank you #dev i'll take a look at the contracts code #dev still geting this 'invalid metadata files for crate 'derive_builder'' error, I used these commands "rm -rf ~/.cargo/registry, rm -rf ~/.cargo/git, rm -rf target" #dev the error message tells me the rmeta file it can't open, should I just delete it? note: failed to open rmeta metadata: '/home/ubuntu/dev/darkfi/target/aarch64-unknown-linux-gnu/release/deps/libderive_builder_fork_arti-0a79f3f660686a80.rmeta' #dev or delete the whole deps folder? #dev whole deps folder #dev or even better, start from fresh repo #dev did you by any chance run anything with another/priviledged user? #dev I'm pretty sure I did, because I was uninstalling my VM, reinstalling etc when ircd was down thinking it was my VM at fault #dev there is your issue, wrong permissions. #dev anyway going afk, glhf #dev thanks for guidance #random test #random test back #random test #random test back #dev gm #random : gm #random : My only problem with twittah spaces is that I literally can't access them #random : Nitter doesn't support them (and barely any instance still works after the public API nuke) #random what is newstons 2nd law of motion #random : gm #random : twitter the everything app, though I wish the space happened on maybe mumble too? #dev gm #dev anyone know what this could be after running make clippy: error: failed to run custom build command for `randomx v1.1.11 ? #dev nevermind I didn't have cmake installed, the bane of my existence cmake is #dev always makes a comeback #dev ooh make clippy is nearly there, now I'm onto library errors that bring me back to my cross-compiling days (last year) and the joy that was #dev haha hopefully you figure it out soon #dev I have 79% battery left with no access to charge for a while, we shall see #dev race against the clock eh? #dev yeah or I go back to going through the Rust book and pick this up later tonight :3 #dev hmmm, race against the clock #dev gm #dev gm #dev weird my UI gives strange flickers on rasppi but the other computers are fine #dev probably some incompatible graphics api? #dev if it happens in other applications in the rpi, then could be your hdmi cable or whatever you're connected with #random : https://www.phoronix.com/news/Redox-OS-April-2024 #random : Title: Rust-Written Redox OS Gets USB Keyboards & Mice Working - Phoronix #random what's Redox OS? Never heard of it #random unix like OS but made in rust lang #random ooh #random yeah though still in its primitive stages, lets see how it goes in the future #random Redox reminds me of ReactOS somehow #random good to see Rust taking o more applications #random yea #dev hey so i've done the message subsystem refactor so that it operates on a stream/ Message directly rather than going via packet #dev i have basic encode/ decode working on Message in this new setup #dev however i'm getting stuck trying to extract the length from the stream and use take() to limit what's read according to the reported length #dev rn i'm manually reading the first byte and assigning it to a usize (the same logic as VarInt) #dev (keep in mind this is a test case so not thinking about magic bytes etc rn) #dev nice work draoi, how complex was the refactor would you say? #dev one sec just finishing this Q #dev then once we have the VarInt assigned usize, we have to cast it to a u64 cos that's what take() needs #dev this all works fine but then the decoding fails #dev am i missing something? #dev draoi, just read the VarInt #dev you don't need take #dev sorry yes you need take #dev deki: to answer your Q, the refactor was ez, the (de)serialization is tricky cos i have a pea brain #dev but just read the varint #dev idk why you're reimplementing varint, it already exists in async_lib.rs #dev so just read it #dev nice :> #dev it's bc when i call M::decode_async() after doing the VarInt::decode_async to extract the length the decoding fails #dev i thought it was bc of the duplicate VarInt decodes #dev since M::decode_async() also triggers VarInt encoding under the hood #dev no it's not #dev it doesn't #dev well my print messages beg to differ :D #dev ok give me an isolated test case #dev let M = u32 #dev sure #dev i have a unit test i can just push it, in tests/ #dev for example and give me usage instructions #random : Do not trust robots ! A bleak-sounding future, where an A.I. soldier has determined the only way to end war is to end humanity. #random where did that come from arm0503 lol #dev i'll be afk for a bit #dev : @draoi pushed 1 commit to async_decode: cfd14e32c2: tests: isolated test case for failing M::decode_async() #memes lus #dev git fetch, git checkout async_decode #dev cargo test --release --all-features --workspace message_encode -- --exact --nocapture #dev the first test it just to show a working example, where we call encode/ decode on Message/ String w/o attempting to extract the length #random brb(won't recieve any messages) #dev : @draoi pushed 1 commit to async_decode: a20c44a480: tests/message_encode: cleanup #dev brb grabbing coffee #random https://github.com/cargo-limit/cargo-limit?tab=readme-ov-file #dev b #dev written += 110u32.encode_async(&mut buffer).await.unwrap(); #dev Wrote bytes: 4 #dev if the varint was being written, then it should say 5 #dev draoi: this is wrong because you never write the length of the payload #dev written += name.encode_async(&mut buffer).await.unwrap(); #dev written += testmsg.encode_async(&mut buffer).await.unwrap(); #dev you need to write testmsg to buffer2, VarInt(buffer2.len()).encode_async(), then buffer2.encode_async(...) #dev oh daym #dev : @rsx pushed 1 commit to master: 266ecc2ed1: wallet: add scan_dangling() method used for garbage collection of nodes #random test #random test back #random b #random test #random test back #random : +1 cargo binstall --locked cargo-limit #random : test #random test back #random test #random test back #dev In fixed_bases.rs, if I want to generate u and z, then I should use `find_zs_and_us()` function (halo2/halo2_gadgets/src/ecc/chip/constants.rs:117). This function takes in an CurveAffine, not really sure how to get it. Honestly, does make sense but it does not? Weird, I know it is supposed to be generated using the (x, y) public keys that I added to zk a while ago (#253 for context). x and y are [u8 ; #dev 32] so thats done, a hex of 32 bytes. Idk how to convert it to CurveAffine or how to generate G out of it. ;-; #random test #random test back #random brb #dev : @rsx pushed 1 commit to master: c475c198e7: wallet: begin reorganzing py code into a submodule #random test #random test back #random ba #random s/a/ #dev : @rsx pushed 1 commit to master: 5777c0ffe6: wallet: draw a rather attractive looking box with a lush gradient #random test #random test back #random : cute ;) https://www.youtube.com/watch?v=UzRf9y9EWqM&t=2m12s #random : Title: Festo BionicBee - YouTube #dev : @rsx pushed 1 commit to master: 85ceda586e: wallet: make the beautiful box resize but preserve border width #dev airpods69: convert to Fp elements using from_repr(), then convert to CurveAffine (grep around in halo2 or darkfi code for a snippet) #dev rg from_repr darkfi/src/ #dev oh shoot yes, from_repr, I forgot about it, my bad. Shall do! thanks alot. #dev ++ #random test #random test back #random test #random test back #dev : @rsx pushed 1 commit to master: 2623d0e4cf: wallet: make screen coords consistently use pixels everywhere #random echo #random echo back #random test #random test back #random https://www.pcmag.com/news/firefox-power-user-keeps-7400-plus-browser-tabs-open-for-2-years #random wut #dev : @draoi pushed 2 commits to p2p_hardening: 975d0aabb9: net: working bounded Message (de)serialization #dev : @draoi pushed 2 commits to p2p_hardening: 0c0f7da473: net: cleanup de(serialize) Message refactor #random https://globalnews.ca/news/10463535/ontario-family-doctor-artificial-intelligence-notes/ #random lol sounds like these devs are writing soyjsshit https://alinpanaitiu.com/blog/woodworking-escape-from-software-absurdity/ #random I have no clue how hazel's firefox session only took up 70MB... #random 12 tabs and 3G here wow ;-; #random oh wait thats the session file nvm #philosophy https://nautil.us/insects-and-other-animals-have-consciousness-571584/ #random test #random test back #random brb (won't recieve any texts for a while) #dev zz #philosophy catching up with the logs, great discussion you all had #random test #random test back #random b #random test #random test back #random : https://news.bitcoin.com/snowden-issues-final-warning-to-bitcoin-developers-on-privacy-enhancements/ #random : Title: Attention Required! | Cloudflare #dev 6+ #philosophy Hello, what’s up? #philosophy :) #random Test #random Test back #dev gm #random test #random test back #random : test #random test back #random : test #random test back #philosophy hey joseph_kari #random test #random test back #philosophy o/ anon how are you? #philosophy not much activity here #philosophy we have philosophy meetings every 2 weeks in this chat #philosophy next one is wednesday 15:00 UTC #philosophy (i mean in this #philosophy channel specifically) #dev : gm #philosophy oh nice to know #philosophy I’ll try to join, I’m so glad you are doing this over IRC and not bullshit discord #philosophy :) #philosophy it's p2p and has encrypted DMs and channels also #philosophy this is the text we will be discussing https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #philosophy we did this one last week: https://www.researchgate.net/publication/290120192_Free_software_philosophy_and_open_source #philosophy ahh actually next one is May 16th #philosophy ppl are free to propose future texts etc during the discussion #philosophy why do so many devs use discord? is it just cos network effect? #dev hihi #philosophy do they? seems all the devs use IRC on libera #philosophy maybe not but someone was saying yday it's popular with devs, just hearsay really #philosophy i think it's just popular in general with gaymers #philosophy friend was saying it's gathered a lot of crypto projects and is the most significant silo this szn #philosophy which intersects with semi-technical ppl like pc users .etc so it's a good fit for things like 3D game engines #philosophy yeah young crowd, semi-technical #philosophy i wonder whether it's more important for crypto than twitter #philosophy ++ #philosophy i'm in the pygame community and it's so dogshit, full of 11 year olds learning to code #philosophy haha tell them to get on IRC #thatstheoldschoolway #philosophy there's also some tech communities i'm in which are both on discord and irc such as dwl #random !hackersays #random “It's 5.50 a.m.... Do you know where your stack pointer is?” — Anonymous 15[Quote #d4cc90] #random lol #philosophy the irc one is more core dev, higher tier devs whereas discord is full of newbs #philosophy normie containment channels haha #philosophy very much so #philosophy I find discord too distracting, to much noise, hard to follow etc #philosophy i just found the old darkfi discord we setup as an experiment: #philosophy > "Hi everybody. I see that this group is even more private and darker than DarkFi in Element. We are less here! So... This is the darkest social net where I am. Let be there dark!!" #philosophy :P #philosophy :) #philosophy we have the dev meet tmrw fyi #philosophy But my main issue with discord is how bad for privacy it is, requires more and more private informatio #philosophy information #philosophy yeah damn, are you a dev? #philosophy In general or for darkfi? #philosophy in general lol #philosophy kindaof #philosophy I worked a lot in open source project in the end of the 00 early 2010 #philosophy ah nice, i think i found your gh. lets exchange keys so we can DM #philosophy [contact."narodnik"] #philosophy contact_pubkey = "Didn8p4snHpq99dNjLixEM3QJC3vsddpcjjyaKDuq53d" #philosophy How to do this? #philosophy https://darkrenaissance.github.io/darkfi/misc/ircd/private_message.html #philosophy it seems obtuse, but we are making a GUI now (see bin/darkwallet/), and the new version of this chat has message history (see bin/darkirc/) #philosophy no problem I’m used to go in the darkness of a terminal #philosophy <3 #dev !list #dev No topics #philosophy I’ll do it once I have a bit more time #philosophy nw im here 16/7 lol #philosophy By default without Tor, what is the privacy offered by IRCd? #philosophy you can change your nick using /nick foo so there is no linkability of messages #philosophy to prevent spam, you will stake your keypair and every message produce an RLN: https://darkrenaissance.github.io/darkfi/crypto/rln.html #philosophy it's not yet integrated but the contract is here https://codeberg.org/darkrenaissance/darkirc-rln #philosophy users will still be able to post for free without staking, but under high traffic, the system will require RLN. if you spam the network you get slashed #philosophy all messages are completely unlinkable, and there is no identity #philosophy it is p2p, and we will add optional moderators later #philosophy (plus encrypted channels + DMs) #philosophy oh okay interesting #philosophy the situation with samourai wallet really opened my eyes #philosophy yeah we need to get ourselves more out there #philosophy we were really under the radar last year or so focused on dev #philosophy yday i was reading how gunpowder was discovered first in China but didn't disrupt society since China's scientists were also statesmen and bureaucrats tasks with maintaining social order #philosophy whereas once it got to medieval europe it completely reconfigured the class structure #philosophy transformed a society that was organized into men with horses and men w/o horses to a society where anyone could claim power with a gun #philosophy seems similar to encryption technology today #philosophy the west is dying, east doesn't offer any solution except authoritarianism #philosophy maybe the spaces "inbetween" could become the new renaissance regions #philosophy yeah we desperately need some nation bold enough to embrance encryption tech #philosophy east europe, africa, middle east, india kinda area #philosophy if not, it will just happen in the neo nation of cypherspace #philosophy How is east europe "friendly" toward encryption? #philosophy i didn't mean they are, just western nations are very comfortable with the status quo, they don't need these emerging techs #philosophy east europe (and the other places) are kind of lawless, so it's a good fit for crypto networks... also people used to using cash, informal networks, .etc #philosophy I would say western nation are turning hostile to encryption. There was a lot of push recently against encrypted messenger #philosophy whereas places like the UK are completely locked down surveillance states with decaying social order, moving to cashless society #philosophy i seem to remember india banning crypto or something #philosophy but yeah how can you enforce that #philosophy Apparently there are already people in UK scared of using monero #philosophy world seems kinda split between emerging neo-empires and those copying the western nation state model, both forms of governance are hostile to encryption and freedom #philosophy there's not gonna be a single nation state to be pro-encryption, why would they? What's in it for the state? #philosophy yeah i used the world "nation" rather than nation state selectively #philosophy ah right I get it #philosophy I mean there are certain region that try to be pro "crypto" but not at the level of the state #philosophy more like cities #philosophy that's why i said "inbetween" places - that is places with weak to nonexistant states #philosophy wow city seccession would be cool #philosophy however the example draoi gave of china is good cos it's like the chinese state prevented emergence of new tech but doomed themselves to poverty long term #philosophy city states would be a good solution, but you still won't be any match against the military power of the state #philosophy yeah the china example was a good point #philosophy weak states with independent craftsman pursuing risky tech and business was how gunpowder (and modern science) flourished in europe according to the "Order out of Chaos" book #philosophy europe is kinda unique in that so many different people live in close proximity, so there was always an incentive to find other ways to accrue power #philosophy but like you guys said, I think the best chance for some pro-encryption society is the inbetween spaces, something that starts online and creates networks throughout the world until there's an inflection point where you can form your own state/city #philosophy but you'll still be up against the might of the state military, and it's only advancing further. Politics attracts genuine psychopaths, and these people won't simply stand to the side as their raison d'etre is taken from them #philosophy we might be in the persecution timeline #philosophy and may not live to see the fruits #philosophy I think you're right, definitely in a persecution phase #philosophy however time/ tech seems to still be accelerating, so things will probably happen faster than Church persecution of early science etc #philosophy good point, I hadn't considered that about tech accelerating, and the state doesn't always stay ahead of the curve #dev i figured out how to print lines in python while accepting user input #dev https://agorism.dev/uploads/ctl.py #dev like bluetoothctl does #dev nice for CLI tools where you can accept user commands #philosophy weird how 10 - 20 years ago, the p2p revolution was the big idea but nothing really came out of it #philosophy now everybody forgot about that and moved onto AI? #philosophy i wonder why the p2p paradigm wasn't left uncompleted, it seems too obvious of a power to unlock #philosophy esp given all the discontent with corrupt elites #philosophy depends what major tech co is pursuing, they kinda define the trends, plus I think p2p never had the 'fun' looking UI that draws so many to say Apple #philosophy we started working on the UI aspect https://armor.vision/ui/2/Desktop.png #philosophy peter thiel has a good (although totally harram) analysis of why big tech won in zeroes and ones #philosophy AI will make shit weirded for sure #philosophy and will certainly accelerate surveillance #philosophy *weirder #philosophy nice UI #philosophy and peter thiel also has palantir which is accelerating the digital panopticon #philosophy ++ #philosophy what do you mean totally harram? #philosophy i mean i morally object to his analysis #philosophy oh right, don't know what that word means #philosophy it means "forbidden" in arabic/ Islam #philosophy oh I see, I don't know arabic lol #philosophy I'm optimistic about the future, even though I think the state will do whatever it can to survive, and nothing is off limits for them #philosophy I dated someone from our left-wing party in my country once, and whilst the next generation of politicians is even more insane than previous ones, they're also significantly more dumber #philosophy lol #philosophy like levels of stupidity you wish you never encountered #philosophy the modern globalist liberalism grasps at random righteous causes to disguise its own lack of ethics #philosophy When I was at university there was a guy there, he was getting involved in all kinds of student action groups etc. #philosophy very nicely said #philosophy He was there when I joined and still did not finish any "significant" degree or paper and was there after I left #philosophy thinking people see through this ecleticism and missing driving principle #philosophy a lot of them are like that joseph, same story where I am #philosophy He was the definition of "talk a lot" put himself in position of power and do typical politic stuff #philosophy And now he is a local politicien in my town :P. Recently he was caught selling on the "black" market fake coupons to get some kind of stuff at the grocery store #philosophy yeah that's them everywhere, they're good at acting, unsurprising #philosophy yeah #philosophy and people seem to not care #philosophy The last two weeks I was pretty demotivated after what happened to samourai and other in the crypto / bitcoin space. And I was thinking what can I say #philosophy i can,t share this with my coworker, they would not understand, would not care #philosophy most of us in the West have access to all the comforts and luxuries we want, or just enough to keep us placated/content and most don't want to disrupt that #philosophy I’m a happy cow with free healtcare getting milked for my taxes #philosophy it's strange with samourai, you'd expect more of an outcry or solidarity from the dev community over state censorship #philosophy i guess it's too obvious they were running infra and benefitting from fees #philosophy Well but I disagree, VPN companies also earn money providing a service, postal service also earns money when they transfert packages #philosophy it's been kinda silent, I mean you can still take a stance against what was done to them based on principle, without defending whatever dodgey stuff they may have been doing #philosophy Wallet could have implemented ricochet for instance. That is trivial, imagine if now half of the wallet would have it #philosophy It seems almost everybody is just standing down, complying and not saying too much #philosophy idk but I get the impression a lot of the crypto space has either sided with the 'we're gonna be cucked to the state' or 'we are just here to make a fortune on shitcoins then cash out' #philosophy few groups/people with principles or a vision (except this project as far as I can tell) #philosophy I would put monero is quite resiliant #philosophy yeah #philosophy and people on twitter decrying the state of crypto while also cashing in as a KOL #philosophy out of curiosity, do you know the project "logos" they made some advertising the other day. My usual assumption is everything is a scam unless proven otherwise #philosophy I haven't heard of it, but I've stopped following a lot of crypto news, a lot of it is distracting #philosophy its hard to separate the useful from the scammy / copypasta #philosophy definitely, but I think you can do a 'vibe check', like darkfi checks out so far #philosophy what made for me darkfi interesting is the connection with dark wallet -> samourai and the fact that you do not ask me to use discord #philosophy yeah I came across this via the dark wallet youtube video, which is probably the best crypto themed media #philosophy (or telegram) #philosophy not using discord is an added bonus lol #philosophy And simplex which I tried with one of my friend is really pain in the ass so much is slightly not working with it. Most frustrating experience ever #philosophy i don't get simplex. why bother if it's centralized and offering nothing new really? #philosophy never heard of simplex #philosophy reminds me of all the github alternatives that disappeared years ago deleting my repos #philosophy at least if i use your new thing, make it p2p #philosophy ironically if samourai was hosting on github they might still have the repository up #philosophy just like tornado cash is still there afaik #philosophy where did they host? #philosophy their own which was taken down at the same time as the rest #philosophy ahh #philosophy I'm logging off for a bit frens, c-ya #philosophy cya! #philosophy :> #dev frieren-elf64: can i rm message_subscriber::message_subscriber_test()? #dev rzn: due to the refactor (removing packet) we need to pass a PtStream around notify() and trigger() calls #dev meaning the only way to get this test working is to create actual channels etc, i'm thinking it can be moved to net/tests.rs integration test #dev actually that won't work since the Stream is private to Channel... thinking #dev we can do this using a Connector #dev or at least copying the code in Connector into a unit test #philosophy So wen dark.fi ETF? #philosophy ---> [] #dev (and would need to have an acceptor running on the other side etc) #dev so we would need to start an inbound node, manually connect to it (copying Connector code), setup dispatchers on both nodes, then proceed w test #random test #random test back #philosophy cbdctracker.org #dev : @draoi pushed 2 commits to master: a5c93b8f82: channel: add start_time to ChannelInfo #dev : @draoi pushed 2 commits to master: 78bb9f554e: net: remove intermediate Packet type... #dev gna put aside the Resource Manager work (on branch p2p_hardening) for a bit to focus on issues on master- p2p.stop() lag on darkirc, weird behavior on test reported by upgrayedd (tho more info here would be useful) #random message successfully retrived #random test completed, you may now discard any further communication #dev draoi: lag happens specifically in stopping outbout slot #dev https://codeberg.org/darkrenaissance/darkfi/src/commit/78bb9f554e6e82b95e7039f5fabbaf4f9c1746ff/src/net/p2p.rs#L159 #dev not sure why tho #dev draoi: i dont think i wrote that test, but sure #dev https://codeberg.org/darkrenaissance/darkfi/src/commit/78bb9f554e6e82b95e7039f5fabbaf4f9c1746ff/src/net/session/outbound_session.rs#L192 #philosophy we're in the process of upgrading our exchange listings. should be out in the next announcement #philosophy kek #dev thanks dasman, it could be bc the slots are looking for available addrs to connect to, which involves some locks etc #dev did you notice how long the lag is/ does it vary/ is it completely blocking CTRL-C? #dev probably, bc I also noticed after hitting ctrl-c the node still made a connection to a new peer #dev doesn't happen always but when happens it's always between 10 and 15 seconds #dev interesting ty, i'll run some tests and try to fix this week #dev tysm #dev bbl o/ #random echo #random echo back #dev b #lunardao gitcoin grant 20 finishing up in 2 days #lunardao 149 contributors so far #lunardao share out with your networks, lets get a last 2 day push #lunardao https://explorer.gitcoin.co/#/round/42161/26/58 #lunardao you can see how much your matching contributions are in the explorer UI #lunardao Due to the nature of quadratic funding, this estimated match is subject to change as the round progresses. Your match may start at $0, but can change as the project receives more donations. Read more about how quadratic funding works here. #lunardao https://wtfisqf.com/ #lunardao you can also donate on arbitrum #random https://twitter.com/zooko/status/1787151176040947863 #dev o/ #random test #random test back #random test #random test back #lunardao community meeting tomorrow 1600 UTC #philosophy Hello #dev draoi: thread '' panicked at src/net/channel.rs:290:61: #dev called `Result::unwrap()` on an `Err` value: Kind(UnexpectedEof) #dev note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace #random test #random test back #philosophy hey there alanparker3 #dev gm #philosophy how are you doing? #philosophy pretty good. wbu? #dev omg #dev tnx dasman #dev : @draoi pushed 1 commit to master: 0480a2ecb2: net: correct error handling in Message serialization upgrade #dev apologies, was squashing commits from the other branch and some older code slipped in #dev hey #dev fyi 78bb9f554e6e82b95e7039f5fabbaf4f9c1746ff is an optimization which makes nodes read and write Messages to the stream directly instead of using Packet #dev but that means nodes running that commit and above can't talk to nodes running commits before then #dev why? #dev well nodes before then will be sending Packets and trying to deserialize Packet #dev it should be the same #dev [magic:4] [cmd_len:varint] [cmd:...] [payload_len:varint] [payload...] #dev doesnt matter if i put it in a struct and read that, or read each one individually #dev we weren't writing the cmd len to the stream before #dev yes we were #dev you don't need name_buffer #dev https://codeberg.org/darkrenaissance/darkfi/src/commit/2623d0e4cf2819af10c6f58f303b7bf2e929d703/src/net/message.rs#L167 #dev also the names are wrong, should be (command, payload), not (name, msg) #dev the packet has fields: magic, command, payload #dev ^ this is the code before upgrade, it just writes magic followed by command #dev there's the length? #dev did you actually look at what's being written? #dev and read the serial code too #dev you should be able to clearly identify what each byte is in a hexdump #dev i called it name rather than command bc it's constructed from M::NAME #dev but will change it back #dev ok #markets https://www.politico.com/news/2024/05/05/gary-gensler-sec-crypto-00154769 #dev : @draoi pushed 1 commit to master: f604f0054f: net: fix command/payload naming and remove redundant buffer #philosophy I’m fine, just checking out dark.fi #random test #random test back #philosophy we're prepping for final testnet, dev meet today 16:00 CET in #dev #dev !list #dev No topics #philosophy Nice :) #dev i'm using this https://github.com/cargo-limit/cargo-limit #dev definitely recommend doing: `find src | entr -r cargo lrun` in your compile window #markets https://twitter.com/jaromil/status/1787397605187637715 #markets idk ;) #dev : gm #dev : gm #dev : @draoi pushed 1 commit to master: e71f8f5a82: channel: remove duplicate byte being written in send_message()... #dev why `entr` ? isn't `cargo watch -- cargo lrun` working fine too ? #dev hey I won't make it to the dev meeting today, but if you guys need anything for the testnet I'm keen to help, like with testing/trialing it #dev nice cargo watch is cool #dev brb (restart) #random echo #random echo back #dev b #dev o/ #dev : gm #dev : gm #random brb(rebooting) #random test #random test back #dev arm0503.7a891b0b: i tried cargo watch, but imo entr is better #dev find src/ | entr -rs "clear && cargo ltest" #random test #random test back #dev : `entr` is 'c', this is Rust, I'd like to 'oxidise' my setup properly ;) #dev : https://github.com/aag/eagle-eye #dev : Title: GitHub - aag/eagle-eye: A file watcher written in Rust #dev i turned off my internet and cargo watch gave me a load of errors that it could ping crates.io #dev i prefer not to have telemetry everytime i run a compile #lunardao !topic moros grant #dev !list #dev No topics #dev hey #dev good few ppl are AFK today #dev gm #dev o/ #dev anyone have stuff they wnna discuss? or postpone till next week #dev : gm #dev : yo #dev : gm everyone #dev : gm #dev just wanted to know when do we plan on leaving ircd?? #dev yeah since no topic added, postpone to next week? #dev airpods69: kinda started migrating already but there's a few bugs/ weird behaviors am looking into rn #dev so still on ircd till that's resolved #dev ah fair, I'll get the PR #253 done and merged then help out with janny work if I can. (best way to learn ig) #dev nice #dev ty #dev ty #dev : !list #dev ok so i guess that's it frens #dev : hey the meet bot is still on ircd #dev a hi-bye meeting #random : test #random test back #dev : but there's a few ppl AFK so we're considering postponing till next week #dev : unless anyone has something they want to discuss #dev : ah ok, ty re: meetbot #dev : have question, is project looking to hire new devs? #dev : yes sir #dev : maybe you saw already https://darkrenaissance.github.io/darkfi/dev/contrib/contrib.html #dev : Title: Contribute - The DarkFi Book #philosophy samourai had a gitlab #random : test #random test back #dev : thank you, have read the contrib and looking into the TODOs, is it okay to post questions in this channel during the week? #dev : yeah for sure #dev : welcome #dev : nice, thank you, that is all I have for now. #dev : :) #dev : \o/ #dev : fyi we're kinda between here and ircd at the moment #dev : i'm still fixing some net stuff so we have both running rn #dev : but should be migrating fully to here soon (TM) #dev hey #dev : draoi could you see my 'test' on ircd#test? unsure if I have connection issues #dev i was keep in dev #dev : np #dev hey frieren-elf64 #dev : which chan HCF? #dev : #test #dev *i was deep in dev #dev : actually I can see I have a broadcast error in my logs #dev : i'm not in that chan tbh #dev just checking, does the mirror bot work both ways? is darkirc seeing this meesage? #dev no #dev : but possibly you're not connected since the seeds may be down (already migrated to darkirc...) #dev : let me share a peer #dev : ah ok #dev : peers = ["tls://acab.accesscam.org:25561"] #dev : sure I just have lilith0 and lilith1 so that's probably it #dev so worries frieren-elf64 meet was posponed anyway #dev ah kk #dev ACTION goes back into the matrix #dev godspeed #dev o/ #dev !end #dev Elapsed time: 28583418.6 min #dev Meeting ended #dev XD long meeting #dev 54.3 years lol #dev hahaha #dev that's unix epoch #dev test #dev test back #dev : ty, got it sorted #dev : nice #philosophy : draoi you reading anything good these days? In the last little bit I've worked through Ocalan manifesto vol. 1 and almost complete vol. 2 #philosophy : once I'm done I'll need something new #philosophy : oh nice #philosophy : well the 3rd ocalan book is probs my fav hah #philosophy : did you read forest passage already? i loved that #philosophy : i'm reading order out of chaos atm it's really interesting #dev see ya #philosophy : do you know where I can find vol.3 online? having a hard time tracking it down and not sure I wanna order it with a credit card #philosophy : I am interested though.he says many times "I'll dicuss this in my third volume" and always on a juicy subject #philosophy : so I gotta read it #philosophy : haven't read Forest Passage yet but I should #philosophy : https://xeno.tools/uploads/ocalan-sociology.epub #philosophy : wow, hero #philosophy : tysm #philosophy : forest passage was amaze, uncannily contemporary, tho some ppl don't like jungers writing style (i do) #philosophy : i plan to work my way thru the book recommends here: https://ebuchman.github.io/about/ #philosophy : Title: About • Easy There Entropy #philosophy : ah nice, I'm familiar with ethan from working with the cosmos ecosystem a bit #philosophy : Order out of chaos by Prigogine? #philosophy : yes #philosophy : this looks really interesting from ethan's list: https://www.worldscientific.com/worldscibooks/10.1142/6928#t=aboutBook #philosophy : Title: Just a moment... #philosophy : yeah this looks crazy haha #philosophy : have you read Seeing Like a State? #philosophy : no, should i? #philosophy : I liked it a lot but it's a slog #philosophy : it's an academic text and pretty readable but takes a long time #philosophy : tl;dr is how 'master plans' for society fail and how things generally work out better organically from the bottom-up #philosophy : but with a lot of sociological examples, quite rigorous. spanning a lot of topics too #philosophy : oh nice #philosophy : one really interesting example was cities. there is a famous architect Le Corbusier, maybe you have heard of him #philosophy : yes #philosophy : kind of a madman who wanted to bulldoze downtown Paris and turn it into his perfect vision of a city #philosophy : he actually got to design whole cities but they turned out dead and articifical. hostile to actual communities #philosophy : reminds me of the cathedral and the bazaar essay #philosophy : i've not read that actually. skimming wiki though I see the parallels #philosophy : the Seeing Like a State thing is really an argument against universalism and nation-state monoculture so really nice companion reading to Ocalan imo #philosophy : gotta step away for a bit, bbl #philosophy : nice, thanks for the thoughts #philosophy : btw we have a philosophy discussion group that's started, next meet may 16th #philosophy : see you! #dev : @rsx pushed 5 commits to master: 6d7bbd3ed7: wallet: fix SceneGraph::rename_node() function which wasn't renaming parents and children info fields #dev : @rsx pushed 5 commits to master: 616735c0a3: wallet: bugfix .unwrap() causing crash when text obj is an empty string #dev : @rsx pushed 5 commits to master: 9a90542009: wallet: add is_visible property to objects #dev : @rsx pushed 5 commits to master: 7e9fba23fb: wallet: create a chatbox #dev : @rsx pushed 5 commits to master: 2f58097787: wallet: make a more powerful property system #random brb, rebooting again. #random test #random test back #random b #random test #random test back #lunardao community meeting in a half hour #random test #random test back #lunardao hey #lunardao hey #lunardao hey #lunardao glad it works #lunardao had to go with the new suggestion #lunardao ++ #lunardao hey foo #lunardao ./nick 0xhiro #lunardao remove the '.' #random test #random test back #lunardao hi #lunardao <0xhiro> hello everyone #lunardao !list #lunardao looks like bots down #lunardao !topic updates #lunardao !topic morosgrant #lunardao !topic nft darkfi discussion #lunardao !list #lunardao Topics: #lunardao 1. updates (by sadar) #lunardao 2. darkfi nft (by sadar) #lunardao now it works #lunardao magic #lunardao ++++ #lunardao !topic morosgrant #lunardao Added topic: morosgrant (by sadar) #lunardao if we're good, we can get started #lunardao yes #lunardao - made a group between different players to make the next donation round over firn ASAP #lunardao - helped with moving the nodes to another ISP #lunardao - done a research on ISPs for other people running nym nodes as we had pain with the ones we used #lunardao . #lunardao + the TW space was based! good work! #lunardao <0xhiro> ++ #lunardao <3 #lunardao yes, space was great #lunardao there was some tech difficulty, but we rose above, yet again #lunardao 2024, the biggest social media platform ran by the richest company out there, one would think that it won't be such trash #lunardao updates from me: #lunardao - Making final push for gitcoin grants 20 - Tomorrw is the last day, we have about 230 contributors so far #lunardao - Fiatlux episode 14 just dropped, with web3privacy now, will push on socials #lunardao . #lunardao https://www.youtube.com/watch?v=HipTMiRzW6o #lunardao +++ #lunardao <0xhiro> https://morosnet.com/project/lunardao/ #lunardao <0xhiro> I guess we also finalise the morosnet grant #lunardao What's the state of it do you know? #lunardao Will look up the link now #lunardao it says funded, though I dont know if they had a vote on it via snapshot yet #lunardao <0xhiro> i guess they havent transfer the funds over ya #lunardao update from hux: #lunardao - next TW space will be with Firn #lunardao . #lunardao hux also hosted the tw space, and did an amazing job <3 #lunardao . #lunardao 0xhiro: So the proposal passed? What was the size? #lunardao date for the next tw space isnt set #lunardao NICE! We also gonna get Firns unlocked in 5 weeks #lunardao !next #lunardao Elapsed time: 28583535.6 min #lunardao Current topic: updates (by sadar) #lunardao !next #lunardao Elapsed time: 0.1 min #lunardao Current topic: darkfi nft (by sadar) #lunardao https://forum.lunardao.net/t/lip-0005-contribute-to-darkfi-research-and-development/216/6 #lunardao There were some technical/communication issues, but now we have all the devs in one room starting to develop the technical solution for a direct raise over Firn #lunardao ++ TMIYC had some questions/statements saying it was vague and saying there should be a more formal submission including some more detail on whats needed #lunardao ++ read it #lunardao IMO, we shall be moving on with the tech prep #lunardao it's a separated raise so no one except people who donate to this raise is affected #lunardao while we listen to the community as much as possible, no one is pushed to donate #lunardao <0xhiro> hi foo for moronet funding im expecting around ~11k since the 129982 donated to 11 projects #lunardao Wow, that's quite something. #lunardao More qa's to the topic? #dev is it normal to keep seeing "[ERROR] net::p2p::broadcast_with_exclude(): P2P::broadcast_with_exclude: No connected channels found"? #lunardao !next #lunardao Elapsed time: 9.3 min #lunardao Current topic: morosgrant (by sadar) #lunardao !next #lunardao Elapsed time: 0.1 min #lunardao No further topics #lunardao is that all? #lunardao On the Morosgrant: this mans that it's approved and voted upon? #lunardao let me check, give me 2 min #lunardao Im looking for their snapshot, as thats where I believe they voted for previous funding events #lunardao ill find it and drop here #lunardao 0xhiro wanted to join the DAO, if this is still the case, I propose that we make a proposal to mint VOX for the same price as the raise and all stewards vote for. #lunardao Based on the morosnet success and 0xhiro efforts #lunardao yes, Hiro suggested entry back in feb and got the grant out successfully #lunardao https://snapshot.org/#/morosnet.eth/proposal/0x5289ee633caff750254e233e3144bee10a5d28b202f52989272b0708f87e543e #lunardao moros grant passed #lunardao Is this something 0xhiro you are still interested in? #lunardao <0xhiro> yes i am :) #lunardao 👀 👀 #lunardao Do you have an idea of entry size? #lunardao <0xhiro> as in the amount i would like to invest? #lunardao yes #lunardao <0xhiro> about 10 to 15k? depending on the price #lunardao ok, let's come back to this next week with some numbers from us and see where we can go from there #lunardao <0xhiro> just curious the VOX token will represent the list of projects that lunardao invest in ya #lunardao yes, #lunardao In the docs should be the exact definition and calculation of VOX #lunardao !next #lunardao Elapsed time: 23.3 min #lunardao No further topics #lunardao !end #lunardao Elapsed time: 0.1 min #lunardao Meeting ended #lunardao See you in a week and talk more on this one #lunardao in the meantime, we should update actionable tasks: #lunardao <0xhiro> ++ #lunardao https://forum.lunardao.net/t/actionable-tasks/219/3 #lunardao great job, have a good week everyone #lunardao cya #dev airpods69: check out bin/dnet/, it's a viewer to see your node state. you might need to setup the config #dev https://agorism.dev/uploads/dn.txt #philosophy : may 16 - what time? #dev frieren-elf64: lilth is the only one on it and its offline welp... #dev I'll debug this later, doesn't really bother me, I can just hide it z on tmux hah #random : test #random test back #random : test #random : test #random test back #random : test #random : test #random test back #random test back #random : test #random test back #random : welp doesn't work ahhhh #random test back #random : ohh wow, my bad XD #random : took a while to start up... #philosophy : HCF: 15:00 UTC if I am not wrong #lunardao https://reportcards.gitcoin.co/42161/26 moving up the list, number 9 in nfrastructure #dev ah well... I think I messed up my PR ;-; #dev welp, eh I'll fix everything and make a different PR later on. 4436 lines of horror muahaha (just for the jokes after I messed up, actually shouldn't cross like maybe 120 once Im done) #random test #random test back #dev anyways question: I just want to confirm did I use the function find_zs_and_us the right way? link to said line (it is still incomplete) https://codeberg.org/airpods69/darkfi/src/commit/307df5312bdfcf5dfb661fd7bd5ecc9f8c6289d8/src/sdk/src/crypto/constants/fixed_bases.rs#L263 #dev also if I am using it the right way, is it supposed to take 60+ seconds to generate values for u and z? Doesn't feel right... #dev test smt if someone wants to see what I am seeing #dev afk #random : https://www.phoronix.com/news/Microsoft-Cascadia-Code-2024 #random : Title: Microsoft Updates Cascadia Code: Its Open-Source Font For Developers - Phoronix #philosophy : ty #dev it would be nice to have a high-level view of a smart contract life cycle from contract writing all the way to deploying it and invoking its functions. i would volunteer to create it if i could actually figure out the whole thing... #dev it's probably self-evident for you guys but not that so for newcomers like me #random test #random test back #dev gm #dev godel: someone made this before- https://odyslam.com/blog/darkfi-smart-contracts/ #dev doesn't rly go into life cycle tho iirc #dev : sup #dev yo #dev airpods69: it seems correct, i didn't test the fn myself so if it takes a long time, we should think of another way to do this #dev maybe this data should be distributed with the contracts. how large is it when you serialize everything? #dev (or you can just calculate it) #dev we do this already, see for example: darkfi/src/contract/dao/src/entrypoint/mod.rs:71 #dev using include_bytes!() in the wasm #dev we should then bcos of this, provide a large number of pregenerated points too #dev frieren-elf64: if I use num_windows=NUM_WINDOWS then I'd say about 70 seconds, didn't time it properly. But if I use num_windows=H then about 30 seconds (constants defined in fixed_bases which is also the one being used in other structs too, still gotta make sure what it exactly is for) #dev gotta calculate the size. I'll do it once im back. #dev afk for a while from laptop, using my phone here #dev : @rsx pushed 1 commit to master: 8332a3648c: wallet: update python API for new property system rewrite #dev nw cya #dev gm #dev : @rsx pushed 1 commit to master: 1997292b36: wallet: improve methods, by making use of queues. signals now pass data too. #random test #random test back #random : Interesting, although GoLang https://go.dev/blog/chacha8rand?hn=1 #random : Title: Secure Randomness in Go 1.22 - The Go Programming Language #dev : @rsx pushed 1 commit to master: 8b1fddacb3: wallet: add create/delete_mesh/texture() fns #dev hey dasman, around? #random test #random test back #dev draoi: hey what's up? #dev ah hey #dev just looking into this CTRL-C issue #dev observing something kinda weird wondering if you also observed this #dev what is it? #dev haven't figured out exact steps to reproduce so just running for different intervals and it doesn't always happen #dev basically, normal shutdown sequence we get an info print like "Received shutdown signal" and then we trigger the p2p.stop() and i have a load of print statements showing everything stopping #dev from what i've seen, in the case of an abnormal shutdown (CTRL-C lag) none of these print statements get triggered #dev it just hangs for some secs with no output, then stops (with no output) #dev however you said before you noticed it was catching on slot.stop() #dev so was wondering if you observed something different? #dev ha, I haven't observed such thing #dev Or didn't pay attention #dev just to be sure, when you noticed the slot.stop() lag, you can print statements confirming that? or how did you triangulate #dev s/can/had #dev cos if so maybe i'm observing something else #dev I used instant and elapsed around each .stop() #dev ahhh nice one #dev any chance you have the log output saved? #dev no sorry :( #dev np #dev tnx for info #dev happy to help #lunardao gm, couldn't join the meeting yday #lunardao posted a reply on the LD forum regarding the DarkFi NFT: https://forum.lunardao.net/t/lip-0005-contribute-to-darkfi-research-and-development/216/7 #dev this is good, even if lacking some of the info i want and having a couple errors. if i come up with something more to the effect i have in mind i will open a pr to the docs #dev daoi: thank you! #random test #random test back #lunardao thanks for the update, drkbull #lunardao will get back if ive got any questiions #lunardao https://twitter.com/lunarpunksquad/status/1787837809031623115 #lunardao I dont know if the matching for gitcoin grants happens in real time, or post closing of the round #lunardao does anyone know the answer here? #dev hey #dev yo #random https://github.com/YS-L/csvlens #random frieren: oh lord, this is great! Thanks for sharing. #random I needed this #random Opening csv in neovide was a headache and waiting for libre to open up was so time consuming #random idk why there's not a good spreadsheet tui #random i tried sc-im for a while but damn buggy as hell, and visidata is way too overkill #random want something that uses .md format #random same, or maybe something like what git diff does? like a vim kind of thing but able to move left and right if the csv is too long #dev okay so fixed_bases: generate_zs_and_us() takes 18.19 seconds to run the generator function when num_window = H (and H = 8). #dev frieren-elf64: about distributing the data with contracts, I probably am not the best judge for that so its best if you guys discussed about it amongst yourself (I listen and learn :D). #dev yeah we should ask brawndo when he's around what is the best solution #dev but would be good to know how much data is involved #dev since if it's too big then it's expensive to distribute onchain and we can look into pregenerating a bunch of points .etc #dev oh yeah my bad #dev UserDefinedConstant { #dev G: pallas::Affine, #dev u: Vec<[[u8; 32]; H]>, #dev z: Vec, #dev } #dev This is what you would be looking at. Its the same as other structs which goes into the heap from the hardcoded values depending upon the option #dev G gets generated from `pallas::Affine::from_xy` and used to calculate u and z (which I believe is the bottleneck now). #random test #random test back #dev what is the len of z? #dev G = 64 bytes, u = 32*H, z = 8*n so total = 64 + 32H + 8n which is not too bad actually #dev ok off to chill, gn #dev alrighty #dev same here, gn. :D #random echo #random echo back #lunardao https://forum.lunardao.net/t/lip-0005-contribute-to-darkfi-research-and-development/216/8 #lunardao responded drkbull #lunardao https://reportcards.gitcoin.co/42161/26 #lunardao 392 contributions $4778.45 raised #random test #random test back #dev gm #random draoi, there? #dev greets #dev o/ #random hey i'm here now #lunardao wow sadar that's amazing <3 #random can I dm? here's my public key: CoHPDJS6NzjLJKHq2dp3SPi4gKuPppmFGhwHVdmGsdT1 #random https://www.city-journal.org/article/signals-katherine-maher-problem #random oh hi there deki #random hey what's happening airpods69 #dev : gm #random the article is about how Signal has been used by the US government to aid these 'color revolutions' around the world, but their new chairman has a history of being anti free speech #random echo #random echo back #dev gm #random test #random test back #dev gm #dev bbl #dev quit #random nothing much deki, just about to get some work done. #random and I hope signal was for free speech #dev hey #random 7test #random test #random test back #random test #random test back #random echo #random echo back #random test #random test back #random anyone ever used this? https://github.com/zkemail #random test #random test back #random brb rebooting #random b #random test #random test back #random test #random test back #dev : @skoupidi pushed 1 commit to master: 32fcb6e6df: drk: store proper information for token mint authority #random brb rebooting #random b #random test #random test back #random test #random test back #math hello #random hello #philosophy hello #dev hello #random test #random test back #dev Hello #dev I was having some trouble connecting to darkfi for the past few weeks so apologies if people got flooded with posts from me hahaha #dev Adding the peer connection that was listed in the telegram chat fixed it for me. #dev Yeah we're slowly going to deprecate the infrastructure holding some ircd servers and move onto darkirc #dev what is the difference between the current setup and darkirc? #random test #random test back #dev gm #dev fatback: the main difference is darkirc retains messages for a peer when the peer node is offline (current time is 24hrs) using Directed Acyclic Graphs. #dev I was trying to run darkfid (new default config), are the lilith seeds down? (lilith0 gives me a timeout and lilith1 refuses to connect) #dev hey #dev : gm #dev nighteous: Do you mean darkirc? #dev brawndo: nope, I meant darkfid. I was checking out the book and tried to run a node. #dev We'll be deploying a new testnet very soon #dev upgrayedd is just finalising some stuff in the wallet #dev oh okay then #random echo #random echo back #dev But speaking about darkirc, everyone should update it to latest git master #dev yes #dev i'm also working on 1-2 improvements #dev to net rn #dev hey upgrayedd: so to mint a token, you must called token_mint() which requires an auth_contract (in the token attributes) #dev the reason there is a separation between token_mint() and auth_token_mint() is because auth_token_mint() is the auth_contract that does the same logic as the old token_mint() (written by bra*ndo) #dev which the old logic was: use a keypair to mint tokens #dev but we actually want to allow tokens to be minted programmatically, for example emission by a protocol #dev so the new token_mint() (in token_mint) has the stuff with parent_func_id that you see, which means: "token_mint can only be called by the function specified in the token_attributes for that token" #dev so if i mint a token with token_auth_parent = foo::bar(), then only foo::bar() can call token_mint() for that token #dev to get the old token functionality, we parent_func_id = money::auth_token_mint() #dev btw thanks a lot for reviewing the code, i greatly appreciate the extra eyes and happy to answer Qs #random test #random test back #markets https://twitter.com/WatcherGuru/status/1788373884418294072 #markets https://twitter.com/franklinisbored/status/1788415532225450073 #markets https://twitter.com/twobitidiot/status/1788389754502856707 #markets funny how things work in politics #markets politicians will do everything to get a vote #markets then they will rug you after they get elected and continue with the agenda they had, lmao #random test #random test back #random echo #random echo back #random brb (rebooting) #random test #random test back #random b #dev hey we're not tagging commits yet right like we discussed 2 weeks ago #dev don't see @bugfix or similar on recent commits #dev : @draoi pushed 1 commit to master: 39350f8740: outbound_session: start() and stop() slots concurrently... #dev We can start doing that after release #dev When it is relevant #dev ah kk #random test #random test back #random test #random test back #random hello #philosophy hello #math hello #random hey there fatback #random how's it going? #random pretty good, pretty good. #random what about you? #random pretty good as well. #random I was starting to learn rust and wanted a new ide and came across doom emacs so I've been tinkering with that lately. #random oh thats good, I use neovim and neovide. #random brb rebooting #random b #random what #random what's up airpods?* #random nothing much wbu? #random b #random fatback, you should checkout doom emacs #random nighteous: i have definitely been tinkering around with it. Given that im a big doom fan i was sold from the start hahaha #random fatback: <3 I use it sometimes but I am way too used to my neovim keybindings and don't want to take out time to reconfigure lol #random I hear ya. It's taken me about a week to get my side set up to something resembling the vscode im used to. #random thats good! sometimes rust lsp is slow for me which is annoying, but hey, vwy go back to line and then p does wonders #random there's a really responsive discord server for the project which is nice for troubleshooting, as much as i dislike discord. #random side question, is there a decent workaround for when a dnm onion 502 times out? seem to be getting that a lot lately. #random fatback: wdym #random wdym by that side question* #random sometimes when im on a dnm it will just return the 502 timeout error code and refreshing doesn't seem to solve it. The only other thing I could think of would be to try another onion address but was curious if there was another solution. #random using another onion address would mean having to do all the captcha and anti-phishing verification again, which is fine but I just was curious if there were another way. #dev !list #dev No topics #random test #random test back #dev !topic zk: distributing arbitrary points data with the contracts #dev Added topic: zk: distributing arbitrary points data with the contracts (by nighteous) #dev gotta look into this cause generating z and u using find_zs_and_us is slow. #random test #random test back #random test #random test back #random : https://crates.io/crates/ointer #random : Steal the high bits of a pointer to store an extra value #random test #random test back #random test #random test back #dev hello all #dev holla #dev sweet! excited to be here. thanks for having me. huge s/o to Varoo & skou pidi #dev welcome have fun #dev really a big newb for all things it, security & privacy, but willing to learn and support the causee that you guys are involved in. this is the way! #dev :)) #dev : @dasman pushed 2 commits to master: 39bd52c985: bin/darkirc: ignore CAP END if user is registered #dev : @dasman pushed 2 commits to master: b03ae05813: bin/darkirc: fix multiple join msgs in IRC client + NAMES list #dev brawndo: getting NAMES list after getting history :D #dev : @dasman pushed 1 commit to master: 71b2998e3a: bin/tau: flush sled db and stop dnet and deg when caughtung termination signal #dev If i see a link that 404's on the wiki, whats the best way to inform and get it updated? I was going to comment it, but not sure if thats the best way #dev : @dasman pushed 1 commit to master: f93145a05a: tau: remove dummy info logs #dev anon: create a PR on https://codeberg.org/darkrenaissance/darkfi #dev : @dasman pushed 1 commit to master: 047a0e4bb7: bin/deg: simplify detecting merges and forks in graph column #math https://archetype.mirror.xyz/Lov-dI8FOueUt4J4MXPH9gXLyS4VXfHCdEmSg67jzoM #math Verifiable Compute: Scaling Trust with Cryptography #random test #random test back #dev gm #dev : Hello, inside src/validator/consensus.rs, within the unproposed_txs function, there's a 'TODO' comment indicating a need to replace TXS_CAP with a gas limit. Anybody know if we already have an algorithm or definition for determining the appropriate gas limit to compare against in this context? #random : https://radicle.xyz/ #random : Title: Radicle: the sovereign forge #random : Radicle is an open source, peer-to-peer code collaboration stack built on Git #dev hi #dev o/ #dev : gm #dev gm #dev alkaloid, are there darkirc nodes i can connect to over tor? #dev trying to get setup #random brb: gotta grab something from lunch (won't recieve texts) #random arm0509.39350f87: how are you on darkirc? i'm trying to join #random i'm using the lilith 1 seed node to try and connect (latest master) #random is that correct? #random i'm using these seeds rn: seeds = ["tcp+tls://lilith1.dark.fi:5262", "tcp+tls://dasman.xyz:5262"] #random you can try with these tor seeds tho can't verify they're online/ up to date: #random seeds = ["tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551", "tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25554"] #dev dasman: ah nice improvement #dev You should carefully follow the protocol, don't just test with weechat btw #dev : gm #dev : calm: We don't have a set gas limit yet #dev : calm: We first have to choose a divisor for the gas units #dev : i.e. 1000 gas units should cost 0.000000001 native token #dev : https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/validator/verification.rs#L515 #dev : Title: darkfi/src/validator/verification.rs at master - darkrenaissance/darkfi - Codeberg.org #random https://agorism.dev/uploads/darkirc.log #random doesnt work for me with those seeds #random lilith0.dark.fi:5262 #random from ur log #random trying using lilith1 #random ah #random : tst #random : tst #random : sup #dev : brando, thank you. Will spend time studying fn verify_transaction. Are there any dependencies that must be resolved before choosing the optimal gas unit divisor? Can we use a constant or configured value to proceed with coding, with the option to configure the divisor value later without affecting the implementation? #random : arm0509.39350f87: so about radicle, i spoke with them irl and they aren't supporting tor so it's not anon #random : i told them anon p2p git should be their main focus but they said they're just focused on censorship resistance part #random : so sadly for darkfi, centralized codeberg is more appropriate #dev : It's mostly a question of token engineering #dev : However I think we should just start with a constant value, say: fee = gas_units // 1000 #dev : Right now, fee = gas_units #dev : But that's too expensive, meaning a lot of tokens have to be spent even for a basic transfer #dev : In src/runtime/vm_runtime.rs we also have a GAS_LIMIT definition, which we might eventually want to tune, based on what the contracts are doing generally #dev : But for now the 4M limit seems to work #dev : err, 400M #random : radicle is also not implemented well, they should have followed the git standard #random : https://rovaughn.github.io/2015-2-9.html #random : Title: How to Write a New Git Protocol - rovaughn #random : i guess we need a team of janny devs so we can pump out quality software #random : like a pipeline #random : :D #random : pumping pipelines always reminds me of the Apple-BSD meme #random : The money donation #random : "but crypto is a scam" the corporate foss dev says #random : ^^ #dev : @rsx pushed 1 commit to master: 8be3db21a4: darkirc: update java version for building android binaries #random : darkirc android build: https://agorism.dev/uploads/darkirc.aarch64-android #dev : okay, thank you. In the context of fn unproposed_txs, is the gas limit we need to calculate analogous to Ethereum's block gas limit, or conceptually similar? #dev : Yeah so the limit is introduced in order to prevent the WASM entering an infinite execution loop #dev : Once the limit is reached, the execution will quit and fail #dev : okay, appreciate your time, will keep that in mind. #dev : On another note, created an account on codeberg and noticed the pull request button is disabled. At the same time, it is enabled in github. Should we start buy doing pull requests in github or is there a permission / configuration that needs to be provided to do pull requests in codeberg? #random : https://github.com/Hirrolot/datatype99 #random : Title: GitHub - Hirrolot/datatype99: Algebraic data types for C99 #dev : hm that sounds wrong #dev : They're enabled #random test #random test back #random : https://lwn.net/Articles/444910/ #random : Title: Object-oriented design patterns in the kernel, part 1 [LWN.net] #random localmonero shutting down. what p2p platform is there #random test #random test back #random anon: why they shutting down? any news? #random i guess they got spooked #random https://localmonero.co/blog/announcements/winding-down #random woah ty #random Yeah I want to try out Serai #random serai.exchange ? #random Yeah #random its not live now isnt it #random Not yet #dev : okay, ty for letting me know; will look into Codeberg account settings. Heard about Codeberg today, seems like a good repo hosting platform. #dev : nice thing about it is you can create accts over tor #dev : maybe you saw already https://darkrenaissance.github.io/darkfi/dev/contrib/tor.html #dev : Title: Using Tor - The DarkFi Book #dev : draoi, gm to you as well. Very cool, thank you for sharing, will setup codeberg accordingly. Good to hear project made a good choice with the repo tech. #dev : @skoupidi pushed 1 commit to master: 4101f8b608: drk: tx history handling cleanup #dev hey frieren: need to update to the latest version and will share the hostnames #dev seeds=["tor://cbfeuw6f4djcukyf3mizdna3oki6xd4amygprzdv4toa3gyzjiw6zfad.onion:25554","tor://6pllu3rduxklujabdwln32ilvxthvddx75qg5ifq2xctqkz33afhczyd.onion:25551"] < these two are now on v0.5.0 #dev : @skoupidi pushed 1 commit to master: d9dbbc18f6: doc/arch/p2p-network: broken link fixed #dev gm frens #dev gm #dev gm #random test #random test back #random b #random : test #random test back #random : can someone drop in a message? I wonder if I am recieving texts, cause I don't on my phone #random : weird #random : test #random : test #random test back #random test back #random test #random test back #random : test #random test back #random : test msg #random : test #random test back #random idk why I keep getting timeout waiting for parents (first it was irc1.dark.fi then now acab.accesscam.org (different notes basically)) #random : test #random test back #random : okay so calm, can you text again? (I can see it via the mirror bot) #random : test #random : test #random test back #random : hmm doesn't work #random test back #random : god damn it #random : finally, the sync happened #random This is what I was seeing in logs https://pastebin.com/u7hAL6NC #random : test #random test back #random : great, thanks telepathy, it works. #dev : @dasman pushed 1 commit to master: faf8b80e36: event_graph: remove unused code #dev : @dasman pushed 1 commit to master: 13ea9a5ffe: bin/deg: update README.md #random : gm #random : gm brawndo #dev hmm it's happening again #dev [ERROR] [P2P] Broadcasting message to tcp+tls://151.80.214.233:60886 failed: Channel stopped #dev [ERROR] [P2P] Broadcasting message to tcp+tls://irc1.dark.fi:26661 failed: Channel stopped #dev [ERROR] [P2P] Broadcasting message to tcp+tls://151.80.214.233:51894 failed: Channel stopped #dev The node is trying to communicate with itself #dev [INFO] [P2P] Requesting addrs from active channels. Attempt: 2 #dev This info and then those errors #dev [INFO] [P2P] Requesting addrs from active channels. Attempt: 2 #dev [ERROR] [P2P] Broadcasting message to tcp+tls://acab.accesscam.org:26661 failed: Channel stopped #dev Happening on another one as well #dev ok, looking into #dev brawndo: you're saying that these addrs are the nodes own external addrs? #dev Yes, the actual domains are set as external addrs #dev The IP is the IP of irc1.dark.fi #dev hoth ~ % host irc1.dark.fi #dev irc1.dark.fi has address 151.80.214.233 #dev ok ty #dev I'm assuming there's no DNS resolution implemented, so if you have a domain as extern_addr, you could still end up with your own IP in the peerlist #dev But just resolving domains via system isn't ideal, since someone might want to use Tor - then resolving via system would leak the connection #dev But perhaps we can make a way to resolve domains over the set transport, provided the node has that transport enabled #dev That'd just be an abstraction over SocketAddr or something #dev https://docs.rs/arti-client/latest/arti_client/struct.TorAddr.html #dev ah i know what's happening #dev i think it's connected to when we ping ourselves, though need to confirm that #dev Why do we ping ourselves? #dev see refine_session.rs:361 #dev or actually the docs from line 333 #dev we do this to ensure our addr is actually reachable before broadcasting it to others #dev hm yeah I'm not sure if this is a good idea #dev This will always create 2 (or 3?) channels #dev yes i think 2 #dev Even if your external addr is misconfigured, it should be pruned by people with time, no? #dev yes #dev e.g. they'd add it to the blacklist because it's unreachable #dev So perhaps it's a non-issue #dev they should insert it on the greylist first, then realize it's bad and delete it #dev Right #dev The only issue is if it keeps appearing #dev we keep broadcasting our addrs #dev But it's a double-edge sword. Some legit peer might go offline and become unreachable, and if you ban it, they won't be able to connect when they come back online. #dev so they will keep being added to the greylist and deleted #dev rn we're not really banning nodes #dev Yeah I was thinking if it happens too many times you just refuse it #dev But I guess there's no point to that #dev probably we should avoid writing RefineSession or SelfHandshake connections to p2p.channels() anyway #dev which is an easy fix #dev we can also remove SelfHandshake i'm semi ambivalent, maybe haumea has thoughts #dev Maybe add it as a Monday topic? #dev ++ #dev !topic p2p self-handshake and its bugs #dev Added topic: p2p self-handshake and its bugs (by brawndo) #dev Fun how a lot of bg async stuff causes race conditions #dev haha yeah #dev Stupid computers :D #dev X #dev XD #dev gm #dev : gm #dev : o/ #dev : gm #random afk for a while* #random test #random test back #random b #random test #random test back #random test #random test back #dev : @dasman pushed 1 commit to master: 1377198b03: eventgraph: [WIP] add initial eventgraph replayer code #dev : @dasman pushed 1 commit to master: 957388e3b0: bin/deg: better handle when dag is empty #random test #random test back #dev hey #random test #random test back #dev : @dasman pushed 2 commits to master: d250c22196: bin/deg: add eventgraph replay mode #dev : @dasman pushed 2 commits to master: fae90c18f7: bin/deg: increase RPC buffer limit #dev gm #random test #random test back #dev gm #dev o/ #dev : gm #dev !list #dev Topics: #dev 1. zk: distributing arbitrary points data with the contracts (by nighteous) #dev 2. p2p self-handshake and its bugs (by brawndo) #dev almost had a mini heartattack that the meet started lol (I lost track of time for a second there) #dev (got notified and I was like wait what, is it time already, where did the day go?) #dev i was reading the topics #dev you can do that any time using !list #dev meeting doesn't start until someone calls !start #dev (at 3pm UTC) #dev ah fair okayy #random : https://github.com/cloudflare/pingora/releases/tag/0.2.0 #random : Title: Release Pingora 0.2.0 · cloudflare/pingora · GitHub #dev gm #dev : gm #dev : o/ #random test #random test back #dev : gm #dev : gm #dev : gm everyone #dev : ohayou #dev : !list #dev : oh it doesn't work here #dev : Yeah I'll move it once we migrate here #random : https://i.blackhat.com/eu-18/Thu-Dec-6/eu-18-Schaub-Perfectly-Deniable-Steganographic-Disk-Encryption.pdf #random : >makes this #random : >gets hired by canadian darpa #random : >source code never released #dev : ah fair. How do I edit a topic? I wanted to change 1. and also include a discussion to see if the approach I took for adding arbitrary constants is overengineering it or not. The reason being that I have crossed 300+ lines of changes. That amount gives me an eerie feeling that maybe a simpler approach might exist. #random : Why can't we have nice things? #dev : deltopic #dev : And then add the new one #dev deltopic 1 #dev !deltopic 1 #dev Removed topic 1 #dev now that I think about it, two seperate topics would have made more sense #dev !topic zk: distributing the data for arbitrary points with contracts #dev Added topic: zk: distributing the data for arbitrary points with contracts (by nighteous) #dev !topic zk/zkas: discussion on the approach for addition of arbitrary points to zk/zkas. #dev Added topic: zk/zkas: discussion on the approach for addition of arbitrary points to zk/zkas. (by nighteous) #dev : thanks #dev : np #dev !topic darkirc migration #dev Added topic: darkirc migration (by brawndo) #random : idk why linux doesnt have deniable disk encryption still #random : It's hard #random : There's plausible deniability with https://shufflecake.net/ #random : Title: Shufflecake #random : But IMO plausible deniability is not good enough #random : Schaub's Steg seemed most promising #random : Obviously after he announced it, it disappeared #random : He practically solved all the issues with hidden filesystems and even got error correction working #random : Now Canadian DARPA has it #random : https://trace.yshui.dev/2024-05-copilot.html#did-github-copilot-really-increase-my-productivity #random : Title: Is Copilot good? - yshui --log-level=trace #random : oh nice didnt know about shufflecake, that should be standard on linux #random : Why lol #random : It's not even that good #random : ah i only read the schema they described and it sounds good, exactly what we need #random : It's bad because an adversary can see that you're using it #random : So it's no different than normal cryptsetup #random : that's not true #random : With deniable encryption there is no half-way #random : It's either deniable or it isn't #random : untrue, you could have 0 or N encrypted volumes, and there's no way to tell how many there are #random : deniable encryption is far superior to cryptsetup #random : Having that is the basis of getting beaten up with a wrench #random : Not having any traces of steganography provides much more safety and less basis for suspicion #random : deniable encryption >> cryptsetup single volume #random : I'll either beat you up until you reveal all N levels or just kill you #random : With perfectly deniable encryption I have less reason to beat you up because I don't even know if you're using it #random : you're wrong #random : Whereas with plausible encryption I know it #random : i was multiple situations held by police #random : plausible encryption protects you from legal liability without incriminating yourself #random : Depends on your threat model #random : they aren't allowed to prosecute you on a hunch, they need evidence #random : Mine is not even showing that I'm using encryption #random : cryptsetup is very easy to say the person is refusing to decrypt the volume #random : That's when you're encrypting an entire hard drive #random : You can also just encrypt a blob on your filesystem and hide it #random : even encrypted volumes they can find #random : Not volumes #random : Use steganography to hide it in a movie #random : (if it's a file, not just a hidden partition) #random : Or across multiple movies/media #random : that would also be nice, but anything is better than cryptsetup right now which is insufficient #random : FDE is sub-par for deniability #random : now when for example, journalists are arrested they are compelled by laws to decrypt the single volume #random : Always use steganography and make it file-based #random : Not entire volumes #random : so deniability would protect them from those laws #random : Yes #random : That's why I'm really interested in the PDF I linked above #random : It basically solves all the problems #random : For example a cool design is to have a blob encrypted with LUKS spread over multiple big files using steganography #random : the thing with file based crypto rather than entire system, is you end up just encrypting a few files but the entire system is doxxed #random : Then extract it, unlock, and use overlayfs to place over your existing OS #random : Well how much of your entire system is incriminating? #random : If anything at all #random : I just want to not leak my SSH keys and passwords #random : Or browsing history for privacy #random : I don't care someone sees what software I have installed #random : It's a lot more sus having the entire OS encrypted #random : OTOH it's easier for someone to install malware that way #random : I dunno how detectable currently available steg tools are #random : It's likely you can just run a script and find it #random : Wow, I thought using Veracrypt is fine, looks like I need to step up my game :D #random : Not that I have anything to hide, but encryption should be a basic right, this law that you need to give up your password fucking sucks #random : Yep #random : At the end people will always find new ways, will be a cat and mouse game. I' #random : Even signalling that you're using encryption is a red flag #dev : @skoupidi pushed 1 commit to master: 9e71055a9d: drk: fixed token minting and added its fee call #random : I'm sure someone will leak that source code or come up with something better #random : Eventually yes #dev gm gm #dev gm #random : gm #random test #random test back #random : gm #random : https://en.wikipedia.org/wiki/Havana_syndrome #random : Title: Havana syndrome - Wikipedia #random : do you have havana syndrom brawndo? #random : *syndrome #random : No, just found about the thing today #random : s,found,& out, #random : yeah I heard about it a while ago, seems to be not realy #random : just US govt employees hallucinating #random : I was looking into Dominic Schaub and realised he's working on this: https://www.pischa.ca/ #random : Title: Pischa Technologies - Leading Sensor Provider for Defence and Security #random : is he the one involved in the stego tool you were talking about before? #random : Yep #random : https://www.youtube.com/watch?v=f01t7OQjF4E #random : Title: Perfectly Deniable Steganographic Disk Encryption - YouTube #random : yeah it's weird to me when people 'switch' from security and foss tools to this other world #random : but it's kind of common #random : a lot of the time tech and hacker conferences are cops mixed with anti-authority people. makes for a weird scene #random : mhm #random : you mentioned detection of stego tools. I haven't looked into it directly but I think it might be kind of easy to detect stego in files #random : basically if you know 'shannon entropy' I think you could compare a typical movie or music file and put it side by side with one including stego #random : Yeah for sure #random : I think you could detect sections of the file that have more entropy and know they are encrypted. even if the strips are narrow #random : I guess maybe it's deniable but maybe it isn't? I wonder if they would have a typical pattern #random : Dominic's talk is really good #random : OK I'll watch it #random : lmk what you think when you do :) #markets https://github.com/haveno-dex/haveno/blob/master/docs/create-mainnet.md #random : ++ #markets q #dev : gm #dev hi #dev : hi calm #dev Hello #dev : ACTION creates a portal #dev : o/ #dev o/ #dev : gm #dev !list #dev Topics: #dev 1. p2p self-handshake and its bugs (by brawndo) #dev 2. zk: distributing the data for arbitrary points with contracts (by nighteous) #dev 3. zk/zkas: discussion on the approach for addition of arbitrary points to zk/zkas. (by nighteous) #dev 4. darkirc migration (by brawndo) #dev \o #dev !start #dev Meeting started #dev Topics: #dev 1. p2p self-handshake and its bugs (by brawndo) #dev 2. zk: distributing the data for arbitrary points with contracts (by nighteous) #dev 3. zk/zkas: discussion on the approach for addition of arbitrary points to zk/zkas. (by nighteous) #dev 4. darkirc migration (by brawndo) #dev Current topic: p2p self-handshake and its bugs (by brawndo) #dev : elo #dev Hey #dev : We're on old ircd still #dev o/ #dev hey #dev : oh okay #dev about this topic: #dev so perodically, we do a "self handshake" or version exchange with ourselves. this involves creating two channels, a manual connection with ourselves and an inbound connection via the acceptor. we then do a version exchange between these channels. #dev : hello draoi #dev we do this to 1) ensure our external addrs are valid before sharing them 2) couple the external addrs with a last_seen field that records when our addr was last reachable by us. we then broadcast this tuple of (external_addr, last_seen) to other peers in protocol seed and protocol addr. #dev because channels created by Self Handshake (like the refine channels) disconnect quickly and are pruned, in channel.rs, we avoid printing channel send and recv errors if they come from one of these sessions. #dev however rn p2p.broadcast() can currently trigger a "Channel Stopped" error when we broadcast msgs to all channels() around the same time a connection to ourselves disconnects. #dev to fix this we can either: #dev 1) avoid printing Channel Stopped errors if it's a RefineSession (since this is expected behavior), 2) avoid adding RefineSession connections to the p2p list of channels(), 3) rm the SelfHandshake #dev regarding the latter, we could make other peers checks our external addrs instead by simply sending our external addr without knowing whether it's valid and allowing the refinery of other peers to process it, however we need to decide what the last_seen should be (for example it could be set to 0 which would give it priority in the receiving peers greylist). #dev ok my thinking is that we should avoid the node doing broadcast() trying to communicate with itself #dev i don't think self ping is needed. if it's needed, then do it once and never again #dev The reason this is happening is likely a race condition #dev I believe the self-ping to validate external_addr is not absolutely necessary #dev Even if it is misconfigured and broadcasted to others, they will eventually prune it because of not being able to connect #dev so the self-ping is to like 'clean' the external addrs before broadcast? idea is to reduce network traffic and compute overhead for peers? #dev HCF: no it just is to make sure the configured external_addr is correct #dev HCF: Yeah the idea was to make sure external_addr is reachable #dev yes and to couple the addr with a last_seen field #dev rather than putting an empty value like 0 #dev ok ty #dev Why is last_seen needed for self? #dev is the 'empty' case something that can be resolved with Rust types rather than trying a connection? #dev brawndo: because AddrMsg is a tuple of #dev so when we are broadcasting our addr, we must put some value there #dev It should just be the current time #dev At time of broadcast #dev ok but generally last_seen means last reachable #dev You shouldn't trust that number coming from an arbitrary node #dev ^ agreed #dev Every node would maintain it for itself #dev true, and we don't #dev they do #dev (other nodes) #dev So you can just put current time when sharing it #dev (Sharing your own external_addr) #dev yes, we can do that if it's preferred #dev ++ #dev only if not doing self ping #dev I wouldn't do self-ping either #dev 'it could be set to 0 which would give it priority' this is a bit concerning to me. it seems easy to spam this and confuse peers #dev HCF: we're saying to set it to current time #dev The time you're sharing doesn't matter #dev however we still need to keep in mind the hostlist ordering #dev ++, just wondering if the priority thing already exists #dev The receiving node will (eventually) attempt a connection #dev they are ordered by most recent timestamp #dev does monero do self ping? #dev And know for themself #dev yes #dev we took it from monero #dev ah #dev i don't think it exists in bitcoin #dev It's a bad optimisation IMO #dev We could implement a DNS resolver ourself and use that to determine if the external_addr is "valid" #dev You only need to do that when (re)configuring the p2p instance #dev and maybe drop the nightly Ip from rust::std::net and go stable XD #dev No that's needed to filter non-public ranges #dev I can only dream then XD #dev nightly dreams XD #dev :D #dev seems like we have rough consensus here #dev next? #dev i'm just re-reading the above #dev ok #dev I think a bad external_addr is a non-issue as it should be filtered over time #dev my impression is that dropping the self-ping makes sense. agreed that it's a race condition and maybe something we can avoid #dev i think p2p.broadcast() probably should only touch manual, inbound and outbound, right? #dev but will defer to others because I've not been thinking about it as long #dev frieren: It uses an inbound slot #dev i think brawndo means broadcast() has a race if it sends to channels that were stopped #dev ahh ic #dev That's the issue as it opens 2 channels #dev And then broadcast() picks them up #dev yeah seems silly to try to broadcast to yourself #dev hmm tricky, draoi maybe ask in #bitcoin-dev or #bitcoin-wizards on Libera about bitcoin p2p design, and check libp2p / others as well #dev So, could we just remove this all and then figure out again if/how to validate external_addr in a better way? #dev sure i can do a bit of research and remove #dev well maybe better to get a better sense first of what others are doing before doing any drastic moves #dev ok #dev but i'm in favour of removing too #dev it just doesn't seem needed. if i configure an external_addr then i expect it to be correct, and i don't want my node to verify that for me #dev i always think of that meme of a drolling wojak trying to plug something in to his head #dev (only if it's cheap/easy and not expensive) #dev lol #dev yeah it's a bit like that #dev !next #dev Elapsed time: 19.0 min #dev Current topic: zk: distributing the data for arbitrary points with contracts (by nighteous) #dev nighteous: here? #dev nighteous was on darkirc just now #dev for this frieren and brawndo have to decide whether or not to distribute the arbitrary points with contracts or not #dev oh yeah I was typing, here #dev just getting down all of the details for a quick recap #dev ok waiting for more elaboration #dev brawndo: could we do like zkas_db_set()? and then remove all presets, and just have money deploy all the points we use in src/contract/ #dev nighteous: customary to explain the problem, not just for me/brawndo but others sitting in listening #dev I'm not fully clear on what is needed #dev oh yeah sorry! So on running find_zs_and_us for calculating us and zs from the Generator value which the user defines in zkas, the calculation of the values is slow (in the ball park of 17-20 seconds) #dev what's the size of the generated data? so we know the overhead for adding them to contracts #dev 17-20s ain't slow #dev frieren did send a message which is this when we last discussed: "G = 64 bytes, u = 32*H, z = 8*n so total = 64 + 32H + 8n" for the size of calculation #dev what is H and n? #dev upgrayedd: It is very slow lol #dev H is a constant defined in constants.rs which other structs were using. (H = 8) #dev n not so sure, you wrote it... #dev what is the length of z? #dev you can see these in the code #dev len of z = 8 #dev H: usize = 1 << FIXED_BASE_WINDOW_SIZE; #dev FIXED_BASE_WINDOW_SIZE = 8 #dev s/8/3 #dev I think it can be bundled no prob #dev The bigger issue is that likely the constants logic has to be rewritten in order to support this #dev nighteous: look at the code, darkfi/src/sdk/src/crypto/constants/fixed_bases/nullifier_k.rs:21 #dev as an example #dev G = 32, Z = 8n, U = 32*H*n #dev what is n? you should've come to this meet with that info #dev what is the overhead in terms of bytes #dev this file is cursed lol. I think we should have some documentation about where these numbers come from #dev it should be the num_window size which is 8 in my case #dev (not saying that the implementation is bad, just hard to grok) #dev nighteous: so what is the number of bytes in total for all the data? #dev frieren: 64? (8*8) #dev oh wait #dev HCF: https://github.com/zcash/halo2/blob/7df93fd855395dcdb301a857d4b33f37903bbf76/halo2_gadgets/src/ecc/chip/constants.rs#L117 #dev all of the data #dev ty #dev yes all the data! #dev 32 + 64 + 32 * 8 * 8 = 2144 #dev brawndo: yeah so basically the DB becomes the main mechanism and we remove the hardcoded constants #dev Yes that's what I meant by rewriting the constants logic #dev ok so 2.1k bytes overhead per constant deployed #dev isn't that quite a lot of data? #dev It still needs to exist pregenerated because of performance overhead #dev Also there will be overhead in retrieving it from the db #dev what about pregenerating 500 constants? #dev frieren: Up to you. I've always been on the side that the constants we have are enough #dev they aren't, and additionally you have constants that cannot be used in different ec ops #dev I'm with brawndo on this, overhead is too much just to cover a very specific niche #dev so in several places i had to make workarounds #dev it's not a specific niche, it's insecure to reuse generators #dev ideally each domain uses a separate generator, but we are sloppy reusing generators in multiple places simply because we don't have enough #dev and the ones we do have are not usable in different EC functions like ec_mul_short(), ec_mul(), .etc which is very limiting #dev for example if you want to do a pedersen vector commit, right now it's impossible with our current setup #dev hm ok then why not add the generators we need as constants? rather than db entries #dev Yeah we should do that #dev yeah so i'm saying we pre-bundle 500 generators #dev frieren: That's still finite and a mediocre solution #dev if custom/user deployed needs something more, they should bundle their generator as part of the init() contract data #dev We should reimpl the constants logic a bit to support arbitrary generators #dev and have a tree storing that #dev And then they can just be included in the contract binary #dev ok what if it's stored on disk as files instead of in a DB? #dev It doesn't have to be stored #dev why not allow contracts to add constants, and then other contracts use those constants? #dev like a global generators tree? #dev That's possible with what I'm saying #dev Just provide the constants in the API like the SDK does #dev Why are you trying to make this complex? #dev ok but why it doesn't have to be stored? #dev how can other contracts use those constants if it isn't stored? #dev Because it exists as code #dev Same thing as nullifier_k.rs for example #dev oh yeah mean they also set them again in deploy()? #dev *oh you #dev They never get set #dev They just exist pregenerated and provided by the contract through its API #dev > frieren: That's still finite and a mediocre solution #dev do you mean hardcoded like we have now? #dev You're talking about pregenerating 500 constants for everyone #dev I'm talking about each contract pregenerating what they want to offer #dev yep me too, just wondering how they're accessed #dev do you mean another function like metadata()? #dev The same way they are accessed now in the SDK #dev The constants API just needs some reworking for this #dev do we have a call like zkas_db_set() to add the constant? or how does it work? #dev another issue, there is ConstBaseFieldElement, OrchardFixedBasesFull, .etc but these should all be unified #dev When the VKs are generated on contract deployment, they're just passed in as-needed #dev This is done once per deploy #dev so how could the DAO contract access the constants used by money? would it have to do anything? #dev It'd use the money contract as a crate dependency and access the stuff through the provided rust consts #dev In Money the generators would be in the public API #dev ok nice, so you configure the ZK VM's constants like a hashmap basically in deploy #dev You have to copy the data from WASM to the host, but yeah #dev doesn't this require some kind of persistence of the config? #dev It's little overhead since it's only done on deployment #dev Then the VKs are generated and it's set-and-forget #dev What config what persistence? I don't understand #dev well we configure the generators, but then verification happens sometime later and those constants are used #dev so those generators would have to be stored somewhere on disk it seems #dev They're already in the VK #dev We store the VKs #dev ah that's nice #dev You don't need a circuit to verify a proof #dev Just the VK #dev yeah that's perfect #dev Is it clear now? #dev yep #dev \o/ #dev ok :D #dev 1. unify fixed_bases.rs so there isn't multiple enums #dev 2. mechanism to init the generators used by ZKVM #dev 3. move current constants to money? #dev 4. zkas support #dev Yeah I'd do the ZKVM last #dev is that correct? #dev ok #dev The first should be moving the constants to Money, and then having that export working #dev Because the logic in constants has to be rewritten, since we won't be hardcoding any anymore #dev I can help with this if need be #dev maybe the simpler tasks you can itemize for nighteous and oversee the harder parts #dev I'm not entirely clear on how this will work in zkas #dev But let's see #dev we can have it the same as current where it's the constant name #dev then it's just a map in the zkvm from constant name to the value #dev Yeah but now we can't validate their names #dev that's fine, the zkvm will fail then #dev ok if you think so #dev running the zk circuits now requires configuring constants (zkrunner) #dev next? #dev !next #dev Elapsed time: 35.7 min #dev Current topic: zk/zkas: discussion on the approach for addition of arbitrary points to zk/zkas. (by nighteous) #dev I think this topic can be skipped now #dev Yeah it happened :D #dev ++ #philosophy : hey the philosophy meeting is May 16 at 16 UTC? is that right? #philosophy : i'd like to come #dev next then? #dev !next #dev Elapsed time: 0.6 min #dev Current topic: darkirc migration (by brawndo) #dev Should we attempt to do the next week's meeting on darkirc? #dev Maybe start using that more #dev why not? #dev So we can start finding bugs if any #dev ++ #dev There's 1 lilith and a few public nodes deployed #dev Just everyone needs to update to latest master, and use the seed in the config file #dev sure wtm #dev *wfm #dev i'm working on the lag on CTRL-C #dev i think we can go for it! msgs get echoed here anyway #dev Then if it works for a week or two, we'll deprecate the old lilith seed and have that #dev So the infra can be fully cleaned up and the DNS stuff can be migrated from my personal infra #dev nice #dev We fixed that version exchange bug too #dev yep #dev So new nodes will now properly reject old(er) onese #dev yeah also dasman working on event graph replayer would be good for triaging issues #dev That seems to be progressing afaict #dev I didn't use it yet tho #dev will be done soon (TM) #dev sibe #dev ah yes a classic #dev lol #dev dasman: don't forget to fixup clippy warnings, please and thank you #dev there will be some updates incoming: CTRL-C lag (basically making the Connector prematurely stoppable, so we don't have to wait for the connector to fail on stop), fix/rm SelfHandshake #dev yy ++ #dev also upgrayedd flagged something kinda scary a while back, trying to reproduce #dev draoi: can you remind me? #dev I'm operating on limited memory #dev draoi: Did you find out what's causing the hang? #dev i think you said the net test was acting up occasionally, like not stopping/ aborting #dev oh yeah it was stuck to some refinery endless loop #dev brawndo: yes it's the Connector re: CTRL-C hang #dev and was shut down from the ci agent for running to long lol #dev aha #dev So p2p.stop() needs to aggressively drop it? #dev yes exactly #dev ok nice #dev i'm adding a Condvar #dev so we just call notify() and return whatever future finishes first (the connector result or condvar.wait()) #dev quick instinct prediction: node1 connects to node2, you call stop on both, node2 stops before node1, node1 goes into retry/refinery and keeps retrying to connect to node2, therefore blocking its own stop #dev it's a bit tricky cos seedsync operates a connector but isn't really owned by anything/ is controlled statelessly in p2p.seed(), so i need to move some stuff around #dev yeah that's scary upgrayedd #dev will look into #dev everything should be a stopable task #dev so main can controll all underlining threads/tasks #dev windows-task-manager.exe #dev :D #dev !topic drk updates #dev Added topic: drk updates (by upgrayedd) #dev ok #dev !next #dev Elapsed time: 10.3 min #dev Current topic: drk updates (by upgrayedd) #dev draoi: anything else to add? should we move? #dev all good #dev Yeah we should just start chatting on darkirc :) #dev ok will do #dev ok just quick update on drk: transition to new api going smoothly, fee call added and working as part of block rewards #dev remaining money calls to "fix": token freeze and otc #dev when there are done all basic money calls should be operational for general testing #dev general as in not me localtesting XD #dev very nice, we're working on the UI too #dev will start with the chat #dev imho drk cli is more of a priority #dev actually we can put it in the web browser if there's a community run server people can connect to #dev The IRC? #dev Probably, we need to test multiple clients a lot more #dev I wrote it with that support in mind, but it's largely untested #random test #random test back #dev anyway thats all, shall we move/end? #dev cool #dev frfr #dev !next #dev Elapsed time: 5.9 min #dev No further topics #dev !end #dev Elapsed time: 0.0 min #dev Meeting ended #dev hello, have a quick question: completed contrib/tor.html settings. Anybody have any insight on reasons why "New pull request" button is disabled in codeberg? #dev gg everyone #dev screenshot: https://codeberg.org/calm/share/src/branch/master/new-pull-request-button-disabled.png #dev calm, I just used it (didn't make a PR though) so I dont think it is disabled... weird #dev calm: maybe you need to click fork? #dev oh yeah, gotta fork it #dev and then push changes to your forked repo, then there might be a merge button on the top #dev thanks everyone #dev o/ #dev thanks all! #dev calm: Try the fork and let's see #dev Thanks everyone, very good mtg #dev ty, I'll look into that #dev thank you everyone #dev nighteous: I'll have a look at this constants stuff and then we can chat a bit about it tomorrow #dev Is that fine for you? #dev brawndo: sure thing. Also if there is any prerequiste that I am supposed to know, I'll read about that. #lunardao gm #dev : @rsx pushed 1 commit to master: c21773be28: system/condvar: add a unit test to make sure condvar can be double awaited. #dev frieren: remembering some time ago had some issues with the stopable task #dev if the task is finished and you call .stop() it hands there waiting endlessly #dev or something along those lines #dev that was fixed iirc #dev oh ok :D #dev darkfi/src/system/stoppable_task.rs:109 #dev self.barrier.notify(); #dev (see the comment) #dev nighteous: Not right now, will have a better picture tmrw #dev alrighty #dev The task needs to be removed from every scope to be stopped #dev Otherwise any Arc will keep it alive #dev Also applicable to StoppableTask::stop(), it might quit the detached task, but the Arc will still exist in any scope it's referenced #dev the data is quite small but yeah in general if the arc is kept alive then that's a leak #dev ++ #lunardao gm #lunardao gm #lunardao !list #lunardao No topics #lunardao !topic updates #lunardao Added topic: updates (by foo) #lunardao How is everyone? #lunardao !list #lunardao Topics: #lunardao 1. updates (by foo) #lunardao Anyone reads me? #lunardao doing great, hbu foo? #philosophy : draoi? or anyone else know? #lunardao not terrible #lunardao good things coming up #lunardao <3 #lunardao and the gitcoin round was better than I expected #lunardao I am trying to DM people if anyone is coming #lunardao hey was afk #lunardao b #lunardao updates from my end: #lunardao - finished up gitcoin granst 20, funds were paid out, sitting on arb chain #lunardao very good, also the morosnet should be wrapped up #lunardao -been back channeling on DAO funding setup for LIP-005 #lunardao on my end: moving some of the services we run to stronger VPSs + automating stuff #philosophy : should be this wednesday I believe #philosophy : which is May 15th not 16th #lunardao - pushing socials, sumer meetups/confs are in full swing, getting the info out #lunardao . #lunardao put together a group of devs participating on the next raise #lunardao will follow up on moros funds to see if thats been paid out #philosophy : HCF ^ #lunardao !topic LIP-005 #lunardao Added topic: LIP-005 (by sadar) #lunardao there already some ideas how to go about the raise, I am positive that this month it will be concluded #lunardao . #lunardao ++ #lunardao !next #lunardao Elapsed time: 28593612.2 min #lunardao Current topic: updates (by foo) #lunardao !next #lunardao Elapsed time: 0.2 min #lunardao Current topic: LIP-005 (by sadar) #lunardao most of the updates covered this #lunardao as I said, there is a collab between the dao stewards, daohaus and firn in full swing #lunardao ty for the updates #lunardao when we have a more finalized flow, we present it to darkfi here #lunardao that may be by next monday #lunardao awesome #lunardao it's good and people seem excited #lunardao ++ builders coming out in support #lunardao we will have to make an escrow to which the NFT is locked and after end of the raise (cap or time) the funds are send to darkfi and NFT gets released to the sub-dao created by people donating #lunardao simple as #lunardao sounds good #lunardao how is everything on dark side? #lunardao devs are preparing for mainnet, new testnet should be up soon for everyone to try out #lunardao also ircd will be migrated to darkirc #lunardao the last one was already based! #lunardao nice #lunardao will inform you once ready to migrate #lunardao please do <3 #lunardao ^_^ #lunardao !next #lunardao Elapsed time: 5.5 min #lunardao No further topics #lunardao !end #lunardao Elapsed time: 0.1 min #lunardao Meeting ended #lunardao short and efficient, didnt get back from hux, I know there is a plan for another space #lunardao nice quick meet #lunardao in coming week or two #lunardao w firn #lunardao ok, have a good one everyone #lunardao have a good week y'all #random : brb rebooting #random test #random test back #random b #random test #random test back #philosophy : ty nighteous #random test #random test back #math hello #random hello #philosophy hello #random hey there fatback #random nighteous: how's it going? #random pretty good wbu? #random chillin #random I was thinking of putting some items up for sale on monero market but was curious if there were any other crypto markets that would be good to put these items on. It's a bunch of computer keyboards, mechanical keyboards, mice, mouse pads, etc. #random : test #random test back #philosophy : np #random : test #random test back #dev hi everyone, was able to create a fork. Can a code reviewer or anyone else please provide explanation of the code review process for a forked repo and how approved updates would be migrated over from https://codeberg.org/calm/darkfi to https://codeberg.org/darkrenaissance/darkfi? #dev calm: you open a PR as usual, and someone will review it or discuss it here #dev thank you #random : [rust] GxHash is a blazingly fast and robust non-cryptographic hashing algorithm. #random : https://github.com/ogxd/gxhash #random I have heard both sides of the argument for and against tor over vpn. What do others think here about running tor while you have a vpn running in the background? #dev : @dasman pushed 2 commits to master: 2fc118af51: eventgraph: rewrite eg replay functions and actually log the events #dev : @dasman pushed 2 commits to master: 4186860fe5: bin/darkirc: RPC method to recreate DAG from replay log upon request from DEG #dev : normal use: ./deg #dev : replay mode: ./deg - r #dev : oops I meant: ./deg -r #dev : so darkirc node is running it logs the operation on the dag, specifically "insert", when running deg in replay mode, the node recreates the dag from that log, and sends it to deg tui to browse #dev : @dasman pushed 1 commit to master: 96a16b0de1: bin/deg: remove forgotten unnecessary prints #dev xit #dev exit #dev gm #random https://pointersgonewild.com/2024/04/20/the-alternative-implementation-problem/ #random relevant to btc impls #random fatback: i think tor should not run over vpn #random : https://applied-langua.ge/posts/zero-feet.html #philosophy : which text is being read for this weds? #philosophy : https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #philosophy : ty #dev gm #philosophy : i said thurs 16th cos i'm travelling wed #philosophy : but feel free to do the meeting w/o me, i'll try to chime in over mobile #random me catching up on the chat log: someone's talking about using a wrench to get encrypted info out of someone, and/or killing them (hypothetical), other person talks about how they've been held be police multiple times lol #random me: wondering what group of people I've gotten involved with lol #philosophy : a note on the time- HCF said 16 UTC above but i believe it's normally 15 UTC i.e. the same time as the Monday dev meet but on Wednesday #philosophy : wodensdag :D #random i'm kidding, I know you guys and/or gals are as innocent as bambi #random yo deki xd #random heyo #random what's happening airpods69 #random wondering how to make 3 features in 3 hours lol #random wbu? #random ooh intense, also soz meant to say nighteous #random its good, figured :D #random I'm just sorting out some work stuff rn #random oh back from the vacation? #random yes indeed! I need to send you my public key to replace the one you have now, but will do that later when I'm by my PC #random ohh that works, you can just dm the new one to me whenever if you haven't changed the previous one #random will do tnx #random oh btw btw deki, did you checkout the ai girl... *cough cough* gpt-4o? #random haha yes, couldn't go past her/it/etc lol #random definitely reminds me of the movie Her (which i think was deliberate) #random reminds me of blade runner 2047 #random oh yeah definitely that too #random I dont have a subscription so can't try out the voice feature, I'm curious but also nervous about giving my voice data to OpenAI lol #random and yet it's still not an assistant, can it add an event in your calendar, remind you of something, do some accounting on the go (like add some spending you just did your monthly spendings), helps you with buying something? #random all these AI tools are completely useless on that front #random why would i want to have an AI sing some BS for me? #random they're just trying to muddy the waters to make us forget these LLMs are complete failures when it comes to navigating interfaces, clicking buttons etc. #random you'd need some kind of AI which connects to all your devices and has deep knowledge of your habits etc. for it to be useful #random well yeah you're right, a lot of applications right now are kinda novelty #random the real 'AI' use cases are more obvious with driverless cars, object detection and the likes #random although apparently the vision models cannot detect kangaroos because of their irregular movement lol #random i think the usecase for an assistant like Her (not necessarily with the romantic aspect) is compelling and obvious, but we're nowhere near that #philosophy yes pretty sure it's 15 UTC, I remember asking for an hour earlier than the intended time #random I agree, nowhere near it, plus training such a massively complex multi-modal system is going to be extremely costly, and will take a few iterations to get to something useful #random then you have the issue of running out of training data #random I'll bbl #random faustian: gemini should be able to do all of that, get your emails too (if on gmail). (I think monthly spending is not an option cause it doesn't track that anyways) #random yes, i hope in a few years we could get some privacy focused AI assistant #random I mean, you still would need an interconnect privacy focused suite of tools for the things you mentioned. #random Its not just the AI assistant #random also when it comes to spending, it would mean for example you have an app (or simply a spreadsheet file) where you do your accounting, and tell your AI "add this entry: XX" #random indeed it's the full suite #random ah, I believe I saw something like that recently. Gonna look for it #random Also it shouldn't be that difficult #random eh, I'll just make it, whisper + a smaller LLM should get us through a long way. #random also yes people went down the generalising route with AI, they shouldn't have. Thats where it failed. I feel like any tool should be specialized instead of generalized. "Do one thing, but do it right always" #random afk (won't recieve any messages) #random test #random test back #random b #random : I am curious if we still get something like "Its not AI, and its current state is stil laughable" from upgrayedd #random : https://www.youtube.com/watch?v=mzdvw_euKlk #random : Live demo of GPT-4o coding assistant and desktop app #random : I wonder how bad it would be after the safety measures are added. #philosophy hello #math hello #random hello #random yo fatback #random nighteous: how we doin? #random pretty good, pretty good. Though I am being very impatient to go out and buy a new rig. #random Gotta wait till the weekend cause a friend of mine is busy. Thought I'd tag along with them. #random a new computing rig? #random yep #random I got a laptop for now, thought its finally time for PC. #random been 3 years now since i was trying to GPU passthrough, finally would be able to do it on the PC. #random I feel ya. I've been eyeing a new system76 laptop for a bit and just have to avoid their website or I'll blow all my money hahaha #random what are you looking at? #random Looking at a ryzen 7 5600X, maybe 7700xt or RTX 3070 (depends which fits the budget on the spot), b550 motherboard, PSU gotta decide, 32 GB DDR4 3200 Mhz RAM #random hell yes #random yea, I am not futureproofing this instead would just convert it into a server rig later on if I ever switch lol #random That's whats up. Now you got me browsing for an updated laptop hahaha #random lol, get something which can run a VM with GPU passthrough #random no need for bare metal windows then #random i'll look into it for sure. #random hey stupid question, do you know where in the weechat documentation I can read the section that explains how to tag someone in a chat?I know it's "NICKNAME: MESSAGE" like I did above, but I cant seem to find it in the weechat docs. #random I mean you just have to type their nick fatback #random or is that an irc feature? #random oh shit. #random why am I so dumb? #random its all good, we both are in the same boat xD "Why am I so dumb?" #random lol #random Im totally new to irc and weechat so I'm trying to read up more on it. Been on an old school kick ever since I came back to emacs for my ide. #random afk (won't recieve any texts for a while) #random sounds good #random test #random test back #random test #random test back #random b #random test #random test back #random : test #random test back #dev gn #random brb rebooting #random test #random test back #random b #random what up #random nm, wbu? fatback #random brb rebooting again ;-; #random hahah no worries #random test #random test back #random b #random yo fatback, yeah what are you up to :D #random just chillin #random doin some backing up and donating #random donating? bucks or hardware? #random bucks. signal, tor, whonix, etc. #random I meant donating what? #random Donating money to projects I use #random ohhh nice #random I've got some peripherals im trying to sell if you have an interest. keyboards, mech keyboards and parts, mice, mice pads.dont want to turn this into a place to advertise but if you got an interest let me know and we can chat over dm. #random naah its all good, thanks :) #random no worries! #random What are your thoughts about using tor over a vpn? #random ahh some say you shouldn't. I believe even tor's documentation says that you shouldn't and explained the whole thing which I haven't read till now. But in my opinion if the VPN is not connected to your name (like mullvad I believe) then it is all good to use it. #random that's kind of where i'm at as well. #random I think the whonix documentation warns against it as well #random did you attend that article club meetup for the philosophy darkfi channel, nighteous? #random well fatback, what do you say then if two documentations warn against a VPN lol #random also I wasn't available last time, but I am looking forward to be able to attend this time #random hahaha im getting the hang of this user tagging thing! #random do you have a link for the next article that's being read? #random Here you go https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #random excellent thanks! #random what time does that meeting start? #philosophy : now Im not sure when it is. If everyone is fine with it, lets do it on 16th thursday. #random Not so sure. #random still on here nighteous? #random test #random test back #random test #random test back #random yo fatback #random sup?? #random you know me, still chillin #random I was curious if anyone here uses nym #random not sure who uses it but someone probably does iirc #random gonna drop now and chill as well #random gn :D #random later! #markets https://x.com/smyyguy/status/1790429003553165393 #random test #random test back #philosophy Hey, I was afk, but tomorrow we have a philosophy meeting #philosophy My bad, it is 16th may #philosophy this thursday #dev : @dasman pushed 1 commit to master: b13e3b81ac: bin/deg: update requirements #markets : https://bitcoin.gob.sv/ #markets : El Salvador + Mempool.space #markets : yeah, bad boy @arm0513.fae90c18, stop breaking things #markets : mirror-bot working, maybe it is just spam protection, no need to accuse me arm0509.39350f87: #philosophy thurs 16th @ 14.00 UTC #philosophy https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #random test #random test back #dev gm #dev gm #philosophy https://www.youtube.com/watch?v=GIULmTprQ6o #markets : yeah mirror-bot seems to be down #philosophy see 15:00, he talks about the depiction of the futures in the contemporary movies #dev : gm #dev : hey #dev : @rsx pushed 1 commit to master: 3b4a64c054: system: StoppableTask, add non-async stop_nowait(), and make Drop call this automatically so tasks are auto-cleaned up on exit. #dev : ^ StoppableTasks now auto-stop on Drop #markets : test #markets test back #dev : nice #dev : https://discuss.libp2p.io/t/how-we-discover-our-own-diallable-ip-address-and-port/219 #random : afk #random : echo #random echo back #dev frieren here? #dev hey #dev got some time? discuss random stuff #dev yes #dev noice, all good otherwise? #dev yep ;) #dev :) ok lets get to it #dev in money contract I see some asserts in the wasm code, which I'm gonna remove #dev it should return an error instead #random test #random test back #random b #dev in src/contract/money/src/error.rs I see some coments about removed codes, why weren't rest codes updated and the comments left there? #dev minor just asking to know if there is specific use case of the code numbers that couldn't be updated at the time or just classic lazyness #dev i can fix that #dev I'm doing it no worries #dev its just they were deleted it but numbers weren't updated #dev vim has a shortcut (ctrl-a) to increment numbers #dev kk yeah just wanted to verify thats the case #dev ok garbage things out, should we move on the auth token stuff we discussed in the past? #dev yep #dev ok let me grab some notes #dev so the main change is that token id is derived by the mint authority, which derives by some combo of secret key, token id blind and a function id, with the rational being that function id can be more that money::auth_token_mint(), in order for it to be versatile and allow other contracts(like dao) to be able to mint their own tokens, correct? #dev no, you are mixing 2 things #dev the token itself does not have a mint authority, it has an auth_parent, which is a FuncId (hash of FuncRef) #dev money::token_mint() can only be called by auth_parent function #dev oh so token_mint is common for everyone, its the auth_parent that changes, and thats defined in the token_id/FuncId #dev the old token minting logic made by braw*do is the mint authority .etc, so it now got moved to auth_token_mint() #dev yep correct #dev ok gotcha now, so the logic pretty much is: as long as auth parent is the correct one(and passes), mint this token #dev s,token,coin #dev then the auth_token_mint() uses the user_data field to store whatever specific data it needs #dev correct #dev maybe the naming is bad #dev nw I don't care about naming as long as its descriptive :D #dev so for example you might have a token minted by a protocol, or a DAO .etc #dev which should define its own auth_parent call right? #dev that's why token_mint is designed this way #dev yep #dev noice now I get the split #dev good design choise #dev :) #dev ty #dev ok now to the nitty gritty stuff #dev TokenId is derived as the poseidon hash of the TokenAttributes{auth_parent, user_data, blind} #dev user data is derived as the poseidon_hash of the secret key public coords #dev user_data is specific to the auth_parent contract #dev the question now is, are TokenAttributes confidentials(like the secret key) or public values that can be shared around securely? #dev the money::auth_parent or all auth_parent calls? #dev > upgrayedd │ user data is derived as the poseidon_hash of the secret key public coords #dev this is only for auth_token_mint() and not in general #dev so just money::auth_token_mint ? #dev yep, you can put anything you want in user_data #dev it's up to the auth_parent contract how this field is used #dev aha so since its specific to money, those TokenAttributes should be confintential, no? #dev about tokenattributes - it may or may not be public, but the default token_mint() assumes it's private #dev but the token_auth_parent is public #dev the token_user_data is private #dev yeah right now I'm talking money, if someone else needs them to be public they should handle accordingly #dev yeah token_auth_parent is the func id, so its always public #dev yep #dev but the TokenAttributes don't have to be, since the token_id is derived by the poseidon_hash #dev so its safe to asume them as fully confidential, no? #dev (blind should also be assumed as private) #dev however for auth_token_mint(), the attributes aren't private #dev the user_data is public too #dev does it have to be? #dev I mean I don't see where its "revealed" as public #dev it doesn't #dev can you point me? #dev yep #dev darkfi/src/contract/money/proof/auth_token_mint_v1.zk:38 #dev user_data = hash(mint_x, mint_y) and both mint_x, mint_y are public #dev ok I see, and thats a good segway to what I wanted to ask in the first place #dev if TokenAttributes can be assumed private, it doesn't make sense to derive the user data in auth_token_mint every time #dev you can just pass the full token attributes, derive the token_id and constrain just that #dev like skip: 34-42 lines #dev well the user_data is a single value but we want to store multiple values #dev unless I'm missing something #dev so it must be a hash of (a, b, c) where those are the values you use #dev for example one contract might have 0 attributes, another might have 5 #dev aha so its more like a full ownership proof of the user data deriviation #dev so the user_data is a single value in the token_attributes #dev otherwise anyone holding the token attributes should be able to generate a mint proof, since they can derive the token_id directly #dev but don't proof full ownership #dev s,proof,prove #dev it's like token_mint() does not have knowledge of auth_token_mint(). it doesn't know if it needs 0 or 1 or 5 attributes #dev and there's no way in zk to have variable arrays in a hash #dev so instead we just store a single value, which is a hash of the attributes used in auth_token_mint() #dev I'm asking a different thing tho #dev did i understand the q properly? #dev ah ok #dev what I'm saying is: since we can consider TokenAttributes{auth_parent, user_data, blind} private, why do we have to derive user_data in the zk proof and constrain it, since we can just directly derive the token_id from the private data pair(poseidon_hash(auth_parent, user_data, blind) and constrain just that #dev like we do in token_mint_v1.zk #dev hence why I mention full ownership proof #dev can you give a code sample for auth_token_mint.zk for how you would do it differently? #dev add token_user_data allong rest TokenAttributes(lines 22-23) and ditch lines 34-42 #dev all three TokenAttributes are assumed private info, so derive the token_id and constrain just that #dev but again this is not full ownership proof, aka prooving you have the original mint secret key, you just proove you know the minting TokenAttributes #dev yep your scheme could also work #dev this is what braw*do wrote, i just ported it to this new system #dev so its more of a: how formal do we wan't our proofs to be #dev it is as you say #dev deriving the user data by the secret key is the full formal ownership proof way #dev you could do it based off the token attrs being private, or based off a keypair #dev I reckong full formal is/should be the best option in terms of proof completness #dev maybe your way is simpler #dev while what I'm proposing is more of an optimization #dev since proof is smaller #dev and its only applicable since in money::auth_token_mint we can safely asume TokenAttributes as private #dev you mean token_mint(), but that's correct #dev yeah XD #dev anyway we can think/discuss pros and cons of each approach and do it in the future, doesn't have to be changed now, as current setup is the full ownership proof, which is the proper/formal way imo #dev next? #dev yep sounds good #dev okay another optimization I see #random : echo #random echo back #dev we are deriving and constraing the coin in both auth_token_mint and token_mint #dev why is that? #dev since calls are dependent on each other, only one of them needs to do it, and the other grabs the coin from them #dev hmm good point lol, why are we doing that? #dev you tell me XD #dev i think it's copy-paste error #dev we also don't need the value commit #dev you need the value commit #dev minted coin value is not public iirc #dev why do we need that for? #dev we aren't spending it, just minting it #dev actually yeah, we also don't really do anything with it in the wasm/rust code #dev nice! #dev we can delete all that #dev so based on your design #dev auth_token_mint should be the full ownership proof along with the coin constraing, aka lines 34-56 #dev we don't need the coin #dev and token_mint should just constrain the token_auth_parent, to verify its the correct one #dev oh constrain it in token_mint then? #dev other way around #dev yep #dev token_mint constrains coin, but auth_token_mint does not #dev ok #dev then in token_mint, do we really need to constrain the auth_parent? #dev yes we do #dev since we derive the token_id by it, then the coin, and constrain just the coin #dev coin constrain also verifys the auth_parent, no? #dev no, it doesn't #dev ok maybe I'm forgetting something #random test #random test back #random fuck #dev darkfi/src/contract/money/src/entrypoint/token_mint_v1.rs:58 #dev this is how the parent caller is constrained #dev but we can remove coin and value_commit from auth_token_mint() because they aren't used #dev and we check the coin's correctness in token_mint anyway #dev ah yeah we need to constrain it since its grabbed by the parent call #dev good catch noice #dev ok so proposed changes are: in auth_token_mint remove 45-63 #dev since the coin is constrained in token_mint #dev ++ #dev gg, we made the proof like half the size with just removing "garbage" lol #dev yeah nice, tyty #dev ok gonna do those changes #random lol #dev I think thats all #random !hackersays #random “Good architecture is necessary to give programs enough structure to be able to grow large without collapsing into a puddle of confusion.” — Douglas Crockford 15[Quote #dd17ec] #dev we can discuss the change from full formal to semi formal(token attrs discussion) in the future #dev oh wait there is more #dev if we remove said lines from auth token mint, then the proof is identical to token_freeze #dev can we also ditch that? #dev freeze can use the same auth proof #dev ah yeah strange #dev it's indeed the same proof #dev freeze doesn't need to be a two-call like mint, so just reuse the same proof #dev yeah it seems like the correct thing to do, just it's technically different uses #dev wait tho #dev if a contract wants to freeze its tokens, with current design it can't #dev so it might makes sense to also make freeze a two-call one #dev [auth_parent, freeze] #dev token_freeze is for auth_token_mint #dev (bad naming) #dev where freeze just constrains the parent_func, like the start of token mint #dev it's not for token_mint() #random test #random test back #dev darkfi/src/contract/money/src/entrypoint/auth_token_mint_v1.rs:89 #dev you confused me #dev apologies #dev look at freeze #dev it doesn't work for token not using same auth as money #dev since its ownership proof is the same as money auth mint #dev so for example dao can't freeze its own tokens, if its user data is not poseidon_hash(mint_x, mint_y); #dev yeah as i said, token_freeze() is misnamed, it's specific to auth_token_mint() #dev ah that what you meant? #dev maybe it should be auth_token_freeze()?? i couldn't think of good names for these fns #dev well the naming is correct #dev the impl is "wrong" #dev token_mint and token_freeze should be the generic calls, operating against some auth parent, like token_mint is doing right now #dev the impl is fine, if a protocol issues tokens, then it should make a contract for freezing #dev i mean it should build its own freezing logic #dev all these coins/tokens are part of money contract #dev only money can freeze them #dev so it should be supported by money #dev like token_mint is right now #dev if i make a custom token, i can add freezing logic there #dev or whatever rules i want to allow or disallow minting of new tokens #dev (it's in the auth_parent) #dev let me think #dev then you must also keep your own freeze tree/flag #dev that's good #dev since each token has its own issuance logic #dev aha thats why you are saying the correct name should be like token_money_freeze or auth_token_freeze #dev so we are defining the freeze logic of the money contract #dev doesn't matter its the native one #dev well maybe auth_token_freeze() #dev auth impliess it can't be used elsewere, so I would avoid it #dev it can't be used elsewhere #dev we can just leave it as token_freeze(), I don't think its that confusing #dev it's specific to auth_token_mint() #dev aah you are sying you are proving the authority to freeze #dev which happens to be the same as token_mint #dev hence the auth_token_freeze naming #dev upgrayedd │ which happens to be the same as token_mint #dev should be: #dev upgrayedd │ which happens to be the same as auth_token_mint #dev yy that what I meant, don't throw my lazyness against me XD #dev ok ;) just being correct with language to avoid confusion #dev yeah true my bad #dev anyway that being said, I reckong we the auth_token_mint changes we can ditch freeze proof and reuse that in the auth_token_freeze call #dev ++ #dev will wait to see if brawndo has any input #dev otherwise bloat be gone #random : test #random test back #random : test #random test back #random test #random test back #dev thx real good chat #philosophy https://youtu.be/aqSYEqJxw18?t=755 #philosophy wtf did andy greenberg become a plant? he says cryptocurrency is a honeypot #dev yo #dev hey there #dev : @skoupidi pushed 1 commit to master: 0008360eb2: contract/money: replaced entrypoints code asserts with errors #dev upgrayedd: Yeah so the freeze proof is only supposed to prove you have authority over the mint #dev So I reckon you could use the same proof #dev brawndo: noice so it can be removed/replaced, along with rest bloat right? #dev I believe so #dev gg will yeet then #dev Nice #dev one irrelevant thing: what was the rational/decision on not having an Unfreeze call? #dev Freezing is used to create the guarantee that no more tokens of that type can ever be minted #dev Allowing unfreeze breaks that promise #dev yeah but ain't freezed token id public? I mean you can now which tokens have been freezed #dev I agree with the rational, just discussing #dev It should be public #dev ah it also prevents flash inflation #dev [unfreeze, mint, freeze[ #dev Yeah once a mint is freezed, the token becomes a fixed-supply token #dev yy good choice #dev so to have an instantly fixed supply you just do a two parts call #dev [mint supply, freeze] #dev Precisely #dev : Hey nighteous #dev : hello there :D #dev : So first it seems we need to implement a more generic CommitDomains, HashDomains, and those OrchardFixedBases stuff #dev : It's the stuff that is used for example here: https://codeberg.org/darkrenaissance/darkfi/src/commit/0008360eb283e1a5b940e78f99e936408d4afeab/src/zk/vm.rs#L98-L99 #dev : `HashDomains` seems to be a trait with a required function Q: https://codeberg.org/darkrenaissance/darkfi/src/commit/0008360eb283e1a5b940e78f99e936408d4afeab/src/sdk/src/crypto/constants/sinsemilla.rs#L93-L121 #dev : Can you already see how this could be implemented more generic? #dev : nope, not right of the bat. Might have to spend some time with it #dev : I think we'd need some kind of generic struct that we fill with the generators' info #dev : Because with the planned changes, we would need to transfer the info out of WASM into the host #dev : So I think a struct containing all necessary fields could be filled with the constants, and then if these traits are implemented on them, it could work #dev : In the simplest way, something in this manner: https://parazyd.org/pub/dev/random/traits.rs #dev : The info transfer could be done with zkas_db_set #dev : okayy so one generic struct for CommitDomains, HashDomains, and OrchardFixedBases (plus any other i guess?). I did read the comments above the struct definition in src/sdk/src/crypto/constants/fixed_bases.rs:71 but couldn't make alot of sense out of it. What exactly is OrchardFixedBases for. #dev : It's an enum providing multiple different generator points that can be used for scalar multiplication #math hello #dev : What we want to achieve is that instead of providing the hardcoded ones, it's more generic #random hello #dev : got it #dev : I'll start a bit of work on this in a new branch and we can continue from there #dev : Just wanna see how the compiler will behave once I make certain changes #random <0515.b13e3b81>: on formal verification of Rust programs with our tool coq-of-rust #random <0515.b13e3b81>: https://formal.land/blog/2024/04/26/translation-core-alloc-crates #dev : alrighty, I'll start whiteboarding and understand what I need to do. #random hey there fatback #dev : o7 #dev : don't forget our therapy app lol #random : 0515.b13e3b81: do you like coq? (hehe had to be asked) #random : i know some guys on libera who told me agda is better #dev frieren: here? #dev : hahaha I shall be using that :D #dev hey upgrayedd #dev two quick stuff: #dev 1. src/contract/money/model/mod.rs::250 the encrypted note should be moved from MoneyAuthTokenMintParamsV1 to MoneyTokenMintParamsV1 where the coin is #dev 2. src/contract/money/src/entrypoint/auth_token_mint_v1.rs::45-55 all these lines can be yeeted, since we don't check anything from the child call #dev 1. no because that note is specific to auth_token_mint() #dev additionally, since the 1 child call check is removed, we can chain N TokenMint calls, all having same AuthTokenMint call parent #dev although the execution order is childer first, parent then, so we will first mint them, then check the auth #dev 2. true and ++ for chaining #dev I don't think that is a problem, since if auth is erroneous, we will ditch the whole tx #dev 1. aha so thats specific for money huh? #dev i think the assert is just for safety #dev since other contracts might use diff enc_note methods #dev 1. is specific to auth_token_mint() #dev yes correct #dev ok then since 1. is wrong, 2. also can't be done #dev here's an example. it is not related to token_mint() but it is relevant. #dev since the auth call has the note, so the 1->1 relation must remain #dev so its good the have the check yes #random echo #random echo back #dev with the dao when doing a transfer, we make authenticated encrypted coins #dev we just don't use any of the child data #random : echo #random echo back #dev currently it is duplicating money::transfer() encrypted coins (which are not authenticated) #dev i think 2 can be done #random la*n reminded me of lainchan, time to check out the board lol #dev 2 can only be done if MoneyAuthTokenMintParamsV1 has a vec of enc_notes #dev one for each child #dev then you assert/check enc_notes.len() == call.children.len() #dev 2 as in chaining multiple mint calls to single auth call #dev ah ic #dev I can do it right now lol #dev because the coin is in token_mint #dev not a big hussle #dev yeah exactly #dev the coin is in token_mint, while its note is in auth_token_mint #dev check bin/drk/src/money.rs::744-753 on how we handle it for example in the wallet #dev to parse our coins #dev nbd #dev we can always make it a vec later on, but just wary about changing things around too much #dev true #dev lets kiss for now #dev o,o #dev i forgot my laptop's password *crying-emoji* #dev nighteous: Keep It Stupid Simple #dev last few days i'm trying to remember #dev oh no #dev frieren, if it is linux then just chroot to reset it? #dev encrypted password lol #dev encrypted disk #dev yeah seems i miss a special character lol #dev my condolences lol #dev time to try gentoo i guess #dev transition to being a gentoolman #dev I'd jump in and say, use void #dev i am using void but they started censorsing packages in their repos for political reasons. i use linux for freedom of my computing #dev gentoo looks good rn https://www.gentoo.org/news/2023/12/29/Gentoo-binary.html #dev lads can't even keep a distro running nowadays without involving politics, jesus. Guess I'll hop onto gentoo as well once I get my rig #dev gentoo is a much bigger and older linux community with a huge wiki, much better than void imo, esp now with binary pkgs #dev oh yeah, void's wiki is somewhat on the good side but ofcourse no comparision to gentoo or arch's wiki. Community sizes cannot be compared lol. #dev https://cdn.hejto.pl/uploads/posts/images/1200x900/0a1acb8e8c1cca439972b1dbc1d85e59.png #dev XD #dev who knew the meme was right all along #dev :D #dev gm #dev sorry about your password frieren. RIP #random test #random test back #random test #random test back #philosophy : hi, is the meeting starting now or did I mix up the times? #philosophy : not ur fault, there was some misinfo and indecision about when to have the meet #philosophy : thurs 16th @ 14.00 UTC #philosophy : ah OK, ty #philosophy : and what is the topic again? is there a specific text? #philosophy : https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #philosophy : thanks #philosophy : I started vol3 btw, enjoying it so far #philosophy : nice #philosophy : yeah it kinda summarizes the ideas of previous texts and is more concrete #philosophy : for sure #philosophy : I found the writing style felt a bit more solid also. I am sure that is influenced a lot by whatever conditions he is in while writing #philosophy : but it seemed more clear and confident #dev lain: managed to make net::tests::p2p_test infinite loop again :D #dev frieren: found a nice rust annoynance #dev src/contract/dao/src/entrypoint/auth_xfer.rs::147 you see here we check the bytes match #dev if you change the MoneyFunction::TransferV1 byte from lets say 0x04 to 0x02, the compiler doesn't detect that enum value as changed #dev therefore not recompiling the dao contract, making tests fail #dev well that seems more an issue with the makefile #dev i have a ton of annoyances with rust like not being able to make a tree structure or having to spam Arc> constantly #dev makefile just calls cargo #dev more of a cargo cache thing #dev since money is compiled first, but for dao, its like nothing changed, since the enum is used, not they actual byte value #dev darkfi/src/contract/dao/Makefile:27 #dev WASM_SRC should specify it #dev specify what? money contract? #dev does it recompile when running the rust command? #dev if not then yeah its a rust issue #dev which rust command? #dev for tree, check sdk/dark_tree code lol #dev yeah arc> is hella annoying #dev #safety_first #dev oh yeah we had the same experience #dev i wrote a tree too (see bin/drk/src/scene.rs) #dev so pointless having to use a usize instead of a pointer #dev gonna check that another time, wanna finish deabloating #dev but ++ on pointer #random test #random test back #dev : @skoupidi pushed 4 commits to master: e3e8e3a8be: contract/money: removed unused coin from auth token mint call #dev : @skoupidi pushed 4 commits to master: aa1c5d80d2: contract/money: shuffled functions enum #dev : @skoupidi pushed 4 commits to master: 8280857a00: contract/money: renamed TokenFreeze to AuthTokenFreeze and removed redundant proof #dev : @skoupidi pushed 4 commits to master: e262b08a85: src/system/condvar: chore clippy #philosophy : HCF, is the writing style different from vol1? (still reading vol1, I am slow ;-;) #random : test #random test back #random : I have no idea what any one is, but maybe GPT-4o can help ... #random : Explain COQ proof assistant is and how it can be compared to agda https://0x0.st/XKhm.txt #random echo #random echo back #random test #random test back #dev : @dasman pushed 1 commit to master: 840d3e745e: bin/deg: fix graphing intertwined merges and forks #random test #random test back #dev gm #random test #random test back #dev gm #dev : gm #dev : you can embed python with restricted access to host (for UI) #dev : so i'll do that #dev : curious me would to know where python is used in the UI and the dependency is so tight that you need to embed it?? #dev : gm #random afk: wont recieve texts #dev draoi: around? #dev yes #dev finally we got the eternal loop cought in the ci: https://github.com/darkrenaissance/darkfi/actions/runs/9100621532/job/25015882362 #dev ah nice one ty #dev glhf with it #dev :D #random test #random test back #markets apparently blackrock can buy Bitcoin from Coinbase and the transaction is recorded off chain?! https://x.com/TylerDurden/status/1790941726544478602 #dev : nighteous: check out how blender uses python to enable plugins #dev : but more specifically for my use case, i want to allow dynamic expressions like: max(50% current layer - 10px, 34px) #dev : max(lw/2 - 10, 34) # where (lw, lh) are locals bound when the expression is evaluated #dev : that way i can specify the width of a UI element which dynamically resizes when the screen changes #dev : https://agorism.dev/uploads/main.rs #dev : with this and a z-index, you can do everything. you don't need layouters and other stuff #dev : > you can embed python with restricted access to host #dev : Care to elaborate more? #dev : yeah this is specific to UI, but before i thought for making the UI you need wasm but turns out i can do it with python #dev : I'm wondering more how the sandbox is implemented? #dev : ah check my linked code there #dev : i can disable __builtins__ and everything really, and then going further there's things like safe_eval, RestrictedPython (from zope proj), and PyPy sandbox mode #dev : idc about resource usage, just about accessing computer resources like network/files. RestrictedPython utility_builtins seems like a good option + we provide our own module for python code #dev : https://restrictedpython.readthedocs.io/en/latest/usage/policy.html #dev : Interesting, didn't know about this #dev : you can still embed python in wasm, so drk using wasm is good, people can optionally use python there but it's running over wasm #dev : UI has different security needs #dev : https://wasmer.io/posts/py2wasm-a-python-to-wasm-compiler #dev : ACTION tried to write a tree in rust without using Arc... regrets it and now gives in #random : test #random test back #dev frieren: here? #dev : Aha so it was the tree in rust for choosing python #dev : no #dev : it's because you want to script your UI, for example i can set the x property to min(lw/2 - 10, 34). rather than catching the resize window signal, the render loop just calculates it directly by evaluating the python code #dev : (should have added the /s my bad...) #dev : or for example: is_visible = "drk.get_property('/ui/some_checkbox', 'is_selected')" #dev : ah ok nw, internet hard to get context sometimes lol #dev : Understandable lol #dev : also interesting: https://github.com/bazelbuild/starlark/?tab=readme-ov-file#design-principles #dev : > Hermetic execution. Execution cannot access the file system, network, system clock. It is safe to execute untrusted code. #dev : a reduced subset of python, there's a rust impl: https://github.com/facebook/starlark-rust #dev frieren: here? #dev hey upgrayedd #dev frieren: yo, changed the order of auth_mint and mint #dev before auth was the parent and mint the child in the tx call #dev : @skoupidi pushed 1 commit to master: f52b4573e9: contract/money: switched auth_token_mint and token_mint execution order #dev but that means mint executed first, then we checked the auth call #dev ACTION head will explode #dev now the auth is the child and mint is the parent, which is fine since we are on a 1-1 call #dev wanted to ask if you have some logic like that in dao #dev using parent-children stuff from the tx call #dev ok great, so i guess we can think of it like auth is the callback passed into token_mint #dev to make sure the execution order is correct #dev yes we do, check auth_xfer.rs #dev let sibling_idx = call_idx + 1; #dev yeah this is checking the sibling #dev here you always assume the xfer_call is the next call #dev it's weird because we don't have a graph, just a tree #dev so the order is enforced #dev trees are graphs wdym XD #dev sry i mean we only have a tree, not a full graph #dev whats the issue? #dev or limitation #dev DAO::exec() can call any function, not just money::transfer() #dev yeah #dev whats the supposed order of these? #dev when you want to make a proposal to call money::transfer(), you actually use DAO::auth_xfer(), but DAO::exec() only allows its child to be DAO::auth_xfer(), so we make money::transfer() the sibling. #dev I also see let parent_idx = calls[call_idx].parent_index.unwrap(); #dev that means auth_xfer is child to exec correct? #dev so the order should be [auth_xfer, exec, transfer] #dev yep #dev i think it's: #dev [auth_xfer, transfer, exec] #dev actually nvm you're right #dev no you are correct #dev transfer is a simpling of auth_xfer and enforced to be on next idx #dev ah yeah because of the spend_hook: the coin can only be spent (money::transfer()) when called by DAO::exec() #dev so the order is [auth_xfer, transfer, exec] #dev and I assume both auth_xfer and transfer have exec as their parent correct? #dev but DAO::exec() MUST have auth_xfer() as its first child #dev yep #dev ok you got it correct here noice #dev so you see the reason why we enforce in auth_xfer() that transfer() is the sibling of auth_xfer #dev yeah makes total sense #dev i can imagine more complex contracts might have a limitation here in the future, in which case we can introduce a more complex graph structure with properties .etc #dev but for now i managed to hack the tree #dev I don't think you need more complex stuff #dev lets see lol #dev each call should have its auth call #dev so the generic order should be: [auth_call, call, exec] #dev yeah but money::transfer() parent must be exec, but exec's child must be auth_call() #dev parents have multiple childs #dev its 1->N #dev so yeah, both auth_call and call have exec as their parent #dev maybe you have a situation where dao::exec() wants to call dao::exec() or sth weird lol idk #dev and exec child are [auth_call, call], in that order #dev ++ #dev oh #dev you can do that #dev its a tree #dev call then has to be a subtree of its own auth_call' and call' #dev true, it's nbd because we: #dev 1. our current needs are fully met #dev so the main tree will become: [auth_call, auth_call', call', exec] #dev 2. we have a proposed upgrade if we ever need more (let me guess... you need more) #dev where auth_call and call' are child to exec #dev and auth_call' is child to call' #dev all properties/order remains the same/enforced one as in normal auth, call, exec #dev true i guess the way to think of the tree is like a filesystem where the directories have owners #dev exactly! #dev check src/sdk/src/dark_tree.rs::855-867 #dev but then when i think of token_mint calling auth_token_mint, it's like doing: token_mint(auth_token_mint__callback), and then token_mint calls auth_token_mint__callback() on completion #dev you see pretty much expands like file system folders tree where on top you have /, then /dev,/proc etc.. etc #dev idk maybe overthinking too much #dev yep i checked this code, it's nice and simple #dev my thinking is: we have a mint which is depended on an auth, auth is not a callback in that case, as it should always be checked first #dev unless I'm missing how you use the term callback #dev I use it as in case or failure and/or after execution #dev s,or,of #dev ah wait, nvm your way is correct actually #dev it matches the same as the DAO #dev yeah enforced order #dev I reckon it becomes confusing when flattening the trees #dev you are now officially graduate of anonymous engineer, congratulations #dev since then you "need" to know some graph/tree traversal properties/algos to properly understand whats/why #dev XD #dev lmao #dev were another useles dyploma to hang on my wall? #dev not useless, you can make youtube explainer vids for midwits #dev PHD anon trickery #dev lmao #philosophy : https://boards.4chan.org/sci/thread/16168968 #philosophy : HCF: yeah my preferred one too, i like how definitional and clear it is #markets deki: yikes... my fear they can create paper BTC is becoming true? how can we be sure they are really holding BTC 1:1 and not just printing paper BTC? #markets : deki: I believe all major exchanges have such "offers". Off the chain exchanges. A reputation in the order of millions in an exchange and you get access to that club #markets : Also on my phone so reading the logs and replying to ircd #dev : @skoupidi pushed 1 commit to master: c37618f354: drk: fixed token freezing and added its fee call #philosophy : https://www.youtube.com/watch?v=93Pmkg-lRVI #philosophy : documentary about use of misinf by Mi5 in northern ireland #philosophy : wild stuff #philosophy : you should read The Devil's Chessboard if you haven't #philosophy : they ran a boy's foster home to entrap political figures with child sex, and employed 14 yo catholic girls as "agents" #philosophy : very disturbing #philosophy : these agencies have no scruples #philosophy : the witchcraft psyop they ran in ireland was so fascinating #philosophy : i read ghost wars about the CIA in afghanistan, was v enlightening how they operate #philosophy : draoi link? #philosophy : that documentary also covers it #philosophy : ok, can't watch now but added to my notes #philosophy : basically they made fake satantic ritual sites and spread stories in the newspaper about occult rituals with blood splatters and stuff #philosophy : ah wow #philosophy : eventually a child was actually ritualistically killed, they say it was the intelligence agencies tho #philosophy : fuck #philosophy : *wasn't #philosophy : the common analysis ppl say is basically ireland is a religious and superstitious ppl so they wanted to exploit that and make ppl feel like the world had turned evil #philosophy : the documentary says they would start local news stories and send in fake letters, then encourage big news media to pick up local stories #philosophy : in a round about way to turn them against the IRA #philosophy : and use that to backup their claims #philosophy : they had files on all major politicians in england, and could use that to end their career #philosophy : also says basically everyone in the establishment (including journalists) are dependent on info from intelligence #philosophy : so if intelligence doesn't like you, then you get sidelined and lose power #philosophy : it seems like an almost timeless pattern. basically if you slander your enemy as having inferior culture and are able to cast them as child-killers, then any following violence is justified or even necessary #philosophy : you can think of a ton of examples #random test #random test back #markets yeah I had no idea about this sort of stuff til now :/ #random guess what I got in the mail today https://imgur.com/a/q7KwVlO #random yes I know they're kinda limited, but for something to start off with it's quite good I think (flipper zero if you didn't open the link) #random Canada is talking about banning them, I think Brazil already has lol #random flipper zero is pretty fun #philosophy : hi #random you should get custom firmware. there are a lot of examples on github #philosophy : hi #random yeah I've been searching around, it's got quite the following #philosophy : wonder how many will show for philosophy discussion today, given the uncertainty around times #philosophy : ash: around? #philosophy I gotta go in a few minutes so can't stay for this one #philosophy : hm yeah would be a shame if no one comes #random HCF: any firmwares you like? #philosophy o/ #random I think I used marauder #random basically the one that unlocks additional frequency ranges and comes with custom apps that others have built #philosophy : last week was just 3 of us and 1 person left half way thru hah #random oh noice, will check out that one thanks HCF #philosophy hi #philosophy : lol too bad. hard to coordinate across timezones I guess #philosophy : where is it? here or ircd? #philosophy : i think it could work if we have a fixed time and stick to it, like the weekly dev meeting #philosophy : ++ #philosophy : hi frieren #philosophy defo #random test #random test back #philosophy : wherever is fine #philosophy : yeah fixed time better, i didn't even know it was on until yesterday #philosophy Hey! #philosophy : yeah some people are messaging on ircd #philosophy hey ash #philosophy hey #philosophy I guess we should move here? #philosophy : ok let's move there #philosophy gm all #philosophy where? #philosophy here haha #philosophy https://faculty.cc.gatech.edu/~beki/cs4001/Winner.pdf #philosophy we were messaging on darkirc but more people appear to be on ircd (this channel) #philosophy hahaha #philosophy did ppl get a chance to read this? #philosophy yes #philosophy nice #philosophy Hey I had a huge family problem, barely I could read, my attention got fucked. #philosophy sadly i had a cold, first day i'm better #philosophy and today was v busy #philosophy sorry to hear ash #philosophy But I will listen #philosophy sorry to hear ash, hope everything is ok now all things considered #philosophy thank you very much #philosophy didnt finish the article, got through about halfway #philosophy is there normally a structure for these meetings or do we just jump around for what we found interesting? #philosophy yeah a few things: #philosophy i'll start w an intro and then we can discuss #philosophy ++ #philosophy Hmmm the idea is that the discussion goes in turns #philosophy ++ #philosophy - should be a fixed time, maybe biweekly instead of weekly esp for 20 page articles #philosophy it's biweekly and is 1 hr long #philosophy - a format/structure is advisable #philosophy format is: whoever proposed the text gives an intro and then is the moderator/ asks questions to others #philosophy ok ty #philosophy ty #philosophy one more note: we should just make a variant of meetbot for this #philosophy I suggest to start first with detailing the argument and thesis of the text, then go with the critique if any #philosophy it could say the time, link to the topic, and maybe show who is moderating that week #philosophy Linus Torvalds: “I can’t totally avoid all political issues, but I try my best to minimize them. When I do make a statement, I try to be fairly neutral. Again, that comes from me caring a lot more about the technology than about the politics, and that usually means that my opinions are colored mostly by what I think is the right thing to do technically rather than for some nebulous good” #philosophy this quote was cited in the essay we studied 2 weeks ago and it inspired me to chose the text #philosophy good idea HCF #philosophy thanks for organising these ash, but I have to leave, c-ya's #philosophy "Do Artifacts Have Politics" is the best short overview I know of that explains the complex interaction between technology and politics/ human organization #philosophy cya deki #philosophy Maybe we can use the !topic .. for turns #philosophy it's good because it summarizes key ideas in Mumford and other thinkers and touches on the sentiment expressed by Linus that technology is something neutral that operates outside of politics #philosophy this idea has basically come to define technological discourse and is especially important in crypto #philosophy crypto is an interesting example because it is both expressively political but also tries to use a cloak of amoral/ apolitical narratives as a defensive strategy #philosophy to come back to the Winner text, the crucial point is he indentifies 2 ways in which politics and technology interact in a complex way #philosophy which is a losing strategy cos then you're defensive, and intel then spreads rumours to smear you #philosophy first, political conditions shape technology and technology encodes the political paradigm that it has been created in #philosophy second, technology creates politics by enforcing certain kinds of human organization #philosophy history is shaped by human will and action, but that will and action is within the framework of narratives, paradigms and ideologies #philosophy so technology has a dual nature where it both expresses a prior politics and creates or activates a new one #philosophy i think Winners text is a good framework for analyzies these different aspects of the relation between technology and politics #philosophy draoi: It's like a feedback loop #philosophy ash: care to elaborate? #philosophy HCF: i have some more thoughts to share but would like to hear your response to the text first #philosophy It's not a linear causation, it's a circular causation #philosophy ty draoi #philosophy I have a lot of thoughts but maybe I'll just pick one strand to go off of so I don't take too much time #philosophy I guess one theme I found interesting is what I'll call "Occupying the Neutral" #philosophy The 'tech is neutral' reminds of other DarkFi team thought about the 'privacy is normal' memeplex #philosophy Why do people make the rhetorical move toward normality/neutrality? It grants a position of strength #philosophy our culture puts a big premium on objectivity and this is a way to claim that one is being objective and hence reasonable. opponents are derided as antiprogress or superstitious as the text mentions #philosophy this also reminds me of de Beavoir. she has some thought about how masculinity occupies both the 'positive' and the 'neutral' which then makes women as something aberrant/emotional/lesser etc. #philosophy the normality position is a luxury afforded for elite establishment types who benefit from the status quo, but it is not a populist position #philosophy and ties into Ocalan's critiques of logical positivism too, I think #philosophy there's also the rhetoric of "autonomous software" which is connected, the idea that if technology is sufficiently decentralized and machine operated it exits the human realm and becomes like natural law #philosophy so granting strength in some ways - getting money from VCs for example #philosophy yeah I think 'transcending the human' is a whole other can of worms and also doesn't hold up #philosophy for example political strategies: sophistry, using the levers of intel agencies and mainstream media, vs guerilla campaigns, populism, rallying the mob #philosophy I like that the text forcefully states that technology contains the result of human decisions and goes on to shape them. it seems obviously true to me #philosophy HCF: i like the point about superstition vs reason #philosophy there is refence to removing 'hierarchy' by bringing in technology, which misses the point, it doesnt remove hierarchry, it just adds an extra step #philosophy yeah technology is actually very superstitious in many ways. I'd recommend people look into Techgnosis by Erik Davis for thoughts on this #philosophy when people tell me 'tech is neutral' I always think about an execution device like an electric chair #philosophy it's very difficult to make the argument that this is neutral #philosophy i read a text recently where it spoke about scientific positivism emerging from the witch trials, and basically said a Truce was drawn up between the Church and the emerging world of science that said if scientists promise to leave spiritual matters to the Church then they won't be burned at the stake #philosophy now it feels like crypto is being punished for violating the Truce #philosophy Techgnosis sounds really cool haha #philosophy hm do you think crypto has much to say about spirital matters though? I think AI, for most, raises spiritual topics more often than does crypto #philosophy i guess i use politics/ spirituality/ morality as terms interchangeable #philosophy techgnosis is super fun. he also comes from a tradition of writing magazine articles so his writing is punchy and readable #philosophy ah ok #philosophy *interchangeably #philosophy then yeah I'm with you #philosophy I guess I was thinking metaphysics moreso than morality but I see what you mean #philosophy it's interesting how in the tornado cash case, they were arguing that the technology is neutral and automomous, but the court called BS and said it's a political technology that has designed with the express aim of given absolute anonymity #philosophy so it feels like this defensive posture is failing/ falling apart #philosophy did the court say it's political? i didn't realize that #philosophy pretty much in the recent texts that came out yday #philosophy oh #philosophy i heard similar about the silk road #philosophy apparently the judge gave a detailed critique of the claim it reduces violence #philosophy worth a read, tangental to the Winner text but relates to this idea of crypto being punished for being expressly political #philosophy that case is interesting because they also alledgedly controlled the front-end UI and I think that ended up hurting them #philosophy saying it reduces street violence, but the real violence occurs at the highest level between cartels #philosophy and silk road therefore increases violence #philosophy ash: about the feedback loop, i think it's kind of a open spiral rather that a fixed loop, given the social effects technology produces can be unpredictable #philosophy was interesting cos then journalists were swyed by that argument and started shilling the counter-narrative #philosophy Loved the neutrality point, that is, neutrality rethoric is used as a means to hide power and politics. Remembered a text that I read from Nancy Frazer, that the idea of citizenship and public affairs can serve as a means to hide class differences between people, and dismiss any reivindication with anwser: "Well are all equal". #philosophy agree draoi: #philosophy https://x.com/L0laL33tz/status/1790385855556698448 -> analysis of tornado cash (end of defensive neutrality) (unfortunately can't find a breakdown that's not on twitter) #philosophy "Well, we all are equal"* #philosophy ash also the boundaries of citizenship are a huge factor in that. depending on what time period and place you're talking about, that excludes immigrants, slaves, women, people who do not own land, people of the wrong race, indigenous people, and so on #philosophy Winner: "It is characteristic of societies based on large, complex technological systems, however, that moral reasons other than those of practical necessity appear increasingly obsolete, "idealistic," and irrelevant. Whatever claims one may wish to make on behalf of liberty, justice, or equality can be immediately neutralized when confronted with arguments to the effect: "Fine, but that's no #philosophy way to run a railroad" (or steel mill, or airline, or communications system, and so on)." #philosophy That's right. I think that the observation apply to the modern times mostly. In the past things as humans rights or dignity didn't existed. #philosophy the neutrality argument is terrible because it's a) morally bankrupt b) blind to its own paradigm #philosophy a lot of tech ppl today (incl. philosophical types) will say that technology is inevitable and you can't stop surveillance dystopia etc #philosophy this is such lazy thinking #philosophy well it's that sort of capitalist realism thing or whatever it's called. mark fisher's thing #philosophy basically that it's very difficult to imagine a non-capitalist world which is also a highly technical world #philosophy i like this quote from frieren above: "history is shaped by human will and action, but that will and action is within the framework of narratives, paradigms and ideologies". saying that technology is apolitical is being totally resigned to the paradigm and basically giving up on the future/ our ability to change the paradigm #philosophy what about the soviet union, they were pretty good in tech #philosophy and so people think it's a straight arrow that's inevitable. I think that's the root of a lot of the capitalist flavors of accelerationism #philosophy bulgaria was strong too #philosophy in fact most tech progress like semiconductors was driven by large scale coordinated action, often with state involvement #philosophy fair I guess I would think that capitalism entails complicated technology, but not necessarily the inverse #philosophy (not arguing for states) #philosophy i think it also comes down to the question of free will and agency and whether ppl believe they can shape the world or if they think it's all mechanistically preordained. some of accelerationism is hypersitional, i.e. you can hack the future, other strands believe the future is hacking us #philosophy yeah good point #philosophy my feeling is that most people fall into the fatalistic mode rather than the hyperstitional mode. but curious to know if others disagree #philosophy I would say most people I talk to feel very little agency. instead they are caught in many compromises or just try to sort of forget the present and future #philosophy yeah i think fatalistic mode is v characteristic of our times #philosophy yeah, it's sad #philosophy one of the reasons I like DarkFi so much is that it is positing an alternative way. it has an overall generative tone #philosophy ++ #random test #random test back #philosophy contrast this with rhetoric around climate change, something I think is very important. however almost all of the discourse is apocalyptic and I worry that's a fatal error #philosophy because for most people I think that has a depressive effect rather than a motivating one #philosophy "why bother?" #philosophy it's true #philosophy and so they move into hedonism or another kind of fatalistic response #philosophy it's true as fuck #philosophy it's weird how people are psyoped by false ideologies #philosophy agree, feels v fatalistic, but it seems to be a manufactured sense of 'end times' #philosophy there was a guy telling crypto people you can't change anything, it's all a wet dream for nerds and everybody was nodding in agreement #philosophy honestly couldn't believe people thought this dumbass was wise #philosophy but it's true, people copycat and that's how intel agencies psyop the people #philosophy like the satanic rituals in ireland #philosophy and i think thats very much a sympton of pod life #philosophy people continued it long after the agencies stopped. they just had to give the initial push #philosophy it became self fulfilling #philosophy idk if it's manufactured exactly. a lot of these threats are really grave. but if your goal is to fight that, then I think fatalism or apocalyptic rhetoric is a tactical mistake #philosophy i have a suspicion the attacks on crypto are largely manufactured rn #philosophy a lot of the dislike doesn't seem genuine #philosophy Can I share a family refection about this? It is almost synchronous with the feeling here #philosophy go ahead ash #philosophy yep #philosophy there are real threats, but the direct effect they have over your life are magnified to be much larger than they really are to you #philosophy honestly i wouldn't have said so a week ago, but it's so weird seeing the last 2 andy greenberg interviews where he's flipped #philosophy - he's hardocre shilling chainanalysis #philosophy - says crypto cannot be anonymous #philosophy - says hard crimes / bad things, ross did violence .etc #philosophy - lastly heavily implied bitcoin is an NSA op #philosophy This individualism that is pervasing the minds of people (i don't want to take responsability with this), which is being manifested as apathy, fatalism, conformity, powerless is a symptom of a sick society #philosophy he didn't state the last thing, but he kept going on about how satoshi is anon to all these schizos #philosophy so hearing that made me veeery suspicious they got him, or at least he's a useful tool of the agencies #philosophy the 2nd point is an outright lie and misinfo #philosophy ash: what you wrote reminds me of Ocalan #philosophy does anyone have a suggested reading for the next meet? #philosophy And in principle it shows that people have been taught to be slaves, our "freedoms" is false one and in reality people are within a subyugation framework that is so subtle that they can't see it. #philosophy yes I think when people lack a sense of meaning or feel incapable of acting in a way that is meaningful for them, it results in a very literal sickness #philosophy In the school of my brother there were cases of cyber bullying and robbery, and the parents are activating the protocols, suggesting to put camers, even locks on students lockers. But no one wan't to realize that they are part of the problem #philosophy SIN: as you said tho the overton window has shifted #philosophy the elites have overplayed the sophistry card and now it's backfiring on them #philosophy unfortunately charlatans have taken the reigns #philosophy draoi I will try to think of ideas. nothing is coming to mind immediately for something that is online and short #philosophy influencers on twitter use the language of 'radicalism' or 'populism' to get elected or gain mindshare, just sprinkle some comments about jews .etc #philosophy Their indifference is a form of apolitical attitude that is creating this situation, where at we have to do is stop the school and talk this violence until and take collective responsability #philosophy its become the standard playbook now to be "based" #philosophy And my medicine to this problem to myself i have found it is on the root of anarchism #philosophy with this question #random test #random test back #philosophy In essence we are free beings, what is the power of freedom? #philosophy Take a moment to recognize your liberty #philosophy please #philosophy and awnser the question #philosophy i read will to power recently and it's an amazingly rich and provocative text, one of the things nietzsche says repeatedly is to stop condemning the world, but to celebrate and affirm it in all its shadows and complexity. he complains about the priests with moral principles who condemn the immorality of the world and want to create a new world. to truly affirm and celebrate the world we must #philosophy overcome it, and this is the essence of freedom #philosophy i have a proposed text if no one else does #philosophy but better someone else leads the next meet #philosophy if poss #philosophy let's wrap up #philosophy i would propose this text just cos it's on the same theme but weirdly i've never read it: https://web.cs.ucdavis.edu/~rogaway/papers/moral-fn.pdf #philosophy if I can make the meeting, I don't mind taking on the moderating role for the text draoi #philosophy and propose to meet again on the 29th at 14.00 UTC, and to keep to the same day/ time from now one (wednesday every 2 weeks at 14.00 UTC) #philosophy It would be good to examine the question of liberty and power in a small session? It's key to this problem. #philosophy i suggest #philosophy ash: if you have a text on this please share, otherwise Ocalan's vol 3 reflects a lot on this #philosophy gtg #philosophy : gm #philosophy thanks everyone for coming #philosophy o/ thanks everyone, this was really nice #philosophy : hey #philosophy We just need the question #philosophy : Thank you for sharing article. Found it relevant to DarkFi and has the potential to serve as a framework for discussing how we can address the political and ethical implications of its use, aiding responsible integration into society. In addition, the article raises considerations that could be beneficial for the project to examine further. #philosophy As socrates proceed always #philosophy : Below is a list of questions inspired by the article for further exploration: #philosophy : https://codeberg.org/calm/share/src/branch/master/do-artifacts-have-politics.md #philosophy : oh nice tysm calm #philosophy academic text is a help, but no necessary #philosophy sure if you want ash #philosophy we can do that next session #philosophy : nice calm #philosophy Ty friends, is very important to take conscioussness of our liberty #philosophy : HCF, draoi: thank you #philosophy Since it is just a question, the only job here is to make an introspective work... a spiritual work in some sense. In that sense, since is just a question, maybe we can do the meeting next week. Then move onto text as normally. #philosophy ok thank you #philosophy glhf all #philosophy o/ #philosophy u2 frieren #philosophy : calm: maybe you saw we just finished the meeting over in ircd #philosophy #philosophy Ty all #philosophy : i suggest to read over these points and have them inform the discussion in 2 weeks, which ash will moderate on freedom and power #philosophy : (i mean calm's points) #philosophy great discussion all #philosophy If all agree, it would be awesome #philosophy : draoi: unfortunately, was not able to join until now, will keep the questions in repo in case anybody is interested, thank you again for sharing article, found it insightful #philosophy : <3 #philosophy Yeah, great session draoi, I think that we are touching the deep thing #philosophy Fatalism, apathy, conformity, "realism", apolitical are manifestations of the same problem #philosophy that we all noticing in the wolrd #philosophy ty #philosophy bye #philosophy : thank you everyone #philosophy just scrolled through the conversation. Well done everyone. Very interesting. #random hello #math hello #dev > ask how to do thing in ##rust #dev > "oh trust me you don't want to do that" #dev ACTION :/ #dev like clockwork #random test #random test back #random b #random : test #random test back #dev lmao #dev let me shoot my foot ffs #dev lmao its probably not possible thats why they say it /s #dev some zoomzoom read the /r/rust and now will school YOU on what is good programming #dev "Sir I totally agree with your advice about good programming, but, the program not running is definitely a bigger problem" #dev frieren here? #dev hey upgrayedd, just finishing, it's my bad time... imma crashing #dev frieren: gonna be quick #dev : @rsx pushed 1 commit to master: 199485d071: wallet: impl properties with PY_EXPR subtype which are dynamically evaluated every frame. #dev context: saw a dummy check in swap, namely: src/contract/money/src/entrypoint/swap_v1.rs::118-124 #dev frieren: Some spend_hook stuff is unclear, so help us out :) #dev that check was checking the spendhook being zero, right now it does something else, witch is bloat #dev the question is: since dao needed a special auth_xfer for enforsing the spend hook for transfer #dev does it also needs a special auth_swap to enforce the spend_hoof for swaps? #dev and to generalize even more: every contract needs the special auth call to be able to use native calls like transfer and swap? #dev yes correct #dev it needs a special auth_swap #dev ok so those lines are useless and will be removed #dev altho you could extend auth_xfer using a tag for example #dev well nvm ignore that last line #dev ACTION realizes we have smart contract functions for this very reason #dev frieren: My thinking is that if we need an auth_* for all kinds of stuff, it's a deep rabbit hole #dev yep #dev Since it ends up needing the DAO contract maintainer to implement an auth for anything #dev not the dao contract maintainer #dev anybody can make an auth module #dev for example if i make a streaming payments api, i might publish a function so it can be composed with daos .etc #dev I see #dev so the logic is forward is non native contracts implement a special auth_* call if they want to use native stuff #dev correct? #dev frieren, brawndo: ^^ #dev wdym by "the logic is forward is non native"? #dev error: parsing english #dev the logic forward is #dev XD #dev don't correct my english, I have zero respect for this language #dev esperanto? #dev si #dev saluton, kiel vi #dev anyway jokes aside, we all clear? #dev > upgrayedd │ so the logic is forward is non native contracts implement a special auth_* call if they want to use native stuff #dev so the old DAO model didn't need auth modules, but it was not composable #dev greptile said it should be able to call any smart contract function #dev but technically if you just want to call money::transfer() then you don't need the auth module #dev the auth module is only required if when you spend stuff hold by the contract #dev I think #dev so you enforce the spend_hooks #dev you don't need the auth_module if DAO::exec() if it is specialized for money::transfer() (not generic) #dev then you can put the auth_xfer() logic directly in exec() #dev but if you do that, then it's not generically composable with other contracts - and so then you cannot call any function #dev I think I lost you here #dev by splitting the logic which is specific for money::transfer() from DAO::exec() and putting it into DAO::auth_xfer(), then DAO::exec() can work with other contracts such as DAO::auth_swap() #dev yeah what we are saying is that the special auth_* calls are needed when the contract needs to execute native stuff for the contract holdings #dev you should get a wacom tablet so we can do therapy together #dev like for example drk store in the contract, or contract token liquidity #dev shit like that #dev not native stuff, any contract call #dev therapy <3 #dev DAO::exec() can call any smart contract function #dev frieren: Consider the scenario where we want to execute a swap with coins from the DAO #dev So it means that the swap tx would also have to contain a DAO::exec() ? #dev yes #dev darkfi/src/contract/dao/src/model.rs:144 #dev pub auth_calls: Vec, #dev upgrayedd: So that's what's missing ^ #dev yeah so native calls shouldn't care about the spend_hook #dev since the enforcment is moved to the contracts creators #dev to have the corresponding auth calls #dev Hopefully :D #dev it goes both ways, native coins must have the spend_hook enforced #dev and the spend_hook is DAO::exec() which checks the children match the auth calls set in the proposal #dev check these lines darkfi/src/contract/test-harness/src/dao_propose.rs:111 #dev wdym native coins must have the spend_hook enforced/ #dev ? #dev this is the children for DAO::exec() #dev its not checked anywhere in transfer #dev yes it is #dev can you point me? #dev darkfi/src/contract/money/src/entrypoint/transfer_v1.rs:61 #dev we pass it directly to the proof #dev Yeah so the assumption is that the coin is built with the proper spend_hook #dev oh #dev that's the only way the coin is considered in the DAO's treasury #dev So it can't be cheated as long as the proof proves it #dev and since swap uses the same transfer call, its also enforced there #dev Swap is a different call than transfer #dev btw did you see the dao_propose.rs:111 above? #dev brawndo: same metadata call #dev ah yes #dev ACTION is glad for the extra eyes #dev ACTION bows #dev freiren: which dao_propose? #dev give full paths, I'm tired XD #dev yes i did #dev frieren │ check these lines darkfi/src/contract/test-harness/src/dao_propose.rs:111 #dev frieren │ darkfi/src/contract/dao/src/model.rs:144 #dev anyway i'm going to lay down... i'm sweating/headache (last day of a mild cold) #dev I probably missed those lines #dev yeah I saw how the dao transfer works when we had the other talk XD #dev this is the auth calls #dev yy I know #dev : @skoupidi pushed 1 commit to master: c3433efe2e: drk: cleanup on swap aisle #dev ok I'm also done for the day #dev brawndo, frieren: thanks for the talk :D #dev peace out #dev np always a pleasure #dev cya o/ #dev cya gn #dev gn o/ #random echo #random echo back #random : echo #random echo back #random test #random test back #philosophy : join #dev #random : test #random test back #dev gm #dev : gm #dev : gm #dev : o/ #dev : wtf these benchmarks make no sense: #dev : 226.065µs - facebooks starlark (precompiled ast, just running the expr) #dev : 99.427µs - pyo3 (not precompiled) #dev : 1.052µs - my own s-tree expr eval #dev : oh i guess with pyo3 i'm not counting initializing my locals, in which case it becomes 6ms #dev : gm #dev : darkirc been running rock solid for a while now on my end #dev : that's good, few updating incoming tho #dev : *updates #dev : i did notice i've been running both darkirc and ircd in patchy internet and the darkirc reconnect is much more reliable #dev : nice #dev : gm, can please let me know if anybody has insights on any of the following: #dev : 1. is there a max size limit for the number of signatures a transaction can have (tx.signatures.len())? #dev : 2. is there a max size limit established for serialized transaction data (i.e., serialize_async(tx).await.len())? #dev : 3. are there max size limits for the following darkfi::zkas::decoder::ZkBinary vectors: constants, literals, witnesses, and opcodes? #dev : thank you in advance #philosophy : https://x.com/peter_szilagyi/status/1791088531164570012 #dev : ^ these limits are not yet set, and they are checked by the consensus code #dev : so the compiler .etc doesn't have to worry about them #dev : hey brawndo, any idea how to resolve this: https://agorism.dev/uploads/foo.rs.txt #dev : the commented line gives me: #dev : error[E0275]: overflow evaluating the requirement `&mut Vec: std::io::Write` #dev : = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut ...` to implement `std::io::Write` #dev : it's because of &mut s, then recursively it becomes: &mut &mut s .etc #dev : i'm not sure how to encode 2 values since they both need to take ownership of s #dev : i guess i must use an intermediate buffer? #dev : it works if i do: let mut buff = vec![]; len += lhs.encode(&mut buff)?; buff.encode(&mut s)?; #dev : Sec need to reproduce #dev : let me give you a test, one sec #dev : i have it handy #dev : The .txt you gave me compiles #dev : yeah one sec #dev : btw without looking much, maybe you ran into an issue that I mitigated in async-serial #dev : https://codeberg.org/darkrenaissance/darkfi/src/branch/master/src/serial/src/async_lib.rs#L464 #dev : Note how here I put `s: &mut S` instead of `mut s: S` #dev : brawndo: https://agorism.dev/uploads/recursive_encode.zip #dev : check out src/main.rs, uncomment the line to see the error #dev : buff not found in scope :P #dev : change to s #dev : len += lhs.encode(&mut s)?; #dev : anyway nbd, cos i can just do the workaround #dev : Gimme a bit #dev : frieren: Here, patch darkfi-serial with this and see if it helps: https://termbin.com/72de #dev : In cargo.toml you can: darkfi-serial = { path = "/home/user/darkfi/src/serial" } #dev : You also need to do minor modifications in your main.rs, but the compiler should tell you #dev : ++ #dev : it works, should i switch to this? i think maybe SerialEncodable .etc is broken #dev : i also have the same issue for decode too #dev : It's not a full patch #dev : But ok if it's fine, I can patch everything #dev : What do you reckon? #dev : do you think it's better? i don't see any downside #dev : seems an improvement if it allows recursive serial/deserial #dev : Yes I ran into this when I was doing the async-serial #dev : And chose this approach from the patch, you can see in the codeberg link I pasted above #dev : I'll make the switch then #dev : yeah especially since i can't think of a workaround for Decode #dev : i guess it's impossible without being able to rewind the decoder #dev : Where? #dev : 1 => Self::Add((Box::new(Self::decode(&mut d)?), Box::new(Self::decode(d)?))), #dev : mm #dev : to workaround this, you'd need to read the bytes from d without capturing it, then advance d, but then you need to rewind it #dev : If that doesn't work, you could just make the boxes outside of that scope #dev : let lhs = Self::decode..., let rhs = Self::decode... #dev : it's not the scope, the issue is Self::decode(&mut d) is recursive so you get &mut &mut &mut ... d #dev : ok, need a few to make the patch and then we can see what's up #dev : ah i guess it would work actually if i make an internal function like Self::decode_ref() which accepts d: &mut D instead of mut d: D #dev : ok that worked #dev : fn decode_ref(d: &mut D) -> std::result::Result { Self::decode(d) } #dev : 1 => Self::Add((Box::new(Self::decode_ref(&mut d)?), Box::new(Self::decode(d)?))), #dev : brawndo: ^ #dev : oh nvm i had my code commented #dev : it doesnt work lol #dev : @parazyd pushed 1 commit to master: f87382e856: serial: Use mutable references for non-async {en,de}code functions #dev : okay #dev : frieren: What doesn't work rn? #random : test #random test back #dev : brawndo: https://agorism.dev/uploads/recursive_encode.zip #dev : one sec #dev : oh nvm it works! #dev : thanks a lot #dev : ah great #dev : yw :) #dev : As a bonus now both the async and non-async functions use the same type of reference #dev : >mr. proper #dev : ACTION "dwjdwjdwjdwjdwj..." #dev : well dwdwjdwdwj #dev : wut #dev : lmao, you didnt have to do but thanks a lot #dev : ^ vim actions #dev : hahaha #dev : vim macros rock #dev : Then I just spam @ #dev : you should try mapping Q = @q, it's a gamechanger #dev : :D #dev : Gamer bindings #dev : shiiet it werks #dev : yeah recently i also mapped z to Plug 'chaoren/vim-wordmotion', and i like that a lot #dev : FOO_BAR or FooBar then z will jump to the B in both of those #dev : In vim there was another nice one #dev : Something very similar to vim-sneak but not vim-sneak #dev : Now in vis I use sneak #dev : also cargo lrun with entr is good, the default cargo run is too spammy with warnings #dev : I think it was this: https://github.com/easymotion/vim-easymotion #dev : oh cool i need to try sneak #dev : But sneak is gud too https://github.com/justinmk/vim-sneak #dev : Yeah it's like a mouse really #dev : Pretty useful #dev : btw one thing to keep in mind that this serial change required #dev : https://codeberg.org/darkrenaissance/darkfi/commit/f87382e8564c27d6b1ee95bbc660410ae72511d8#diff-0ab50fe3ac8f6eeb4cf43451e58545366407dc27 #dev : In sdk/note.rs it required a cursor because it couldn't work on the slice directly #dev : Also here I'm not sure if it's undefined behaviour or it goes in order: https://codeberg.org/darkrenaissance/darkfi/commit/f87382e8564c27d6b1ee95bbc660410ae72511d8#diff-5037e295ab612d4435c53b37d585c77027c5b784 #dev : When you have a tuple of (Decode(), Decode()), is lhs done first? I guess so #dev : biab #dev : o/ #random afk: won't recieve texts for a while #dev : @rsx pushed 1 commit to master: 76d1ec7a04: wallet: add an expr engine for fast evaluation of exprs inside render loops #dev : yeah tuples should be ordered by lhs first #dev : what is undefined behaviour there? the commit is long #dev : oh ic you were linking the tuple nvm, it looks good #dev : The links would take you to the location #dev : Yeah #dev : i finally got this committed https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/darkwallet/src/expr.rs #dev : Nice #dev : How is this gonna be used? #dev : so for example you want to put something on the screen which resizes dynamically #dev : for example a box which has a margin of 20 pixels would be: x = 20, w = layer_width - 2*20 #dev : having to catch the resize event and then change the property is cumbersome, it's much easier to put code there which is evaluated in the render loop #dev : python is like 100 ms, whereas this is 1 microsec #dev : check out darkfi/bin/darkwallet/gui/__init__.py:273 #dev : draw() #dev : code = [["as_u32", ["/", ["load", "sh"], ["u32", 2]]]] #dev : api.set_property_expr(layer_id, "rect", 3, code) #random test #random test back #dev : *python is 5 ms (just checked) #dev : my code: 2.524µs #dev : ah I see #dev : b #dev : @rsx pushed 2 commits to master: 633aeb447a: wallet: instantly show the window as priority #dev : @rsx pushed 2 commits to master: 62994d050b: wallet: deprecate pyo2, replace with rustpython #dev : why did i write deprecate, i meant remove lol #dev : frieren: Hey, wondering about some stuff regarding transactions, signatures, and fee stuff #dev brawndo: please talk here XD #dev : If we would add 3 items to the Transaction struct: fee_call, fee_proof, fee_signature #dev brawndo: no need to add items #dev we can filter directly from the existing vecs #dev : Would this allow supporting anyone to attach a fee payment to an existing transaction? And do you see any attacks/issues with this approach? #dev : In practice, person A can create a tx with some calls, and sign them - without signing anything related to fees #dev : And person B can append a fee call and sign the entire tx - plus the things related to fees #dev upgrayedd: Yeah also true #dev : (see ircd #dev too) #dev upgrayedd: Probably better that way too, to preserve any call order #dev yeah exactly, and minimal changes upstream #dev we just change the src/tx/mod.rs::verify_sigs() logic #dev What if the fee payer needs to merge some coins in order to pay the fee first? #dev and the signatures attachgment during txs creation #dev Would they also be able to append that Money::Transfer? #dev yeah they would #dev How would the sigs for that be verified? #dev actually wait no #dev we still have the consuming problem #dev (delayed tx after modified merkle tree) #dev aha #dev lets assume we don't have that issue #dev the flow would be exactly the same, the user creates a transfer call merging their coins and sign that(along with rest calls of the tx), and then create a fee call using output of that call, and sign the full tx calls + fee call #dev so what we are discussing is decoupling the fee call signature #dev But the previous calls would have invalid sigs that way #dev where in a Transaction, every other signature must be over the tx calls excluding fee, while the fee signature must be for everything #dev oh yeah true #dev to do that, each signature must be only for its corresponing calls #dev if we do that actually, we directly support that without extra hustlle #dev Which breaks everything since it becomes trivial to tamper ;) #dev yy ik #dev (was gonna right, BUT #dev ok so the only thing is either everyone signs everything #dev or we just allow the special specific case of Fee to be its own thing #dev aka everyone still signs everything excluding fee, and fee attached signs everything #dev The latter is fine, there's just the issue of it requiring a big enough utxo #dev well we are entering ux teritory here tho #dev but again, unless we solve the consuming problem we can't tackle this #dev True #dev anyway lets wait for frieren input #dev my gun is loaded to make the changes XD #dev :D #random : Is 2024 The Year Of Zig ? https://www.youtube.com/watch?v=DucriSA8ukw #dev : @skoupidi pushed 1 commit to master: 4661d797cd: drk: attach-fee added and fixed otc swap #dev : @skoupidi pushed 1 commit to master: 0243560e1f: drk: added fee call to deployoOor calls #dev hey just catching up #dev bitcoin uses SIGHASH flags for this: https://learn.saylor.org/mod/book/view.php?id=36341&chapterid=18919 #dev ALL, NONE, SINGLE and ANYONECANPAY #dev > Bitcoin signatures have a way of indicating which part of a transaction's data is included in the hash signed by the private key using a SIGHASH flag. The SIGHASH flag is a single byte that is appended to the signature. Every signature has a SIGHASH flag and the flag can be different from input to input. #random test #random test back #dev so for example, i can imagine a flag which says "sign all calls before this one, but none after" #dev frieren: yes but is it safe? #dev the main thing signatures protect against is stopping people modifying the tx i created, so if i want to then say "this tx CAN be modified" then that's on me #dev namely if i say "calls can be APPENDED to this tx" #dev (hence this sig only signs calls before and including this one, but none after) #dev that way people can add things like fee calls to the tx #dev aha so moving the responsibility to the tx creator(user) #dev yep they are responsible #dev I wouldn't agree on that statement XD #dev it could even be a list of call indexes which it is signing #dev (or a list of ranges) #dev I still think the best: everyone sign everything #dev and only allow the fee call to be an exception #dev my rational is: every party of the tx decided collectively to delegate the fee, therefore they must all have signed everything excluding the fee, then the fee must have signed everything including the fee #dev ensuring the fee payer didn't mess up the tx #dev other use cases, like allowing part signing, seems a bit dubious to me #dev but happy to read/get schooled on its safety #dev i agree in general you should sign everything #dev i just don't like making weird exceptions for specific calls #dev well yeah hence why we mentioned entering ux territory #dev always my approach is to look for the most general mechanisms that fit all usecases #dev fee call is added in all money(and deployoOor) calls in drk #dev so I tested everything and it works with fees #dev only "weird" case is the otc #dev so the proposal using the flags to indicate which parts of the tx that is signed would allow appending fee calls #dev were you have to do a double round of coms to sign everything #dev yeah but otc you build the entire tx then sign so it's not related to this #dev init -> join -> sign -> attach fee -> sign -> sign #dev init -> join -> attach fee -> sign -> sign -> sign #dev if we allow the fee exception, it can become: init -> join -> attach fee -> sign -> sign #dev first we construct the tx then everybody signs #dev well join and attach fee also sing #dev hence why I excluded #dev yeah we said the same thing :D #dev A: creates tx with her input and output #dev A: attachs a fee call #dev B: adds his input and output #dev B: attaches a fee call #dev A: signs #dev B: signs #dev B: broadcasts #dev only one fee call exists #dev so its attached after everything else is added #dev oh yeah it should be: #dev A: creates tx with her input and output #dev A: attachs a fee call #dev B: adds his input and output #dev B: attaches a fee call #dev wait actually it's correct #dev there's 2 fee calls #dev no all txs contain a single fee call #dev the order is: #dev A: creats tx with her input and output #dev why is there a single fee call? #dev B: adds his input and output #dev C {whichever between A, B or anyone else}: attaches fee call and signs it #dev A: signs #dev B: signs #dev whoever broadcasts #dev ok #dev for fee related questions ask brawndo :D #dev but the rational is single input, for anonymity #dev iirc #dev ok gonna unwind, cya tmrw #dev yeah we can discuss this in the future not really needed right now #dev glhf #random : test #random test back #random : test #random test back #random test #random test back #memes test #memes test back #dev : @dasman pushed 1 commit to master: b83e2a782f: bin/deg: fix multiple args #dev : gm #markets I have been wondering for a while now, what would happen if BlackRock decided to sell all of the bitcoins that it bought? #markets s/it/they #markets my guess is... the price would go down #markets yeah I know lol, I mean by how much would it be? gonna be ready to buy whenever that happens XD #dev gm #markets the difference would also probably trigger alot of those crypto trader's stop loss order and others would automatically end up selling too? #markets yeah it would definitely tank the price, probably by a lot because it'll likely create some domino effect where everyone else mass sells etc #markets yeah people would prob follow suit and panic sell. and then when they are done... Blackrock would buy the dip they caused lol #markets yeah i don't know if there's an estimate for how much they own #markets Grobby: according to some page on their website (blackrock.com), they hold 276,190 bitcoins #markets https://www.blackrock.com/us/individual/products/333011/ishares-bitcoin-trust #markets ok wow. so what, that's like 18.5 billion dollars. and then probably could find out how many bitcoin are in total circulation, and maybe estimate the price impact if they sold it all #markets or maybe could just find the current btc market cap to generate an estimate #markets too bad btc isn't traded on a dex, could just type in a sell of that size and see what the impact would be. could extimate using wbtc, but I assume there's not enough LP on Uniswap to get a proper estimate #markets ah well guess that's alright, there's like 19 mil bitcoins that have been mined till now so that would be total circulation? I guess so #markets though alot of those might also be in wallets of ancient whales doing basically nothing lol #random brb: won't recieve an texts (rebooting) #random test #random test back #random test #random test back #random b #random test #random test back #dev : hey #dev : sirs #dev hello #dev going to gym will bbl #dev : oh why hello there, good sir #dev nicee #random echo #random echo back #random echo #random echo back #dev : gm #dev : @rsx pushed 2 commits to master: 1369300ba2: wallet: add PropertyStatus.EXPR #dev : @rsx pushed 2 commits to master: 28aaec3bba: wallet: add stubs for plugin subsystem #random test #random test back #dev : hey frieren #dev : around? #dev : https://github.com/rust-lang/socket2/issues/466 #dev : socket2 connect_timeout() is blocking #dev : hey #dev : https://pastebin.com/QrW8Zczm #dev : basically, socket2 connect_timeout() blocks in the case where the timeout is reached #dev : (code sample above illustrates) #dev : so even if we stop the connector, it will still wait outbound_connect_timeout seconds before p2p can shutdown #dev : i didn't write this code #dev : oh ok #dev : the original one was using smol::TcpStream which is async #dev : https://docs.rs/smol/latest/smol/net/struct.TcpStream.html #dev : ahh #dev : i'm not sure why that was changed, would be useful if you find the commit (you could use git bisect) #dev : ++ #dev : ok it's this lib https://github.com/smol-rs/async-net #dev : look at the code #dev : async-net/src/tcp.rs:386 #dev : you can use this https://github.com/smol-rs/async-io #dev : gosh smol is a good proj #dev : ah nice #dev : this is the commit where parazyd added socket2: c417ff9d6450f14028fbe2a0dead1b47f33c9513 #dev : i guess .connect_timeout() is overriding the set_nonblocking() call #dev : i think dial() in Transport should be async #dev : oh it is async #dev : i think this issue is here https://docs.rs/socket2/latest/src/socket2/socket.rs.html#241 #dev : but it's discussed at length on the issue #dev : https://github.com/rust-lang/socket2/issues/466 #dev : draoi: i'm looking at the code in darkfi, where is connect call? i see sth else in transport/tcp.rs #dev : oh nvm ic #dev : ok yeah nice find, this should be fixed #dev : from the issue: "You can call socket.set_nonblocking(true) and then do the poll(2) calls yourself" - i tried doing the first thing but haven't tried manually polling #dev : i think parazyd did this because of TcpDialer::create_socket(), since they/them wanted to set all those options #dev : essentially we have a Socket, and we then want to call connect(), but Async::connect(addr) doesn't accept the socket #dev : addr -> Socket -> ... (out config) ... -> connect -> Async::from(stream) #dev : vs #dev : addr -> Async::connect(addr) #dev : ++ #dev : draoi: i think you shouldn't use .connect_timeout(), just normal .connect() (nonblocking) #dev : i'm looking at async-io code async-io/src/lib.rs:2137 #dev : async-io/src/lib.rs:2166 #dev : async-io/src/lib.rs:1523 #dev : that's what smol is doing #dev : check out this: #dev : /// it is not set. If not set to non-blocking mode, I/O operations may block the current thread #dev : /// and cause a deadlock in an asynchronous context. #dev : async-io/src/lib.rs:679 #dev : thanks, checking #dev : socket2 connect() is blocking tho #dev : if we have a non blocking connect() that's perfect cos we can implement our own timeout easily using futures::select #dev : connect() should not block if set to nonblocking mode #dev : check out this function: async-io/src/lib.rs:1512 #dev : in particular these lines: #dev : this will start connection, but note it is not async. the socket is set to nonblocking and the connect is started: #dev : let socket = connect(sock_addr, domain, Some(rn::ipproto::TCP))?; #dev : then we construct the Async wrapper around socket: #dev : let stream = Async::new_nonblocking(TcpStream::from(socket))?; #dev : ahh bingo #dev : lastly we want to async wait until the socket becomes available so we call .writable() #dev : stream.writable().await?; #dev : ^ so this is how you do async connect #dev : ok i'll try that, thanks a lot #dev : np, if you look at writable(), you'll see it's calling async-io/src/reactor.rs:494, which then calls the platform dependent branches to poll for when the socket is ready #dev : /// Waits until the I/O source is writable. #dev : pub(crate) fn writable(handle: &crate::Async) -> Writable<'_, T> { #dev : (async function) #dev : ++ #dev : 1. sync start socket connect (but do not wait, return immediately), 2. wrap socket obj in async wrapper 3. wait until async obj becomes writable #dev : ty #dev : ++ #dev : afk #dev anyone here like javascript? Or use it regularly? #dev : so fucking weird that dropping a thread::JoinHandle means the thread keeps running #dev : and there's no way to kill a thread in rust #dev : idiots #dev : "killing a thread is not good programming" /s #dev : yeah but not my fault the OS api blocks, or other APIs such as user code could block indefinitely #dev : so I need a mechanism to timeout bad code and kill the thread #dev : maybe by using some system call to find and kill that thread? doesn't sound right to me though #dev deki: nope I don't (I try to avoid it as much as I can and so far managed to write only 10 lines in js lol) #dev hehe fair, about the same for me anyway was just curious if there were any js types here #dev the web was a mistake, https://tonsky.me/blog/js-bloat/ #dev : google chrome uses a separate process per tab which is killed if unresponsive #dev : imagine that rust prevents you doing that #dev : any particular reason for rust not letting you do that? I mean, there must be some logical explanation to that... #dev : wait a second, so there is no parent child relation between threads in rust, that just means zombie threads? as far as my understanding goes #dev this is a good read this site about js-bloat lol #random : afk: won't recieve any texts #memes wow, so true https://x.com/__femb0t/status/1791575756671500364 #dev : yes exactly, it's so dumb #dev : see libera ##rust #dev : i swear they're brainwashed #dev : oh nice https://www.chromium.org/developers/design-documents/inter-process-communication/ #dev : chromium uses processes, not threads and named pipes #dev : nice https://github.com/smol-rs/async-process #dev : smol keeps delivering #dev : i know right #random : https://www.youtube.com/watch?v=EEoQAoEGLhw #random : HBO making a dune series #random : https://www.youtube.com/watch?v=_gP-M5nUidc #random : hmm.. I think I saw the lady - first movie with Christian Bale, before he became famous #random : Polkadot: Creating the Web3 Future | Behind the Code Season 2 Episode 1 (documentary) #random : lol #random : https://www.imdb.com/title/tt0238380/ #random : Equilibrium - 2002 #random : test #random test back #dev : majority of the rust lang users are brainwashed by their favourite influencers #dev : also frieren, can't you do what I suggested? Don't you get a thread id when spawning a thread, could use that to kill it? (not sure though cause I haven't spawned any threads myself) #dev : threads don't have IDs, only processes do #dev : huh... well atleast in python threads do have ids cause I have been logging it. (gimme a second, I am sure I read something about rust thread id too, looking for it in the history) #dev : https://doc.rust-lang.org/std/thread/struct.ThreadId.html > "ThreadIds are under the control of Rust’s standard library and there may not be any relationship between ThreadId and the underlying platform’s notion of a thread identifier – the two concepts cannot, therefore, be used interchangeably" #dev : my bad I was wrong #dev : yeah i'll use processes. I actually already have the code #dev : nicee #random test #random test back #dev : what about this discussion how to kill a rust thread ? #dev : https://users.rust-lang.org/t/how-to-kill-a-thread/96422/8 #random test #random test back #random : test #random test back #dev : checked it out, isn't it related to this javascript+rust? (documentation for terminate_execute function mentioned in the thread does say its for JS) #dev : dasman stopped task (yWx0dR): event graph tool #dev : dasman stopped task (SjJ2OA): event graph replayer #dev : dasman stopped task (kVNZYs): read only key so users can view tasks #dev : dasman reassigned task (FQsM3c): handle darkirc tasks stop to @xeno #dev : @dasman pushed 1 commit to master: 8c455abd0a: bin/deg: drop deg config, and use args instead #random : test #random test back #dev : gm #dev : that discussion also says to make an external process #random : I thought amd would be nice to me but welp, installing rocm is a nightmare on void. people tried to maintain a template for it but turns out it is a nightmare to maintain oof. #dev : gm o/ #random test #random test back #random : test #random : test #random test back #random test back #dev : gm #dev : !list #random : !list #random : !topic foo #random : !list #random : ah interesting, I need to fix this #random : Will do tonight #random : echo #random echo back #dev : @darkfi pushed 1 commit to master: e72751a02b: book: contrib tor section, add info on setting gitconfig name/email. #dev : @darkfi pushed 1 commit to master: aa6cff4f2e: wallet: add a z_index property to control draw ordering of objs #dev : gm #dev : o/ #random : brb: rebooting #random : afk #random cya #random : cya #random : https://www.autoblog.com/2024/05/15/lawmakers-call-out-eight-automakers-for-sharing-connected-vehicle-data/ #random test$ #random test #random test back #random test #random test back #philosophy : wow amazing https://www.youtube.com/watch?v=kIkay6YiIhs #philosophy : > “The End of Everything,” with Victor Davis Hanson | Uncommon Knowledge #philosophy : isn't it interesting how states compete zero sum for power and thereby increase wars #dev : variation on kill-a-thread-in-rust generated by gpt-4o, it decided to read stop flag on the first try, but I think it would eventually kill the thread when I'd keep asking #dev : https://play.rust-lang.org/?version=beta&mode=debug&edition=2015&gist=73cbaabe09fed4f7c265dfb0f720de4f #dev : my Rust experience ended 2 years ago when I finished rustlings :D #random test #random test back #random : test #random test back #random : b, yo #random : frieren, I mean it is already not alright to collect data like this and then ontop of that, without consent? damn #random : might as well just buy an old 1990s car and call it a day instead of this #dev : hey frieren regarding our convo yday, the idea is to replicate the non-blocking connections as in the smol async-io lib, including the cross platform stuff? #dev : the polling of the socket requires different methods depending on unix or windows #dev : https://stackoverflow.com/questions/69114288/rust-tcpstreamas-raw-fd-on-windows #dev : uhh #dev : nm still researching #dev : bit sick today mind fuzzy #dev : nw #random : https://www.youtube.com/watch?v=-bfPJPcyIzE #random : lmao i didn't know there's a webcam portal between new york and dublin #random : they shut it down #random : https://www.reddit.com/r/Unexpected/comments/1cpl9rc/the_nycdublin_portal/ #random : lol #random : yeah people were flashing tits and 9/11 references xD #random i love tits #random test #random test back #random test #random test back #random : test #random test back #random test #random test back #dev : brawndo, the generic struct for CommitDomains, HashDomains, and those OrchardFixedBases stuff has started to make sense to me, so I'll try doing something with it. Is the branch that you were talking about related to the generic struct? #dev : Message for reference #dev : > I'll start a bit of work on this in a new branch and we can continue from there #dev : > Just wanna see how the compiler will behave once I make certain changes #dev : gn #random test #random test back #random test #random test back #random : test #random test back #dev : hihi! #dev : gm #dev : frieren: you sound pretty excited? new week new you? lol #dev : yeah excited to make progress on my works #dev : i started taking ashwaganda, glycine and inositol supplements and my sleep is so powerful #dev : damn nice #dev : how much do you sleep to wake up this excited along with progress work. No matter how much progress I made, I wake up like this zombie every morning in need for caffeine to even talk like a human #dev : gm #dev : greets #dev : o/ #dev : nighteous: you should try delaying drinking caffeine for 1-2 hours after waking to avoid that feeling #dev : nighteous: Yeah it seems we have to provide an implementation of those that are filled dynamically #dev : ++ on caffeine, eat first #dev : So like a struct that takes all the generator data (including z and u) and then I think the trait can be implemented on that struct #dev : I also think we need two different structs because for example ValueCommitV is "short", which means internally in the ECC halo2 chip, it performs a 64-bit range check #dev : And in the constants you can see it has U_SHORT and Z_SHORT #dev : Wonder if one could do the magic but sure, two structs #dev : also frieren, brawndo: sure I'll try doing that. Lets see how it goes #dev : See how there is `impl FixedPoint for OrchardFixedBasesFull` #dev : So basically instead of the enums, it could just use self #dev : The struct would be Generator { generator: pallas::Affine, u: Vec<[[u8; 32]; H]>, z: Vec }; #dev : Then `fn generator(&self) -> pallas::Affine { self.generator }` #dev : Something in that manner #dev : (This is in fixed_bases.rs) #dev : hmm hmm got it #dev : basic rust question, if we have two different structs (one for short and one for normal values) then would we also need two different impls with the same functionalities? #dev : Yep but it's not a problem #dev : It's already happening anyway for ShortScalar and FullScalar #dev : ohh okay then #dev : Yeah no way around it #dev : ACTION biab, breakfast #dev : fair yeah, python has spoiled me quite the bit. "Oh the type doesn't match? here I'll force it to be this now" lol #dev : :D #dev : python is great, i dont get why ppl prefer javascript #dev : Probably because life's in the browser now #dev : well, youtube indian man tutorials are in javascript. People were told webdev pays alot so you can guess what happened. They decided not to learn something else and live in the javascript bubble (atleast this is what I saw amongst my peers (interns or uni students)). I do tell some of them to learn something else but they just say "it is too late now to learn something different" #dev : the problem with india and eastern places is the family push their kids to get a job and be respectable #dev : so the kids end up doing something they dont believe in #dev : also lol "its too late" ngmi friend #dev : Yepp but many don't even care about what they believe in. They just want money to party all night and not work. #dev : ^ this #dev : It's degenerate #dev : indeed is. The kids are treated as retirement plans of adults over here lol #dev : omg i knew a junior dev and the amount of family he was supporting on his tiny salary was crazy #dev : i told him it's not your responsibility but he just was not able to say no #dev : You are not allowed to say no. It is basically asking for a really bad conflict and mental exhaustion (not that you don't get exhausted the other way) #dev : also how do you guys use action? #dev : /me #dev : ACTION shrugges does it work? #dev : nicee #dev : lol #dev : frieren: ohh also also, just struck my mind. The parents here don't really care about you much. They care about their reputation in society more than your beliefs. Get a "good job s #dev : "good job" so that they can show off you lol #dev : (misclicked my bad) #dev : upsides: you have a support network, strong society downsides: doesn't reward ambition, conformity #dev : maybe a bit dense but my old notes on this topic: https://agorism.dev/uploads/demo.html #dev : based on this https://www.jstor.org/stable/1964012 #dev : what do you mean by "support network"? I think I am mixing it up with the family supporting the kids #dev : gm. when will ircd be deprecated? #dev : you will always have relatives to offer you a home #dev : when growing up in a western country, i had friends who at 16 were forced by their parents to leave the home, get a job and pay rent to a landlord #dev : the landlords are scumbags and scam you #dev : people are in general very lost and there's pressure to pay rent/bills (otherwise you're homeless). you're on your own #dev : reka: give a week or 2 #dev : reka: I think today we can do the final dev meeting on ircd and then move #dev : It's been working totally fine this week #dev : oh shit its monday #dev : hahaha #dev : lmao #dev : great, ty #dev !list #dev No topics #dev : frieren: ah well that is one thing I would agree with. There is always a place to be at but hm not sure how much I'd like it cause instead of rent, you pay with mental sanity points #dev : ancient societies had temples and patronage for artisans, philosophers and mathematicians, but in the modern world this is replaced by university which is a degenerate form of this old model #dev : anyway lets move to #philosophy #philosophy : nighteous: states monopolize power and resources at the expense of society #philosophy : without society, the state takes over the responsibility of things like welfare (in the UK people call this the "nanny state") #dev : was about to say that and then rushed out for lunch XD #philosophy : to have a strong society, requires a strong moral framework where people hold each other accountable #philosophy : but then the degenerate form of this is where everybody is forced to be the same #philosophy : it can only work when there's a philosopher class and the society provides spaces for artisans, scientists, ... anybody doing public works (like free software) #philosophy in a way Switzerland has a stronger mentorship culture than many other countries thanks to the importance of apprenticeship #philosophy : in ancient greece this was the academy (and ancient temples, libraries .etc). the modern form of this is supposed to be the university, but it's become an industry in itself #philosophy instead of stuffing young adults in universities to essentially party #philosophy probably a product of their decentralized approach too #philosophy : some argue it's a consequence of large complex modern world but i disagree #philosophy : it's mainly economic: the capitalist modernity paradigm we live in emphasizes accumulation as economic gain. this leads to all the stuff you talked about like parents forcing their kids to "gain prestige" (by making money, not doing right things) #philosophy : this said prestige is not the kids well being like I mentioned, it is for them to show off. #philosophy : note i'm not saying profit is wrong or anything like that, it's a critique of the nation-state paradigm where central banks create fiat money that is inflated and put into the finance casino #philosophy : it's interesting because the romans believed affluence made societies lazy and vulnerable. the early rulers lived austere lives as a matter of principle. some even argued that carthage should be allowed to exist, so rome would be kept in check. #philosophy : likewise old america believed competition was good, it made everyone better. modern america abuses its power to protect its financial monopoly. #philosophy it's interesting to note that western europe is producing less and less engineers, why do you think that is #philosophy same for the US actually #philosophy grass is always greener but in a way i wished i went the hard science route #philosophy : profit is not wrong indeed. taking my example, I have always mentioned that sustainability (which is done via profit) over anything. Maslow's theory best explains how I feel about anything. first its get the basic and psychological needs achieved, and then self fulfillment needs are to be addressed. But in the Indian Society, they do not care about self fulfillment needs. Or even psychological #philosophy : ones. It is so confusing. It is like kids are "assets" only and there seems to be this hierarchial thing going on where you get to place your kid into the section based on what they do? Not via profit but the company they work in? Startups are frowned upon... and bigger companies paying you peanuts somehow gets you a better position in this hierarchy? #philosophy beyond the question of "economic imperative", if you let kids do whatever without guidance they just end up in queer studies #philosophy : also I speak from experience, the competition here is not money, it is to "look" better. (can say by experience cause I was forced to leave 2 really good offers). #philosophy there's a strong cultural divide with how kids' future is perceived between the East and West #philosophy where are you from nighteous #philosophy oh indi #philosophy a #philosophy : west: strong state, everybody is an individual competing zerosum against one another #philosophy i don't think individualism is a product of the state #philosophy : east: weak state, everybody is collective and forced to follow the collective will #philosophy : accountablity is non-existant here, people blame others only so that is that. You are forced to be the same cause hey, if you follow the same footsteps then you will be the same (bullshit this is) #philosophy but it's definetely a way for the state to take over more easily #philosophy : have you heard of shame vs guilt? #philosophy insightful divide yes #philosophy : thats right, east is weak, everybody is "pseudo-collecive". taking the example of "always have a home at your relatives", they do this because they will be shamed otherwise and if they do it then they get the "looking good points" #philosophy : https://en.wikipedia.org/wiki/Guilt%E2%80%93shame%E2%80%93fear_spectrum_of_cultures #philosophy : shame vs guilt: I'd say shame is when others shame you for something, whilst guilt is when you feel guilty for doing something? (I suppose?) #philosophy guilt is internalized #philosophy faustian my god, apologies I got very invested in typing at darkirc that I didn't check the messages here (you should join darkirc :D) #philosophy you don't behave well because others are around but because of a "self" imposed pressure #philosophy lmao #philosophy i was wondering if my messages were being ported to darkirc or not actually #philosophy felt like they weren't #philosophy omg #philosophy embarrassing #philosophy : the west is a guilt culture where sin is internalized, which comes from christianity #philosophy hahahaha no no those aren't being ported to darkirc #philosophy : the east is a shame culture- people steal and backstab, but what matters is your perception in public ("saving face") #philosophy : The guilt worldview focuses on law and punishment. The shame–honor worldview seeks an "honor balance" and can lead to revenge dynamics. #dev hey is there a doc link for installing the current version of darkirc #philosophy faustian: hard science even in India doesn't happen at all. The engineers just have a degree and mugged up to pass the exams to get that same degree. Or paid for it. Though there are always some good apples in a pile of rotten ones and since India has a huge population of engineers getting pushed out, there are alot of good engineers as well. They are the ones who understand what and who #philosophy : they can both be oppressive in different ways #philosophy engineers are. Not just some webdev kiddy who thinks it is too late to learn something new #philosophy : the problem with collective cultures is groupthink: https://en.wikipedia.org/wiki/Groupthink #philosophy : ah yes definitely, the collective mindset then will come from shame culture in the east #philosophy faustian, I would say that kids having guidance is good, but not controlling to do what you think is good. #philosophy there is a big difference between the two #philosophy indeed #philosophy : (reading the links you sent) #philosophy i'll try to join darkirc btw #philosophy wasn't sure of its status #philosophy : nw sry to harass you lol ^^ #philosophy : about rome's decline into authoritarianism after is become monetised: https://youtu.be/IKuVO4JaqBY?t=381 #philosophy : they began importing a lot of slaves which led to slave revolts, fragmenting the social order #philosophy faustian, sure I'll stop replying over here once you join darkirc :D #philosophy : before the working class provided agricultural independence, but then to accumulate profit they were drafted into the army. #philosophy : people were treated like chattel and lost all commitment towards the state #philosophy : the republic was weak which allowed dictators like caesar to take power #philosophy oh i missed this convo #philosophy : harass me? how O,O no worries nothing like that happened lol #philosophy faustian: loads of people go into STEM now, but they have no philosophy or art to what they do. they are cutthroat mercenaries looking for profit #philosophy : oh guess what, with some money, people love to get treated as chattel nowadays. even without money, alot of them cannot see that they are being treated as chattels. Though I guess good for the state? they get to have a strong control over the mob #philosophy faustian: STEM in general is in decline, but this is a consequence of a society which has lost vitality, nothing specific to sciences #philosophy many physicists end up working on wall street in finance because the pay is much much higher than academia or industry #philosophy that says a lot about what we value as a society #philosophy it's definitely non-optimal, and it's weird this financial scam of the central bank inflating the money supply and then giving it to wall street #philosophy so we have a society where people have no loyalty or values, people are mercenary. as a consequence there's lack of meaning or sense of purpose, and a general malaise in the arts, sciences, .etc #dev faustian: https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #dev ty #dev do i need to run it through tor #dev it is good practice to do so. (I don't though cause it doesn't work for me for some reason then) #dev alright #dev yeah i used to have conflicts with my vpn and ircd #philosophy : the state centralizes power. states compete against each other zerosum for power. states become strong by harvesting the economic resources of society. this impoverishes society and its peoples. for example: strong military industry complex of the soviet union made society very poor #philosophy : here's another example: cortez destroyed the aztecs with a small force of spaniards because he was able to rally a huge numbers from surrounding tribes who hated the aztecs. the aztecs were enslaving everybody, and this became their enemy. #philosophy : example 2: europe today imports refugees in record numbers as economic workers to maintain the GDP (at the expense of society) #philosophy : example 3: the library of alexandria was despised by the people because scientists never applied their knowledge to alleviate the suffering of society. for example they had steam power, electricity, computers, .etc but they just made toys to amuse kings. they never once thought to make tools for farming or so on. when christianity took over, they burnt the library down and murdered the #philosophy : scientists. #philosophy : today you have literal children employed in silicon valley or US universities who know nothing of the world, come from rich families, and this makes the STEM elite. they live in airbnbs, order ubereats and have cleaners looking after them. #philosophy : they have servants looking after them. it's a similar situation to the library of alexandria #philosophy : and they work on bullshit that doesn't help society #philosophy : their dream is to be like steve jobs or whatever #philosophy : oh, do you mean *cough cough* "tier 1 indian private university students"? /s Most of them are taken in with "donations". #dev faustian: don't run it through tor just yet, but yeah it's the eventual plan to use tor #philosophy : Steve Jobs my ass, they could never be close to him. Almost all of them try to copy and fail so bad but have their parent's money/power to support them (statement based on observation) #dev ok #dev frieren: so it doesnt work to run through tor? #philosophy : also yes, they are either example 3 or just nothing techhnically. They dont even amuse kings (upper management) they are ready to lick boots for all what I know. There ofcourse are outliers and I am not generalizing them into this category #philosophy : apologies for any heated statements if any seems to be bothersome #philosophy : when you look at the last centuries, we used to respect people who made great works like scientists, philosophers and so on #philosophy : today people are into celebrities, and now influencers lol #philosophy : we celebrate the actor rather than the writer. in ancient greece, acting was looked down upon as a profession #philosophy : "ohh this influencer made this reel of committing a crime and got 10k views, I so wanna be like them" lol idk what to say #dev it should do, but we need to test it #dev i don't want to hassle fastian with that #dev ++ #philosophy : people dont even care about writers any more from what i have seen. Those who write books, sure yes, but the writers behind a movie/or visual thing #dev !topic zkvm constants plan (python approach, rust approach) #dev Added topic: zkvm constants plan (python approach, rust approach) (by brawndo) #random : test #random test back #philosophy hey all, really interesting discussion! Was following on telegram, couldn't participate because I was at the gym #philosophy what did you do in the gym? #philosophy frieren: it was leg day, although usually do chest on Monday but this program I'm following has changed it #philosophy nice #philosophy hypertrophy stuff #philosophy dont skip legs lol #philosophy lol ofc as the saying goes 'never skip leg day' as painful as it is #philosophy how much do you squat? I'm 130kg #philosophy that's impressive, I actually haven't done any squats in a while coz this program focuses more on leg press/hack squat. But last time I did squats it was around 110kg #philosophy ah niice #philosophy actually don't like squats, always worried the bar will crush me #philosophy i use the safety in the rack #philosophy damn you all got some good strength #philosophy I can only run, that too only from my problems lol #philosophy lol fair, running is good I used to swim a lot #philosophy same, swimming is nice. I try to do a mix of slow and HIIT running #philosophy (jokes apart, last I did was a 50 kg 2 sets of 12 reps each on the leg extension machine but its been 2 months since then and I haven't done any physical activity) #philosophy my brain is sharper when i exercise #philosophy I prefer running sprints. Like outbursts of speed, though it makes it really difficult to control my speed when running. Either a dash or I cannot run two steps #philosophy deki: if you're into supplements https://agorism.dev/supp.html #philosophy yeah sprinting is nice. recently I got a polar h10, and made my own app to monitor heart rate: https://github.com/narodnik/pump/tree/master/ecgapp #philosophy oh nice, thanks. I already take boron and zinc, creatine too. Need to get back on vit d but been meaning to get a proper regimen #philosophy i think omega 3 is the most important #philosophy never actually included that, will buy some tomorrow #philosophy also i charted my diet's micros, and it was lacking K2, so the supplement was good #philosophy ok just beware that most omega 3 is bad for you cos it's rancid, you need to find a good brand like thorne #philosophy oh I see, I'll have a look if we have that brand here #philosophy you can find good brands on reddit #philosophy someone said they take ashwaganda, I tried that for a while last year and found it made me too relaxed/mellow #philosophy I need to operate with a slight level of anxiety lol #philosophy yeah i do it for sleep only but a bit wary of it #philosophy you should try glycine. start by megadosing 20g and see if it has any affect on you #philosophy i get crazy crazy dreams #philosophy oh wow, never tried glycine either #philosophy then you can reduce to 6g #philosophy yeah it's important for health, we should get 12g but we only get 6g from dietary sources #philosophy this website is really good https://examine.com/supplements/glycine/ #philosophy sweet thanks, never thought I'd be getting health advice here, alongside dev stuff lol #philosophy lol and history discussions #philosophy even better, my favourite subject when I was in high school (well ancient history) #philosophy I chose it over the IT subject we had, difficult decision #philosophy btw turmeric/cumin and mint lower testosterone #philosophy serious? Damn, I used to take turmeric but stopped #philosophy yeah that's why they say turmeric is "anti-inflammatory" #philosophy far out, noted #philosophy have you ever tried NAC? #philosophy no, what's that? #philosophy oh interesting, another amino acid #philosophy https://en.wikipedia.org/w/index.php?title=Acetylcarnosine&useskin=vector #philosophy yeah was gonna say, has multiple benefits, some claim there's more but the studies vary #philosophy did you ever try those squat plugs #philosophy found it rly helped my technique #philosophy i look forward to leg down now #philosophy *leg day #philosophy I like it too now, mainly because I like the leg press #philosophy btw glycine is meant to be in powder form? And is L-Glycine the same thing? #philosophy yep powder. idk about l-glycine, i think so #philosophy tnx #random test #random test back #random 38% of webpages that existed in 2013 are no longer accessible: https://x.com/mikko/status/1791799718764232826 #dev frieren: here? #dev gmgm #dev o/ #dev hey #dev : @skoupidi pushed 3 commits to master: 5c126999a1: contract/money/client: replaced asserts with error returnes and added log targets #dev : @skoupidi pushed 3 commits to master: 0fb90b0978: contract/deployooor/client: replaced asserts with error returns and added log targets #dev : @skoupidi pushed 3 commits to master: e93b6cca95: contract/dao/{entrypoint, client}: replaced asserts with error returns and fixed log targets #dev hey upgrayedd #dev frieren: got 2 q #dev check e93b6cca95fdbbe6db19f03c8d441753482de0fe #dev in src/contract/dao/src/entrypoint/auth_xfer.rs::58 there was this assert!(!xfer_params.outputs.is_empty()); while in 158 assert!(xfer_params.outputs.len() > 1); #dev I assumed these two assertions/checks must match, so made both to check >1 #dev so the question here is: since in second check it was a comment stating that the last output is the change, this code assumes >1 outputs #dev but what happens in the case where a dao proposal wants to consumes the whole treasury? #dev is it an oversight or some kind of treasury drain protection? #dev the second q is about smt: do each user/wallet need to keep a copy of the smt? since I don't see it store natively in the contract tree entries #dev upgrayedd: It should be possible to set an output to 0 value #dev So it doesn't matter functionally #dev aha true forgot that #dev so in that case they just make a zero value output, so the check is still valid #dev Yep #dev question for darkirc, if its suggested to not run over tor ( https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html ) , Is it fine to skip step 1? #dev Yeah hosting a hidden service is for when you want others to be able to connect to your node through Tor #dev But without that you can still connect to others #dev hey #dev when I run make BINS="darkirc" in the darkfi directory, i get an error: cannot specify features for packages outside of workspace #dev SIN: check that you are on master not tag v0.4.1 #dev How about just running `make darkirc` #dev upgrayedd: auth_xfer.rs:58 shows inputs.is_empty() and outputs.len <= 1 #dev am i missing something? #dev freiren: the if is the opposite of assert, so assert!(!input.is_empty()) becomes if input.is_empty() #dev ah yes it's an oversight, correct #dev i mean about draining the treasury #dev brawndo already answered #dev yep #dev :) #dev o/ #dev hi #dev hi o/ #dev o/ #dev gm #dev hi #dev sup #dev !topic darkirc migration #dev Added topic: darkirc migration (by frieren) #dev !topic deg usage #dev Added topic: deg usage (by frieren) #dev !topic darkwallet scenegraph and drk/darkirc integration #dev Added topic: darkwallet scenegraph and drk/darkirc integration (by frieren) #dev nighteous: yo #dev !start #dev Meeting started #dev Topics: #dev 1. zkvm constants plan (python approach, rust approach) (by brawndo) #dev 2. darkirc migration (by frieren) #dev 3. deg usage (by frieren) #dev 4. darkwallet scenegraph and drk/darkirc integration (by frieren) #dev Current topic: zkvm constants plan (python approach, rust approach) (by brawndo) #dev what does 'python approach' mean? #dev Hey so #dev : nighteous: here? #dev The idea is to have the "constants" made "dynamic". "Dynamic" in the sense that we don't hardcode them in sdk, but have them distributed by contracts/zkas-proofs #dev I've been thinking about this, and there's two things to consider: #dev 1) How they would be used in Python #dev 2) How they would be used in Rust #dev By being used in Python, I mean zkrunner and keeping it simple #dev ahhh #dev So I've come to a couple of conclusions and would like to discuss here: #dev i think in zkrunner, you provide a json explicitly #dev frieren: Can you wait until I finish? #dev yep #dev ty, this is something to discuss, not set in stone #dev 1) For having the python usage simple, and not introducing any Rust complexity into it - I believe zkas should support defining the constants (EC points) by their coordinates #dev e.g. EcFixedPoint MY_GENERATOR = (0x00....1, 0x00...2), #dev Now, when we want to use this in zkrunner, we can have it run find_zs_and_us() directly rather than precomputing them. This keeps things very contained within python and there's no need to make extra bindings that touch contracts' code. #dev Additionally, this functionality can actually be used to generate the Rust code that find_zs_and_us() produces - and it can be used in the contracts' Rust code. #dev 2) For using the constants in Rust, we could use the above 1) approach, and leverage zkas to generate the constants data #dev These would then become part of any contract's Rust API and they'd be accessible through using a contract as a crate dependency #dev The final thing is using these in the ZKVM, which I believe can be done by having "placeholder" structs which implement the necessary traits required by the chips which use these constants #dev Then these structs can be filled at runtime with the proper data that's contained inside the contract (or generated at runtime in case of Python) - letting the ZKVM use the provided constants #dev An example would be: #dev struct Generator { generator: pallas::Affine; u: UType, z: ZType }; impl FixedPoint for Generator {...}; #dev This trait impl would simply access the fields in the struct, and the struct would be filled at runtime #dev In WASM we need to transfer it from the wasm-vm memory into the host #dev Or we could store it in the DB, but I think it's less overhead to just fetch it from mem, since it's only ever used once, when deploying a contract #dev That's the idea, comments very welcome #dev very good agree with it all & versatile approach #dev are the names in zkas used as the keys, or are they just local names, but the (x, y) is the key? #dev i guess with this, we use (x, y) as the key #dev It sounds safer to use the latter, yeah #dev Since we'd avoid the possible naming collision #dev In zkas the names would be used just for the DSL, to know what to reference #dev nighteous: Any feedback from you on this? #dev can i import consts from other contracts? #dev (Perhaps they're afk, nbd) #dev to avoid redeclaring them redundantly #dev frieren: Yes, it would work by specifying the contract as a Rust dependency. The constants would be part of the public API/model #dev i.e. use darkfi_money_contract::constants::NullifierK if that's what you want #dev ok ic #dev Then you'd have that easily accessible anywhere for any client and contract #dev There's a possible issue with cyclic dependencies #dev For example if the money contract would want to use a constant that the DAO defines #dev But I dunno if that is a valid usecase even #dev its not something to worry about #dev you can soft link the file or even make another crate #dev True #dev *STAMP* #dev next? #dev :D #dev !next #dev Elapsed time: 16.6 min #dev Current topic: darkirc migration (by frieren) #dev it's time to move to darkirc although be ready to upgrade periodically #dev ++ #dev we should update the book ofc #dev Yep, next week we can have the meeting there, it's been working really solid #dev ++ #dev ++ #dev !next #dev Elapsed time: 2.2 min #dev Current topic: deg usage (by frieren) #dev i fixed the CTRL-C btw #dev dasman can we do a mini tutorial? #dev lag on CTRL-C #dev draoi: nice! #dev Sweet #dev sorry i havn't updated the README about deg #dev lets try it now #dev woah impressive #dev so deg doesn't use config anymore it's like: ./deg -e localhost:26660 #dev i literally just opened it and it works #dev cd darkfi/bin/deg/ #dev ./deg #dev or ./deg darkirc , for default darkirc #dev guys you should try this #dev brawndo, draoi, upgrayedd & others #dev did you run it? #dev also ./deg -r , goes replay mode so it asks the daemon to recreate dag from db log and sends it to deg to browse #dev Didn't try it yet #dev i'm building it now #dev try it now #dev no config needed #dev draoi wdym building, it's python, just open it #dev dasman: so how does replay work? #dev haha yeah no installing requirements etc #dev ah #dev 17:23:51 dasman | also ./deg -r , goes replay mode so it asks the daemon to recreate dag from db log and sends it to deg to browse #dev so for example me and you have now found that i'm missing data from the log #dev what do you send me? #dev which db log? #dev do you mean ~/.local/darkfi/darkirc_db/ ? #dev /tmp/replayer_log.log #dev this is cool! #dev it's in /tmp rn #dev got a KeyError when I did -r though #dev ah ok who creates this file? is it deg? #dev but also recreates db from log and keep it in /tmp as well #dev no the daemon creates it #dev insert 502f04de9f380f100e984aa115d69cacfd91055d0c64f498c92d6cb0acafbd25 f2VEZgAAAAA0BCNkZXYHZnJpZXJlbiZeIFN0b3BwYWJsZVRhc2tzIG5vdyBhdXRvLXN0b3Agb24gRHJvcGOuWCWrYUGkWMHU5REGBBcywikMv/ShSeKNZTOsBZmzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAA== #dev so is the first field the previous hash, and then the data? #dev correct #dev oh no wait #dev insert current_hash data #dev why do you need the current_hash? i think you can get it from the data #dev data has infos about prev (parents), childs etc.. #dev i think you can probably simplify this file to just a list of data even #dev creating dag Tree like key-value , hash being the key, value being the data #dev anyway nbd for now #dev i'm sure it can get simpllified a lot, but only browsing the replayed dag is enough right? #dev just like deg itself #dev ok so rn you have the replay functionality inside deg going over the rpc #dev but actually we can make this more basic #dev hmm i'm just reading event graph code, it's quite tightly coupled with network stuff actually #dev how basic?, i know i'm recreating the same dag twice lol #dev well i was thinking if we could separate the EventGraph from its p2p dependency #dev then use it directly in python for replaying #dev and then we can write unit tests / do simulations #dev also i see a bug #dev what bug? #dev for channel in channels.iter() { #dev there's 2 of these loops. if the channels are disconnected or slow then it will block the loop #dev it should be async using FuturesUnordered or futures::select!() #dev well not a bug, just not ideal #dev first loop is to ask for tips, the other one is to actaully fetch the events #dev dasman: i'll look at the code and get back to you with more specific suggestions #dev ++ #dev yeah but do you see what i mean? #dev in async code, each loop should be done in parallel not sequential #dev aha ++ #dev dasman: about the suggestions, it's so we can decouple EventGraph from p2p, then we can make python bindings and the replay can happen directly in python (not over jsonrpc) #dev then we can split it from deg and have specific tools for playing around EventGraph (or just use python directly)... it's easier (see the work we did with zkrunner for an example) #dev anyway great job ty #dev !next #dev Elapsed time: 18.6 min #dev Current topic: darkwallet scenegraph and drk/darkirc integration (by frieren) #dev ++ #dev ty #dev brawndo, you were doing drk wasm integration or that was upgrayedd? #dev yes #dev ah ok, try this out: #dev cd darkfi/bin/drk/ #dev cargo run #dev then in another terminal: #dev python client.py #dev it will print some output #dev that is the property tree, and it's how all the components communicate. there are nodes, properties, signals and methods. Check darkfi/bin/darkwallet/src/net.rs:126 #dev for the core API #dev : frieren, here yes apologies... #dev you mean bin/darkwallet ? #dev ah yep #dev i have it symlinked here #dev sec #dev ++ #dev b-b-building #dev btw in general I refuse to run any python repo without requirments.txt #dev the graphics runs in a separate thread so it isn't blocked by the scripts/logic happening in the backend #dev i just use basic python so all good #dev I see zmq imported #dev Nice #dev ah true #dev it works tho #dev : we're having dev meet on the other side #dev What's supposed to be shown in the window? #dev ok I see window with some rainbow areas #dev just boxes, i've been rearranging stuff but more interesting is the python output #dev because that's how the UI is exposed, and probably the nodes will be exposed through this #dev Same @ rainbows #dev i'm not sure how it will work with wasm #dev what have wasm to do with it? #dev : yeah, I was running some errands and had a minor accident (everyone's fine) so had to deal with that. (reading the logs) #dev isn't drk using wasm? #dev yeah, but you will probably use drk as the underlining lib, so you just use its api #dev It will have to later, it's not implemente d yet #dev you shouldn't hanlde wasm at all #dev aha ok #dev is there anything about the api i can see? #dev to get a better idea and coordinate works? #dev bin/drk/src :D #dev which specifically? #dev you won't be able to use it as lib right now, I still have to integrate/modify as proposed by noot in a PR #dev just looking to finish the underlining functionalities first #dev ok but i mean about wasm, how will it work? #dev in what sense? #dev give me an example/flow for context #dev so i make a contract for a DEX #dev There will be a set of generic functionalities that a contract can use #dev s,contract,plugin, #dev and to be able to operate the dex, i make a wasm plugin for drk, right? #dev what does the wasm's api look like? #dev is it introspectable? are there commands? #dev drk has no plugins system #dev We need to define the functionalities, but I'd start with Sign #dev it only supports native stuff now #dev yeah but i mean in the future, what's the aim? or is it not worked out yet? #dev We'll want to do fine-grained stuff wrt. ACLs #dev TBD #dev but in general you just need attach-fee and sign #dev But generally the WASM and the wallet will be exchanging data that needs to be operated on or signed #dev ok ty, just i'm designing sth as well which overlaps quite a bit #dev It's just important that we don't expose secrets to the plugins, but rather the plugins export us the data we need to sign/prove #dev And the secrets stay safe on the host-side #dev ++ #dev So e.g. The wallet would export a list of addresses to the plugin, and the WASM could pick one, and expose some data to sign #dev ok its an ongoing convo, i'll think on this too #dev The host takes it and signs it with the requested key #dev And does whatever requested with the signed data #dev in general the simplest way see it is like: plugin handles everything up to tx creation, then passes tx to drk to attach the fee and sign #dev Through usage/research we'll find the set of functionalities that are needed #dev But first there's Sign and Prove #dev when signing, we usually use ephemeral keys #dev otherwise it's linkable #dev The WASM stuff will have to maintain its own dbs too #dev frieren: Yeah but there's no randomness inside WASM, just on the host #dev So the host has to provide the RNG at least #dev ok i'll think on this a bit, maybe i can mockup some proof of concepts #dev i was trying to think of darkirc #dev we want to be able to simultaneously run different instances #dev It's not the simplest task, as we have to reimplement the runtime again and tune it towards how it's gonna be used in the wallet #dev and also download the data backwards #dev so there's the DAG for today, then the DAG for the day before, and so on #dev which it then can display and insert into the UI #dev But generally consider there's a set of wasm host functions that allow communication #dev Transferring data between the plugin and the wallet #dev ok ty #dev !next #dev Elapsed time: 18.4 min #dev No further topics #dev nice, good meet all #dev tnx frens #dev thanks everyone #dev Thanks #dev gg #dev o/ #dev checkout deg https://agorism.dev/uploads/screenshot-1716217188.png #dev I've done 2 iterations on the wallet-wasm stuff but trashed it because I was dissatisfied with it #dev Will have to lay it out in a doc better #dev ty all #dev thank you everyone, appreciate the flexible approach regarding constants, deg replay mode functionality, and provided darkwallet details. #dev brawndo: yeah #dev HCF: you got an erro on deg? #dev i have been iterating on UI a few times but settling on a good design #dev took me a few days to figure out how fonts work wtf #dev https://harfbuzz.github.io/terminology.html #dev : @draoi pushed 7 commits to master: f4d93104b5: seedsync: refactor to enable reseed on CondVar.notify()... #dev : @draoi pushed 7 commits to master: 85fb7bc684: protocol_seed: only append to greylist if addrs msg is not empty #dev : @draoi pushed 7 commits to master: efb3d05449: doc: adjust log level on session/mod.rs #dev : @draoi pushed 7 commits to master: 007500d8e7: net/test: check all hostlists, not just 1 random hostlist... #dev : @draoi pushed 7 commits to master: a092f0d0eb: transport: non-blocking tcp connect... #dev : @draoi pushed 7 commits to master: eca97916f6: connector: add a stop signal to abort the Connector... #dev : @draoi pushed 7 commits to master: 55e9cc21d0: session: manually stop the connector on slot.stop()... #dev merry chrysler #dev lol #dev : nigheous: put darkirc on the phone #dev \o/ #dev : we need people testing it on unstable conns #dev : my internet kinda sucks dno if that counts #dev pumped for: non-blocking tcp connect #dev : nice #dev : i've hard to restart ircd a few times but darkirc never #dev : adversity make you(r code) stronger #random : test #random test back #lunardao test #random : Test #random Test back #dev dasman yeah #dev : Yep phone works now, nice #dev File "/home/user/darkfi/main/bin/deg/./deg", line 238, in recreate_dag #dev if json_result['result']['eventgraph_info']: #dev ~~~~~~~~~~~^^^^^^^^^^ #dev KeyError ^^ #dev : are the android/docker install instructions up to date? I think I had problems with darkirc on mobile but it was a long time ago #dev HCF: darkirc on latest master? #dev that error is because you reciev an empty dag #lunardao hi anon #lunardao meeting up here in a little more than a half hour #lunardao ++ :) #dev Yeah I'm on origin/master, fetched today #dev the CTRL-C lag should be fixed now if you want to git pull and rebuild #dev brawndo, frieren: ah a question related to the approaches for zkvn plan, how do we handle find_zs_and_us() being slow? it still is a slow process... (or did I miss the whole point?) #dev I'm of the opinion that it's slowness doesn't matter when it's running in Python #dev : worked for me and then after a format, I did copy the build that fri*ren sent #dev : ok I'll give it another try soon #dev nighteous: And we can extend zkas with code generation that runs find_zs_and_us() #dev : ngl it's relaxin to CTRL-C kill darkirc and it stops near instantly #dev : @foo pushed 1 commit to master: ed4385de0c: fuzz: Add dictionaries, improve README #dev HCF: check if you have /tmp/replayer_log, or try running deg again #lunardao test #dev ah I have no /tmp/replayer_log #dev oh okay, when does the python code run though? I did see some python code in the repo but didn't find where it gets called from #dev bbl dasman, I'll test again another time #dev np, cya o/ #lunardao anon: test is good this time also :) #dev nighteous: It's darkfi/bin/zkrunner #dev In src/sdk/python/src/ you can find various Python bindings #dev For example see how python/src/zkas.rs wraps certain types and exports them to Python #dev We can copy the find_zs_and_us() function to darkfi/src/zk/ #dev Then use it wherever necessary #dev oh okay got it #dev : make sure you don't wear your computer out by ctrl-c'ing too often #lunardao <0xhiro> hi there #lunardao hey 0xhiro #lunardao !list #lunardao No topics #lunardao !topic updates #lunardao Added topic: updates (by sadar) #lunardao !topic darkfi nft updates #lunardao Added topic: darkfi nft updates (by sadar) #lunardao gm #lunardao gm #lunardao !list #lunardao Topics: #lunardao 1. updates (by sadar) #lunardao 2. darkfi nft updates (by sadar) #lunardao !topic grants #lunardao Added topic: grants (by foo) #lunardao !topic upcoming events #lunardao Added topic: upcoming events (by foo) #lunardao hey lunarpunks #lunardao gm ser #lunardao gm foo #lunardao gm anon3 #lunardao hi #lunardao hey zero #lunardao !start #lunardao Meeting started #lunardao Topics: #lunardao 1. updates (by sadar) #lunardao 2. darkfi nft updates (by sadar) #lunardao 3. grants (by foo) #lunardao 4. upcoming events (by foo) #lunardao Current topic: updates (by sadar) #lunardao - put together a list of ISPs we used and shared with nym community #lunardao - administration and maintenance of infra - LD/gws #lunardao . #lunardao I came to see how you all doing and thank you for the efforts around nym infra. The list is a nice draft for the community to share their findings as well. I mentioned the DAO here: #lunardao https://nymtech.net/operators/legal/isp-list.html #lunardao - plotting on firn/yeeter details #lunardao .YY #lunardao we need to migrate to darkirc as ircd will be deprecated afaiu. I've been working on setting this up #lunardao . #lunardao nice one zero #lunardao <0xhiro> is there a setup for darkirc? #lunardao !topic darkirc migration #lunardao Added topic: darkirc migration (by sadar) #lunardao and thanks, ser #lunardao ++ #lunardao btw if you could do the metion a hyper link, it would be based! #lunardao will do foo, good idea! #lunardao <3 #lunardao <0xhiro> ++ #lunardao ++ #lunardao great share ser #lunardao 0xhiro: https://darkrenaissance.github.io/darkfi/misc/tor-darkirc.html #lunardao next? #lunardao ++ #lunardao !next #lunardao Elapsed time: 5.5 min #lunardao Current topic: darkfi nft updates (by sadar) #lunardao I didn't do my homework because of the overwhelming admin works, this should be solved now and the raise is my main aim. #lunardao the devs keep communicating and share ideas anyway, so that's good #lunardao nw #lunardao As I mentioned in my updates, have been discussing the next moves for the darkfi NFT r&d discussion and wanted to bring this to the community #lunardao ++ #lunardao ++ #lunardao To all lunardao members, we will be building a private way to interact with the darkfi nft r&d proposal using firn on arbitrum. If you'd like to participate using this tool, please deposit into a firn account on Arbitrum now #lunardao firn.cash #lunardao kewl #lunardao do I need to be a member of lunardao to participate? #lunardao what would be the process if I wasn't a member of LD #lunardao This is to size up the anonimty set in which time, amount in & out and allliquidity flow-through play important role. Remember if you deposit to Firn asap, anonimity of everyone is bigger. this doesn't mean that you will have to join the raise. If you change your mind, just withdraw and that's it. #lunardao It's a two-step process. #lunardao anon3: No, anyone will be welcome to participate #lunardao foo: awesome, ty #lunardao <0xhiro> how long do we have to participate in this darknft raise? #lunardao Deposit to firn == anonimize funds. The longer, the better. Meanwhile we share the process transparently on our media and everyone can make their mind. #lunardao We will probably throw a poll about time to decide together with everyone. #lunardao Some ideas were to leave it open for 14 days #lunardao It will be time or cap, whatever comes first triggers the end of raise and the smart contract releases NFT against the funds. #lunardao <0xhiro> FIRN no only accepts ETH ya? no USDT watsover #lunardao Yep #lunardao gtg, see u #lunardao see you #lunardao !next #lunardao Elapsed time: 13.3 min #lunardao Current topic: grants (by foo) #lunardao I wanted to get an update on this here. #lunardao sadar, do you have the final figures? #lunardao yes, one sec #lunardao Moros grant : 1 ETH #lunardao Gitcoin Grants 20: 1.3897 ETH #lunardao 237.9723 USDC #lunardao 144.488 ARB #lunardao . #lunardao nice, thank you #lunardao and everyone who put energy into it #lunardao ++ #lunardao !next #lunardao Elapsed time: 5.7 min #lunardao Current topic: upcoming events (by foo) #lunardao we should figure out next steps for those funds #lunardao Do we have any spaces planned? #lunardao Is anyone going to any events and would be interested to make stickers or anything like that? #lunardao sadar: yes 100% #lunardao I dont think we have any spaces scheduled in the coming weeks #lunardao There are some conferences coming up, web3privacy now summit at the end of the month #lunardao We can talk about possible merch async and ask in TG if anyone has ideas. #lunardao and will to bring stuff around #lunardao not sure if any LD folks will be there #lunardao ++ #lunardao Any inteligent visibility is good #lunardao Let's plan the Firn update TW space next week. #lunardao Soon the escrow will be released btw #lunardao !next #lunardao Elapsed time: 4.7 min #lunardao Current topic: darkirc migration (by sadar) #lunardao I think zero went offline :/ #lunardao not a problem, we should make sure we have a guide for the migration #lunardao But maybe he will make a guide and move the chan's #lunardao sadar ++ #lunardao great #lunardao !next #lunardao Elapsed time: 1.7 min #lunardao No further topics #lunardao !end #lunardao Elapsed time: 0.1 min #lunardao Meeting ended #lunardao is there a time set for a frin TW space? #lunardao OK, this was it. Have a good week everyone, let's spread the news on Firn and keep the forest growing! #lunardao sadar, not that I know #lunardao ++ #lunardao Good bye! #lunardao <0xhiro> GN! :) #lunardao gn #dev : HCF: yeah i fixed it #dev : ubuntu apt install openjdk version needing bumping #dev : java is such crap #dev nighteous: info on zkrunner tools here https://darkrenaissance.github.io/darkfi/zkas/writing-zk-proofs.html #lunardao gn all, great chattiing #lunardao share with others, if youre planning on participating in the darfi r&d, you should deposit into firn #dev brawndo: i see references to resuming wasm functions after they run but can't see how to do it. do you know anything about that? #dev like using the Metering middleware to limit a function, running it a little, then continuing it later #dev Not sure what you're talking about #dev Where are you seeing such references? #dev https://github.com/wasmerio/wasmer/issues/700 #dev nvm if you don't know, i will figure it out #dev I think this is for WASI #dev WASI is something we likely shouldn't use, as this is what gives it knowledge and abilities to do system IO #dev And isn't sandboxed anymore #dev https://docs.rs/wasmer-wasix/latest/src/wasmer_wasix/os/task/process.rs.html#116-128 #dev hm maybe wasix is indeed sandboxed #dev ah no it's not #lunardao https://x.com/lunarpunksquad/status/1792613040745230393 #random https://x.com/lunarpunksquad/status/1792613040745230393 #random To the LunarDAO community and the general privacy community, We're building a private way to interact with @DarkFiSquad #random nft r&d proposal w/ @firnprotocol #random on @arbitrum #random Please go ahead and deposit now, an amount sufficient to cover your future participation. #random Firn works best when your account is topped up in advance. #random 1⃣ This is open for ANYONE #random 2⃣ The longer you keep ETH in Firn, the stronger your anon-set becomes and limit timing attacks #random 3⃣ If you want to participate using this tool, you should deposit funds within the next few days #random 4⃣More info on the proposal can be found here https://forum.lunardao.net/t/lip-0005-contribute-to-darkfi-research-and-development/216 #random Share this out for more :eyes: #dev i can just run them on a threadpool with a metering upper limit #dev gn #dev gn #random echo #random echo back #random echo #random echo back #dev frieren: Why do you want metering even? #lunardao !list #lunardao No topics #lunardao !topic updates #lunardao Added topic: updates (by sadar) #lunardao !topic Excess treasury funds from LIP-0003 #lunardao Added topic: Excess treasury funds from LIP-0003 (by sadar) #lunardao I will put together info for the darkirc migration. the steps is already in darkfi docs, but will merge what needs to be considered. #lunardao !topic firn token unlock https://etherscan.io/tx/0x6696e89bb2222521f8778141fbb75d48764bea03508c0ec2dba766502fb3139e #lunardao Added topic: firn token unlock https://etherscan.io/tx/0x6696e89bb2222521f8778141fbb75d48764bea03508c0ec2dba766502fb3139e (by sadar) #dev : @dasman pushed 1 commit to master: e093c5ed57: bin/deg: update README #lunardao https://etherscan.io/token/0xddea19fce1e52497206bf1969d2d56fed85aff5c#balances #lunardao LunarDAO is 12th largest holder of Firn with a combind total of 4710 FIRN tokens #markets : BTC/USDT 71.226 #dev : gm #dev : gm o/ #dev : gm #markets market pumping on rumors of eth etf approval #dev : gm #dev : frieren: Not sure if you saw the msg #dev : frieren: I was wondering, why would you need metering for the wallet wasm plugins? #dev : if they become unresponsive due to buggy code #dev : i have a design which i'll write up later for modules/plugins #dev : ah you mean in order to quit if they start running an infinite loop or such things? #dev : Yeah perhaps that is ok #dev : But the limit should likely be a lot higher than what it is in the contracts #dev : yes ofc much higher #dev : i was originally thinking to poll them all in parallel, but unless i find resume, i'll just run them on a threadpool #dev : With what I've been looking, I don't think the wasm plugins need to keep running #dev : They would just be executed on demand #dev : btw the plugins also have to provide the tx call scanning logic for their contract #dev : Maintain any dbs and such #dev : yeah the wasm functions have an init() and update(event) calls #dev : the modules are untrusted, and plugins can talk with them. The modules can see which plugin is connecting. #dev : init() creates a new instance of the plugin. there are multiple instances. plugins have their own private data but can provide an API to other plugins. #dev : modules run in darkfid and implement things like: tx scanning logic (decrypting notes) #dev : they can also spawn p2p or use event graph (which might be needed by OTC for example) #dev : Should they really be in darkfid and not the wallet itself? #dev : We managed to decouple the node from the wallet #dev : You might be a bit too optimistic about what WASM is capable of #random test #random test back #dev : i'll write up later a text, i have some notes #dev gm #random afk #dev hi Draco #dev : frieren: darkfid justs provides the json-rpc to retrieve blockchain data, such as blocks txs bincodes etc etc, it doesn't handle any wallet related functionality #dev : all that is moved to drk #random echo #random echo back #dev : brb #dev : b #dev : frieren: around? #dev : @darkfi pushed 1 commit to master: 667035a159: book: extend wallet.md section with specifics on plugins wrt to scene graph #dev : brawndo, upgrayedd: ^ check commit when you can, here's the link (wait until book's rebuilt): https://darkrenaissance.github.io/darkfi/arch/wallet.html#specifics #dev : frieren: I totally disaggre with the last paragraph #dev : making easier setup should never mean build a combine-everything-into-one solution #dev : what's wrong with using dynamic objs? #dev : like the linux kernel #dev : each object should be independed and be able to run on its own #dev : the kernel provides you the ability to control independed modules under a master system #dev : it doesn't "unify" their functionalities #dev : i didn't say anything about unifying functionality #dev : just setting up a dozen nodes and configuring RPC in your wallet is not practical #dev : what about "merge all p2p functionality across apps into a unified subsystem" #dev : it doesn't stop you running each app independently #dev : it just means you don't need a different seed node per app #dev : since there's one overlay network used to lookup the subnetworks (swarming) #dev : it's not that each app uses the same p2p network, maybe my wording was unclear #dev : how is that different from current lilith functionality? #dev : (they in fact must use distinct p2p networks) #dev : a single node exists #dev : lilith is not dynamic #dev : serving multiple networks #dev : i have to configure lilith for that specific app and it is centralized #dev : every seed is "centralized" in that sense #dev : Hey #dev : anyway p2p is not the point #dev : yes lets say you have seed node for edgy app #dev : How do you imagine that a plugin would use the event graph or start a p2p network? #dev : you are liable #dev : I mention the last paragraph since I find it fanctually incorrect #dev : how did you come to that outcome? #dev : brawndo: by accessing /mod/foo #dev : I don #dev : to instrument a node, you only need 2 things: #dev : 't understand #dev : - request reply (calling methods) #dev : - pub sub (listen to notifications/events) #dev : upgrayedd: think about it, the seed node operators are running seeds for specific apps and therefore liable for those apps since it's centralized infra. #dev : How are you planning to do this in WASM? #dev : instead with swarming you just run a single seed node for the overlay network #dev : ++ on p2p swarming #dev : then you don't need to configure the seed for the app, people can just do it automatically #dev : brawndo: i said wasm before, but i think actually it should just be (unsafe) dynamic objs #dev : I'm not sure how the p2p logic would be implemented #dev : Just giving free-reign and executing untrusted code without any sandbox is bad obviously #dev : the event graph for example: we just create a new message, and subscribe to new messages #dev : the seed you are running is not running the app itself, its a match maker for other people to connect, like a torrent tracker, you are not liable for the torrents contents, since you yourself don't have them #dev : (people choose to join this swarm so it doesn't impact the rest of the network) #dev : upgrayedd: ok but also if i make a new app, i need to convince the other seeds to stop their node, add support for my app, then restart their nodes #dev : and i need to run the seeds #dev : dynamic p2p subnets its another thing, I don't dissagree with that, yeah swarming is cool and should be added #dev : I dissagree with the context/statement #dev : maybe yeah I don't get the wording #dev : or I'm biased since I don't find it "difficult" XD #dev : right now we have darkirc managing keys, but when you compare it with taud, they are similar on the p2p side #dev : so it's some app specific logic + generic event graph #dev : They should still be separate daemons #dev : ^^ #dev : why? #dev : Because every super-app failed and so will this one #dev : I don't see the point in sticking all functionality in a single daemon purely for simplifying the setup #dev : It can be done with a script #dev : ++ #dev : Additionally people might want to run separate daemons on separate machines #dev : In Ethereum even just for the blockchain you have separate programs - one which does the consensus, and the other does execution #dev : They communicate over sockets #dev : in eth you don't need to setup a separate node per app #dev : i just don't see users doing that #dev : if you want separate daemons, it could be a loader which spawns them as child processes, proxying control by means of stdin/stdout #dev : It's simpler in Ethereum since at most you're making signatures #dev : which is an alternative to using dynamic objs #dev : Once you get deeper, like doing atomic swaps, etc., you end up running more programs #dev : the loader is responsible for managing the processes, shutting them down .etc #dev : That's a web browser #dev : I also dislike putting the wallet functionality back into darkfid, since it stops you from using the same node for multiple clients #dev : i didn't say that #dev : i said providing a mechanism to manage the daemons in a unified way using a single connection #dev : Don't think under the assumption that everything is running on a single machine #dev : 1. some kind of kernel which loads them as dynamic objs 2. a loader which manages processes 3. a message broker for discovery of the daemons. daemons register their status with the broker. #dev : it doesn't have to be the same machine, you can configure things for different machines #dev : at the very least you need a broker, when i give you an endpoint like mymachine.com:5588, you can introspect the services being provided #dev : What's the usecase you're imagining? #dev : there will be many apps like darkirc, taud, dao, swaps, accounting ledger, markets, dex, and so on #dev : when you add a plugin, it will be insane to have to setup a new daemon and configure an endpoint for your plugin #dev : we will lose all our users. it would be easier if they could configure their node somehow to add the module (where needed), and then the plugin autoloads it from our default endpoint #dev : add a plugin where? #dev : anyway i'm not concerned with this rn, the main stuff in the text is the stuff about plugins #dev : plugin in the wallet #dev : the do-it-all gui wallet you mean? #dev : it's completely standard, see https://darkrenaissance.github.io/darkfi/arch/wallet.html #dev : the apps need to talk to each other, for example, attaching a fee #markets : woah damn #dev : There likely needs to be a set of base functionality provided by the wallet which plugins then use #dev : Like coin selection, fee attaching, etc. #dev : These are base network things #dev : The plugins would have to implement logic for their specific contract stuff and how to build txs there #dev : Regarding comms, for example in the case of OTC, this needs to be done on a different layer #dev : As it exposes a different type of resource - here you start needing a network likely #dev : did you read the doc? #dev : /plugin/money provides those functions #dev : you forget that apps are composable. the dao can call any function #dev : I'm not arguing that #dev : I'm saying that there's different types of things to do and they're not all-in-one #dev : In the case of OTC, you have the thing that builds the tx, but you also maybe need networking to match your swap #dev : yeah that's why i said there's backend - everything to do with network, doesn't use keys, .etc, and then there's plugin - everything using keys #dev : Something else needs to do the networking stuff #dev : yes that's the backend, hence why i said taud and darkirc can be split from event_graph, the backend is the same for them #dev : for example with taud, that stuff can actually just go directly in tau and it could talk with eventgraphd #dev : But why pollute the p2p network with multiple types of messages one of which is irrelevant for a specific app? #dev : what you are describing is decoupling the underlying modules(like p2p, eventragraph) from the app themselvs #dev : and deploy them as seperate daemons which create app specific instances dynamically #dev : i'm not saying to pollute p2p, i'm saying to separate the backends #dev : well i didn't say seperate daemon, i actually argue it should be the only daemon running them as modules #dev : that means darkfid will need p2pd to operate, darkirc p2pd and eventgraphd, etc etc #dev : but if not modules, then either processes or at least provide a broker for discovery of the services #dev : you could choose to keep p2p in darkfid, but for example darkirc and taud both manage keys #dev : I'm giving you a "translation" of what you are describing into system terms #dev : yep true #dev : systemd all over again :D #dev : otc, darkirc, taud, dao - all use event graph but require separate daemons to operate. #dev : and? #dev : i mean darkirc obv is a daemon for irc, but in the ui case, it doesn't actually require a specialized daemon, just access to the darkirc event graph #dev : that's what i mean by pushing the functionality into a plugin and using a unified backend for all those usecases #dev : making darkirc(or any daemon for that matter) to also operate as a lib is a different thing #dev : like in the ui you can create a darkirc struct/instance #dev : and manage it it like that #dev : what you are describing, is decoupling the apps from their respective backend, in order to be able to server more apps with the same backend #dev : yes, and potentially providing a unified "kernel" to manage those backends #dev : to showcase what I'm describing, check bin/darkfid/src/tests #dev : and if not a kernel, then a loader, and if not that, then a broker for discovery #dev : there we genearate couple of node instances for the test #dev : so the test in that case is the overlord manager of said instances #dev : anyway this is not the main section, this is just an addendum #dev : the main part is the stuff about plugins: https://darkrenaissance.github.io/darkfi/arch/wallet.html#specifics #dev : each plugins talk to modules (which are nodes rn) #dev : when the module interfaces are loaded, they have access permissions for them, so they can whitelist certain plugins or allow all #dev : btw we can already support the multiple apps single backend paradigm #dev : at least for p2p #dev : how? i don't think we can #dev : as long as apps don't have same message names etc, you can attach all their protocols into a single p2p #dev : ah no that's not a good idea #dev : bingo :D #dev : the p2p network will be unstable and fragment #dev : you misunderstood tho, i'm not saying to put all p2p in the same network #dev : then what? #dev : i'm saying (for example) that event graph as used by most apps doesn't use custom protocols. #dev : the daemons don't need to store keys or do anything. the app specific stuff could be in the client #dev : yeah thats why we decoupled darkfid from having wallet stuff and moved them all into drk #dev : drk is the client of darkfid #dev : you could do the same for darkirc for example by creating a decrypt script for weechat #dev : then weechat can handle the keys itself #dev : well for weechat we still need a daemon to handle the messages #dev : why a daemon? you just need an encrypted messages handler, which can probably be a python script #dev : for which you configure through fses #dev : s,fses,fset #dev : ah you're saying the eventgraphd just publishes the messages #dev : which in turns "breaks" the universal compatibility with irc compliance clients #dev : since each client needs to have its own decrypt handler #dev : frieren: yeah it just "broadcast" data to who ever listens #dev : We had that, but it didn't really work out #dev : and they then handle them how they want #dev : (Weechat script) #dev : brawndo: yeah I'm not saying its a good model #dev : just describing whats the "proper" way to hanlde what frieren is describing #dev : I gave the darkfid-drk decouple example for that reason #dev : darkfid is just a "replicator" of current network state #dev : it doesn't operate over the data #dev : drk holds the keys and receives the data(block) and then parses them and handle them #dev : semi-exception is when running darkfid in mining mode, where you pass the rewards address, but even then, the key to create the miners/coinbase tx is randomly generated #dev : there's persistent nodes running some process to sync data from the network (darkfid downloading/verifying blockchain, event graph, ...) #dev : there's scanning done by wallets on startup (check for recv'd payments, decrypt DMs, .etc) #dev : scanning downloads the updates from persistent nodes #dev : lastly wallets can interact with nodes to push data to the network, or communicate with other nodes .etc #dev : -- #dev : stop calling them wallets and call them clients #dev : seems like these are the 3 main usage patterns #dev : ok clients #dev : wallets just means they have keys #dev : what you really want, is a gui to manage/hanlde all the corresponding daemon-client combos #dev : a module/plugin in that case is exactly that, the combo of a daemon and a client #dev : for example for the gui to support both blockchain and irc, it should encorprate the pairs #dev : like init a darkfid daemon and a drk client, and a darkirc daemon and its client(which in your case is native) #dev : so the app really manages just combinations, a glorified task manager :D #dev : i think maybe there's just 2 things: darkfid and event graph #dev : depends #dev : is the event graph gona handle both darkirc and tau for example? #dev : yeah i will write plugins for those in the UI #dev : You need separate instances of the event graph for darkirc and tau #dev : we don't need to run darkirc and taud #dev : Why would you mix them? #dev : in the case of drk, since its cli yeah you just need to manage darkfid, and simply trigger the drk api through the gui #dev : i'm not saying to mix them #dev : ++ on not mixing them, we are reverting back to decoupling backends to server multiple apps convo #dev : everytime i talk about spawning p2p, you all assume i'm talking about the same p2p network - i'm not #dev : hence why I mentioned daemon+client combos #dev : i'm talking about a daemon which can spawn a new subnet and proxy the traffic to you #dev : You're saying about running one eventgraph instance #dev : i didn't say anything about instances #dev : But what's the practical difference between 1 eventgraphd running on two p2p networks vs 2 separate event graphs on two p2p networks #dev : brawndo: I think they are saying an overlay manager of instances #dev : When now you need the eventgraphd to proxy the traffic correctly #dev : like having a masterp2p which simply spawns and handles p2p instances #dev : the practical difference is if i make otc, dao, swap, accounting, taud, .etc i don't need multiple redundant daemons running #dev : and those instances are passed to the actuall daemon #dev : it's just a comms mechanism #dev : I think this problem needs to be fragmented into smaller ones because we're not landing on the same page #dev : frieren: gui is the single daemon running #dev : gui is not a daemon #dev : it can start and stop randomly #dev : guid then? XD #dev : as I said again, you are probably refering to an overlay master daemon, which is responsible to "spawn" instances given by its client #dev : those instanses are not new daemons, just stuff running by the master daemon #dev : yes for event graph #dev : i think this + darkfid handles 90% of major use cases #dev : wait #dev : there is more #dev : do you want to use same backend for deployed stuff in that master daemon? #dev : aka darkirc and tau use the same event graph db? #dev : not the same db #dev : aha #dev : another thing in the future will be the dht #dev : if its not the same db, then what you are describing is as I said a master overlay to handle multiple "instances" of daemons #dev : since you will "spawn" a new eventgraph object for darkirc and taud #dev : so in reality, you just create a new darkirc "daemon structure" to run and manage #dev : you create less daemons to manage #dev : wdym by that? #dev : no need for taud, daod, swapd, .etc #dev : yeah everything is under masterD #dev : i think it's probably less code and less mgmt tbh #dev : you just define the config of the underlying daemon/process in the client #dev : less code no I dissagree #dev : since the masterd is a glorified tmux/screens script #dev : yes ofc its less code #dev : you don't have to add event graph to every single daemon and add all the daemon boilerplate #dev : you don't even need a daemon #dev : *the daemon #dev : describe how would that look in reality #dev : lets say I want to add darkirc and tau #dev : how would that look in terms of steps #dev : lets do tau, tau on init, gets event graph to do sync, then when using client, it will download data, unpack it and do whatever's needed #dev : frieren: are you writting something? #dev : ah no i'm kinda tired, we just all zoomed in on sth really minor when i was more interested in the other stuff #dev : this part is not relevant to my work rn #dev : I dissagree on it being minor, we are talking about the backbone of the design #dev : at least explain what you mean by daemon boilerplate #dev : info!("Instantiating event DAG"); #dev : info!("Registering EventGraph P2P protocol"); #dev : info!(target: "taud", "Starting P2P network"); #dev : info!("Syncing event DAG (attempt #{})", i); #dev : (in taud) #dev : and it continues #dev : Again the scope of this is too big and it should be more smaller things #dev : tbh each taud workspace should use a different p2p network #dev : How about we start with p2p swarming first? #dev : That will give us a clear separation of the p2p subnets #dev : if by boilerplate you mean the actual code, just create a macro like async_daemonize #dev : sure, but as i said rn i just wanted clarity on the plugin arch #dev : frieren: It's hard because we're mixing things #dev : On one side you have the sandboxed contract stuff, and on the other side you have system IO #dev : ++ they overlap a lot #dev : They shouldn't be #dev : wdym overlap? #dev : dao plugin needs to call money but also coordinate with over dao members over event graph p2p #dev : *other dao #dev : I would argue they're completely separate things/scopes #dev : why are you mixing contract extensions(the dao plugin) with infra? #dev : The former is about interacting with the contract, and the latter is people #dev : that app mixes different functions #dev : namely: calling another plugin, using event graph and then pushing tx to darkfid #dev : presenting data from multiple sources is not mixing functions #dev : or handling in that case #dev : adding a wallet plugin, aka a new contract that does some stuff, is not mixed with social coordination, or wallet coordination #dev : they are distinct different processes, that happen to be presented under a unified ui #dev : So let's say "calling another plugin" is interacting with the contract. For this, we kinda settled on having WASM plugins that use some standard wallet API #dev : its not interacting with the contract #dev : Pushing tx to darkfid to me sounds like a native wallet thing, done at the end when a certain operation is finished #dev : Yes it is #dev : that means calling smart contract functions on-chain #dev : s,contract,& client API, #dev : Better? #dev : Now what is unclear is "using event graph". To me this is weird because we come on the area of doing system IO #dev : yes, the plugin provides an API which is callable by other plugins for this purpose #dev : What would be the architecture of these kind of plugins/protocols? #dev : How do we keep it secure? #dev : i wrote a doc, did you read it? #dev : The doc is sparse and doesn't answer my questions #dev : https://darkrenaissance.github.io/darkfi/arch/wallet.html#plugins #dev : You're just saying it's scriptable from any language #dev : There's nothing about security there #dev : > The scene graph then applies access restrictions depending on the ownership semantics of properties and methods (think like UNIX users and groups). #dev : So is it still WASM? #dev : Basically, what's stopping me from running rm -rf / #dev : yes it's sandboxed, whether wasm or not, see https://codeberg.org/darkrenaissance/darkfi/src/branch/master/bin/darkwallet/src/py.rs #dev : brawndo: I think the differentianting point is "Each app has a separate plugin", frieren: does that mean by dao plugin having an app which consist of a "darkirc" along with the corresponing contract? #dev : frieren: How is it sandboxed? I can't see #dev : no, it may have access to darkirc or other daemons #dev : why would it need access is the question? #dev : brawndo: it can be sandboxed by wasm or pypy .etc #dev : what does "using event graph" means #dev : (X) Doubt #dev : how dao plugin "uses event graph"? #dev : thats the question #dev : how or what for? #dev : what for #dev : how, by accessing /mod/event_graph #dev : what for: how do you use a dao otherwise? do you copy paste base64 strings? #dev : or for example swaps, you want to list orders #dev : at some point, you need to access data on a network #dev : the reasoning is ux then? #dev : for the dao, you describing coupling access to the dao coms with the tx generation stuff, so users don't have to do a copy paste from darkirc to the dao client, did I understand properly? #dev : its not just ux, you cannot do anything. you cannot have an orderbook or a marketplace #dev : 1) What #dev : that doesn't make any sense #dev : the problem is you are trying to couple everything under a do-it-all app and minimizing backends #dev : i mean you could say that about any multimedia productivity software like blender, gimp, video editors, .etc #dev : being scriptable does not mean do-it-all #dev : None of those have any security #dev : The idea with using WASM was for safety and running untrusted code #dev : We can't have that with stuff that does system IO unfortunately #dev : you have to distinguish plugins (trusted) and modules (untrusted) #dev : Yeah but you won't be running one without the other #dev : modules are accessed by /mod/foo, and they have access permissions set #dev : so they can limit how they're used by certain plugins #dev : plugins are sandboxed, so they can't break this access pattern #dev : morever, this applies in general to everything such as window events, since it's a generic mechanism #dev : Those access patterns are valid only for sandboxed plugins #dev : Native code can run syscalls #dev : But frankly there's no way around it #dev : yes correct, you should run any daemon you don't trust #dev : *shouldn't #dev : Right #dev : firefox used to have untrusted XUL which meant you could instrumentalize your browser (such as reloading a local webpage when it changed), but they replaced it with chrome's addon arch which is fully sandboxed #dev : now you cannot do that thing and addons are much more limited in scope, so they really killed their ecosystem #dev : Yeah #dev : okay so if we take the path of "don't run code you don't trust" #dev : Then we don't have to use wasm at all for plugins #dev : plugins should be sandboxed #dev : but the backends should not #dev : backends/modules/daemons (used interchangeably here) #dev : Why is that? #dev : plugins can be fully sandboxed, and they are apps that users download #dev : But they're useless/less-useful without the module #dev : a plugin when installed requests the permissions it needs: Vec<(node_path, ObjectType, Action)> where ObjectType is Property, Signal or Method, and Action is Read, Write, Execute #dev : the UI can decide how it wants to display this info #dev : But what about in practice? #dev : I'm not worried about the theory at all