Comments (4)
Hey @acoglio I also need some clarity on what these are. I'll follow-up with the protocol team e.g., @raychu86 and @howardwu and update this issue with their thoughts. It may take a few days, though.
from welcome.
@moAlobaidi @aharshbe Thank you for helping to track this down. (And no, I don't know the definitions; I opened this issue both to get the doc improved and to understand the details myself.) I have some follow-up questions:
- How is the generator
G
computed exactly? I.e. what doesTestnet3::new_bases()
do? Presumably it's calculating a curve point according to some hashing algorithm, so the question is what that is. - Each of
sk_sig
andr_sig
is a sequence of 32 bytes, resulting from BLAKE2s, but their use as exponents inG^sk_pig
andG^r_sig
needs them to be integers. Are the 32 bytes converted to integers in little or big endian order? - In
HashToScalar(pk_sig || pr_sig)
, is||
concatenation, or bitwise 'or'? - What hash function is
HashToScalar
exactly? - In
sk_sig + r_sig + sk_prf
, what are the exact meaning of+
? Aresk_sig
and the other (32-byte sequences from BLAKE2s) added as (little or big endian) integers?
(As discussed at today's meeting, this level of detail may or may not be the goal for this developer documentation. The purpose of my questions is to get to an informal but precise specification, which would hypothetically suffice for a well-informed developer to implement account creation and other protocol calculations without looking at our Rust code.)
from welcome.
Hi @acoglio. Taking a look at this now-- would you be able to provide definitions of the referenced values and functions?
from welcome.
From @raychu86:
Compute pk_sig := G^sk_sig.
Compute pr_sig := G^r_sig.
Compute sk_prf := HashToScalar(pk_sig || pr_sig).
Compute view_key := sk_sig + r_sig + sk_prf
The G^
and HashtoScalar
here are done with public parameters, which is abbreviated pp
.
In code its:
pub static ref GENERATOR_G: Vec<Group<Testnet3>> =
Testnet3::new_bases("AleoAccountEncryptionAndSignatureScheme0");
pub static ref POSEIDON_4: Poseidon4<Testnet3> = Poseidon4::
<Testnet3>::setup("AleoPoseidon4").expect("Failed to setup Poseidon4");
And then Address is derived from a view key like this:
Compute address := G^view_key
from welcome.
Related Issues (20)
- Add an additional release binary labeled, leo.zip for one M1 machines HOT 1
- Add docs for signature type and signature::verify in Leo
- Right Hand Side of Shift and Exponent Operators must be 8-bit, 16-bit or 32-bit unsigned int HOT 1
- Update documentation to describe `finalize` scope, program mappings, and public state HOT 3
- installing snarkOS HOT 3
- [Feature] Leo global constants
- [Feature] Leo tuples
- [Bug] Weird rendering
- [Rendering Bug] graph rendering on `developer.aleo.org`
- [Feature] Document Async and Futures
- Upgrade documentation to docusaurus 3
- Aleo on Mirror
- Upgrade Aleo Wallet Extension
- address owner
- Feat Request - Confidential Assets
- [Bug] Variable index access in snarkVM
- Questions on latest Leo breaking changes notes at `/documentation/leo /17_testnet_beta.md`
- Revamp the Hello Leo tutorial.
- Aleo Developer Documentation Review
- Auction example on the Docs are outdated
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from welcome.