PikaPay - On-chain Privacy-Preserving Payroll , Leveraging Attestations to Verify Funds

Make sure to checkout the project , and if you love what we are building plz consider us voting pikapay! @Eric

Welcome to hackaTRONs7 ! What do you think is the potential users reach for pikapay?

I think also here is an ‘inspiration’ yeah GitHub - tkeith/squirrelpay: Privacy-preserving on-chain payroll prototype?

At least an improvement of UI 


@admin.hackathon

4 Likes

Yeh its an inspiration as well @constantinpricope201 @admin.hackathon you feel free to check out our smart contract , github and website :slight_smile:

https://pikapay.netlify.app

Season 7!! Let’s Gooo!!!:mechanical_arm:

1 Like

lol ! you are right :sweat_smile: :crossed_fingers:

1 Like

I think it’s the first time I see a project here integrating or even mentioning EAS’s solution.

I understand the choice of BTTC cause the chain is cheap. But atm Tron is way easier to access (USDT transfers from CEX to wallet using BTTC network is a pain if you don’t have an HTX account). Well it will probably change in the future but I can see currently a limit here in terms of usage.

Do you plan to make some marketing and reach out to companies to promote the use of your product? What’s the strategy and business model? Any subscription model or something?

1 Like

I see a lot of Zkp thing in your smart contract maybe a bit hard to grab it for others, i have a doubt , can you guide me after transferring ownership to receipents , doesn’t the depositers have to transfer them commitment proof manually? So they can withdraw privately or with attestation? Or their any other thing which I might be missing?

1 Like

Hello team Pikapay, it is like your website is broken. Please fix this to give users the chance to test what you are building

1 Like

Hey i would recommend to try the app using laptop or pc.

Over the past week, we’ve made several advancements. The final version of Pikapay, now fully privacy-focused with zksnarks and (ethereum attestation integrated into BTTC chain), is live, and all milestones have been successfully completed.

Two core functions are here

  1. Updates commitment onchain and get a zkproof for it:
require(!spentNullifiers[nullifier], "Balance already spent");

// Verify ZKP proof of ownership before updating the commitment
bool isValid = zkpVerifier.verifyProof(
    proof,
    [newCommitment, nullifier]
);
require(isValid, "Invalid ZK proof");

// Update state: store only the commitment, concealing identity
spentNullifiers[nullifier] = true;
commitments[_batchId] = newCommitment;
withdrawableAmounts[newCommitment] = withdrawableAmount; // Storing the withdrawable amount

emit OwnershipTransferred(_batchId, msg.sender, address(0), beneficiaryBalances[_batchId][msg.sender]);

}

  1. Withdrawing the attested tokens privately by submitting zkproof.

     Batch storage batch = batchRegistry[_batchId];
    
     require(!batch.isFinalized, "Batch has already been finalized.");
     require(!spentNullifiers[nullifier], "Balance already spent");
    
     // Verify ZKP proof for withdrawal
     bool isValid = zkpVerifier.verifyProof(
         proof,
         [newCommitment, nullifier]
     );
     require(isValid, "Invalid ZK proof");
    
     batch.token.transfer(msg.sender, _withdrawAmount);
    
     token.safeTransfer(msg.sender, _withdrawAmount);
     spentNullifiers[nullifier] = true;
     commitments[_batchId] = newCommitment;
    
     emit AttestedWithdrawal(
         _batchId,
         msg.sender,
         _withdrawAmount,
         batch.attestationDetails,
         _metadata
     );
    
     // Finalize the batch if supply is zero
     if (batch.remainingSupply == 0) {
         finalizeBatch(_batchId);
     }
    
     emit AttestedWithdrawal(
         _batchId,
         msg.sender,
         _withdrawAmount,
         batch.attestationDetails,
         _metadata
     );
    
     if (batch.remainingSupply == 0) {
         finalizeBatch(_batchId);
     }
    

We have successfully completed all milestones of pikapay , only thing left is to deploy it for Bttc mainnet @admin.hackathon

1 Like

I don’t believe so while the idea may be similar, the code and implementation have significant differences. I hve checked it , while this one is zk project and the other one is not.

1 Like

I wasn’t aware that bttc supports attestation. Did you deploy eas contracts on the BTtC chain first? Or could you share the documentation? Thanks

1 Like

Team, do you have a statement on this issue? Has such a thing happened??

1 Like

Replied to you on the post already :slight_smile:

hey @SimbadMarino Can you plz check the dm.

1 Like

Thanks for the feedback simbadMarino :slight_smile:

1 Like

How did you get the feedback?

1 Like

I dmed him you could do the same

ok @SimbadMarino we DMED you as well :slight_smile: , waiting for you there