Is there a maximum number of transactions a block can hold? If the network is under heavy use and transactions are being recorded in these blocks faster than normal, is there a cap on the size of the block?
Perhaps the rule is 20 second slot time, or a full block?
If this is the case, wouldn't a flooded network lead to decreased epoch time because of shortened slots?

Both the block size and the transaction size are defined as protocol parameters. These can be changed at any time by IOG, or voted on once we have Voltaire. Blocks come on average every 20 seconds, but the closest blocks can be currently is every second.
maxBlockBodySize is 65536 bytes and maxTxSize is 16384 bytes. As the network becomes more useful and congested, these parameters can be changed to accommodate the additional traffic.
We can also modify the activeSlotsCoefficient which is currently 0.05. By modifying this we can make blocks appear more frequently on average instead of 20 seconds.
Cardano has a verify flexible protocol so it can adjust quite a bit on its own before we need to worry about implementing hydra for additional scalability.
{
  "txFeePerByte": 44,
  "minUTxOValue": 1000000,
  "stakePoolDeposit": 500000000,
  "decentralization": 0,
  "poolRetireMaxEpoch": 18,
  "extraPraosEntropy": null,
  "stakePoolTargetNum": 500,
  "maxBlockBodySize": 65536,
  "maxTxSize": 16384,
  "treasuryCut": 0.2,
  "minPoolCost": 340000000,
  "maxBlockHeaderSize": 1100,
  "protocolVersion": {
      "minor": 0,
      "major": 4
  },
  "txFeeFixed": 155381,
  "stakeAddressDeposit": 2000000,
  "monetaryExpansion": 3.0e-3,
  "poolPledgeInfluence": 0.3
}


Accessing yoroi keys from a script Is it possible to access yoroi private keys from the outside? For example, to write a script that does something with them?

Yoroi doesn't need to be involved. You can access your keys using the cardano-wallet suite of tools. You just need your seed phrase.
Yoroi and other wallets are just interfaces to the blockchain. The private keys on the chain are the same. Using the command line tools developed my IOG is basically what the wallets are doing behind the scenes.


How does Cardano differentiate itself in the DeFi space? New here. How does cardano differentiate itself in the DeFi space? What's the fastest way to start experimenting with applications?

At this moment, they are no DeFi applications deployed on Cardano as we're waiting for smart contracts.


What improvements will Basho bring? I assume it will be a precursor to Hydra, but I haven't heard it talked about very much.

You can learn more about the Basho phase at the Cardano Roadmap, but I will briefly summarize what it says.
The Basho phase is focused on improvements to scalability and interoperability, this will improve the performance of the Cardano network as it grows and transaction volumes increase. One important core development this phase will bring is the implementation of sidechains, which are new blockchains that are interoperable with the main chain. Basho will also allow for parallel accounting styles, meaning that while the main chain uses the UTXO model, a sidechain could use account-based models giving the ability to support and switch between the two models.
I hope my brief summary helps, but you should definitely look at the road map for more information.


What do I need to run a stake pool? I would like to run a stake pool, but don't know if I am capable to do this. What do I need for that?

Running a stake pool requires two main components, technical ability and marketing savvy. I'll outline some of this at a high level for you below.
Technical

Linux server administration. You must be able to setup and administer a server that will run your pool and relay nodes. You will need to be comfortable running applications in the terminal.
Bash scripting (for setting up your pool, running the nodes, etc.)

Marketing

A pool cannot make blocks without attracting delegation. It take around 1.2M ADA to average one block per epoch.
Pools need effective marketing to attract enough delegators unless you own enough ADA yourself.
This is actually the hardest part about running a pool.

One last thing is pledge, currently the pledge only has a small effect on the rewards a pool earns. However, this is set to increase in the future. The exact amount of pledge needed is unknown but will be more than a few thousand ADA. Looking at most of the pools that are out there I would assume anything less than 50-100k ADA will not be sufficient.
There is a plethora of resources for how to setup a node, but hopefully this helps to answer the question of whether or not this is something you want to pursue. Good luck!


Plutus Pioneer Program - Lecture #1 Problem with cabal build I ran into this dependencies error on Ubuntu when I try to build the English Auction, does anyone have an idea how to solve it ?

Please switch to using either the new project style and the new-build command
or the legacy v1-build alias as new-style projects will become the default in
the next version of cabal-install. Please file a bug if you cannot replicate a
working v1- use case with the new-style commands.

For more information, see: https://wiki.haskell.org/Cabal/NewBuild

Resolving dependencies...
Warning: solver failed to find a solution:
Could not resolve dependencies:
[__0] trying: plutus-pioneer-program-week01-0.1.0.0 (user goal)
[__1] next goal: base (dependency of plutus-pioneer-program-week01)
[__1] rejecting: base-4.12.0.0/installed-4.1... (conflict:
plutus-pioneer-program-week01 => base^>=4.14.1.0)
[__1] fail (backjumping, conflict set: base, plutus-pioneer-program-week01)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: plutus-pioneer-program-week01, base
Trying configure anyway.
Configuring plutus-pioneer-program-week01-0.1.0.0...
cabal: Encountered missing dependencies:
aeson -any,
base >=4.14.1.0 && <4.15,
playground-common -any,
plutus-contract -any,
plutus-ledger -any,
plutus-tx -any,
plutus-tx-plugin -any

It looks like your cabal version is too old.
You can make sure you have the right one if you first start a nix-shell at the top-level directory of the plutus-repository, then cd to the code folder of the plutus-pioneer-program-repository and run cabal build from within that nix-shell.


How is new ADA created? In a Proof-of-Work protocol, a certain amount of the blockchain's native coin is issued with the minting of a new block as a way to reward miners for their efforts and involvement in the network. As far as I know, though, no coins exist prior to the creation of the genesis block, and after this point, new coins begin to be issued at some rate.
How does this work in a Proof-of-Stake protocol? How does the issuing of new ADA work in Cardano? Was there a certain number of ADA created at the beginning? Or has the 31.9B ADA currently in circulation (out of the 45B max total) all been a product of stake pools forging new blocks?

All ADA has already been minted. Technically it was all minted in the first block. The stake pool payouts come from the reserves and transaction fees.


Why Strict evaluation operator "!" used in record definition used in Plutus core? While declaring records for use in Plutus strict operator is used like this.
data Auction = Auction
   { aSeller   :: !PubKeyHash
   , aDeadline :: !Slot
   , aMinBid   :: !Integer
   , aCurrency :: !CurrencySymbol
   , aToken    :: !TokenName
   } deriving (Show, Generic, ToJSON, FromJSON, ToSchema)

Does this mean that Plutus core does not use lazy evaluation?

This is correct. Plutus Core uses eager evaluation. You can see this in the first section of the Plutus Core Specification. I'm not sure why however I'd expect it is to allow you to accurately estimate fees and avoid infinite data structures.
This PDF contains the formal language specifications of the Plutus Core language.


Why are staking rewards still coming to my Daedalus wallet when I moved the funds to a hardware wallet? I recently moved my funds from a Daedalus Wallet that was receiving staking rewards around 18 days ago to a Ledger for cold storage.
My staking rewards are still being sent to my previous wallet, is this just the snapshot doing it's magic?  I ask because I thought the snapshot was only for an Epoch, and it has been happening for 3 Epochs now, nothing bad, I am still receiving my rewards, just curious, thanks!
Ledger still on the Daedalus wallet.

You start getting rewards 3 epochs after you first delegate. You will be getting your reward for the next 3 epochs after you move, unless you undelegate and get your 2 ada you deposited at first.


Hasura - Graphql Playground throws "GET query missing" 400 status code response I am trying to setup my graphql web UI console as below:
[![enter image description here][1]][1]
Hausra CLI - version=v1.3.3
Hasura GraphQL Engine: v1.3.1-beta1
So when I navigate to :3100 I get "GET query missing" 400 status code response. That is, when I visit port 3100 in browser I don't get a UI. Instead i get plain text "GET query missing"
Edit:
Ok so I learned that it's saying missing query because I did not add query parameter to url below
http://IP:3100/

If I add a parameter I get a proper response:
http://IP:3100/v1/graphq?query={hello}

and that nice I guess I can use this for development. But it would be nice to have the playground pictured above
[1]: https://i.stack.imgur.com/P6tEN.png

To access the playground, you have to manually turn it out using this guide.


What are the technical difficulties with implementing voting on hardware wallets? Why is it so hard to make voting possible for hardware wallets?
What are the technical difficulties to implement that Feature?

One of the main problems with adding new features to hardware wallets is the long update cycle.
Developers can't just upload a new version. A hardware wallet like Ledger Nano series can only get an update once a month, and it has to go through a 3rd party process beforehand.
Therefore, they lag a bit behind in functionality. You don't usually do iterative updates on hardware wallets. Instead, you release one when it's ready.


What's the difference between "on-chain" and "off-chain" in plutus smart contracts? Smart contracts written in Plutus can be divided in two: an on-chain part and an off-chain part. What's the main difference between these two?

I think the Plutus core specification gives pretty good explanation.

Plutus Core code (and code intended for execution on a blockchain in general) can be executed in two different environments: off-chain and on-chain. As the name suggests, off-chain execution doesn’t happen on the blockchain itself, but in some other environment, such as in an electronic wallet on a smartphone or PC. In contrast, on-chain execution takes place on core nodes, machines which are actually maintaining the blockchain.

Not only the environment is different though. The purpose is also different:

On-chain code is used to validate transactions. It will be run every time somebody wants to submit a transaction to the blockchain. If validation succeeds, most likely the transaction will be written to the chain. Fees also should be paid for running the on-chain code to prevent DoS of the blockchain (if there are no fees, anybody can submit an infinite loop to the blockchain and then every node running this code will be stuck and thus blockchain won't be able to operate)
Off-chain code is used to build and submit transactions and also query the blockchain. Say, you want to participate in online auction running on Cardano. In order to do so, you need to make a bid. To make a bid, you need to send specific data to the auction smart contract, say the ID of the lot and amount of Ada. Off-chain code builds such a transaction, runs off-chain validation (so you can avoid spending fees for invalid transactions), calculates the fees and submits the transaction to the blockchain


What exactly is a Redeemer? So I am currently on lecture 1 on the Plutus Pioneer Program. In the lecture they said the redeemer is the input information that the script uses to decide if a specific UTxO can be spent. I watched a video that was made two years ago that said the redeemer is used to decide if a wallet can receive Ada from a smart contract. The person in that video did say that these things might change because things are still under development. Can someone clear this up for me? What exactly is a redeemer as of right now? What is a redeemer's role in sending transaction and in smart contracts?

From https://iohk.io/en/blog/posts/2021/04/13/plutus-what-you-need-to-know/:

When validating an address, the script will access the data being
carried by the output, the transaction being validated, and some
additional pieces of data called redeemers, which the transaction
provides for every input. By looking up all this information, the
script has enough context to give a ‘yes’ or ‘no’ answer in what can
be highly complex situations and use cases.

In lecture 1 of the current plutus pioneers program, you find a redeemer on the auction validation script. When making a bid, there are essentially five cases to check. All these five cases need to pass or the transaction will not be even committed to the blockchain (which is good, because you're saving on fees for something that won't succeed anyway):

Is the bid sufficient (the bid is >= the minimum valid bid)
The auction hasn't closed

The three other cases also do data checks (output datum/value, bid refund).
The redeemer (in the auction example) itself is a simple data type that we can define (AuctionAction) to do data validation (particularly on inputs).


Cardano-Cosmos Bridge Are there any plans to have a bridge between the Cardano and Cosmos blockchains? Cosmos is working on the gravity-bridge which is a bridge between Ethereum and Cosmos so I assume there must be some emerging composability Cardano <-> Eth <-> Cosmos however the gas fees for this would be crazy.
Would Cardano's ERC20 converter let you go directly between Cardano and Cosmos because they both support ERC20 tokens?

The Cosmos Blockchain and Atom token are not based on ERC-20, they support their transfer, so there is no prospect that the Cardano ERC-20 converter could be used directly.
No mention has been made of a Cardano-Cosmos bridge that I am aware of.


How and when do CAs in Catalyst get feedback on their reviews? Proposers and vCAs had time to flag/review CA reviews. Where nd when do Community Advisors learn about which of their reviews got flagged (critically, but also marked for constructive feedback) and what is the outcome of this process?

The vCA's have a google doc (bear with us for now) that we share amongst ourselves for tracking review the reviewers. The CAs remain anonymous while the vCA's do not.
There has been some talk about in the future having a way for CAs to anonymously receive feedback for their reviews that were flagged in order to help guide CAs in the right direction.
I think this would be tremendously valuable, especially as the number of CA's grows almost exponentially in order to keep up with the expanding amount of proposals.
I second that you should simply join the Telegram channel and stay up to date on the latest developments from Project Catalyst, as things are changing very rapidly as we learn what works and discarding what doesn't work very well.


Is there any kind of help for people who want to start a stake pool? I would like to set up a stake pool but I have seen that with less than 800k - 1 million ADA it is not profitable. I would like to know if there is any kind of help for those modest pools that want to start with this type of structure to overcome the first months of life and cover the costs of servers until marketing and advertising do their job. Thank you very much.

You can apply for support from the Cardano Foundation here. https://iohk.io/en/blog/posts/2021/04/01/announcing-a-new-round-of-community-stake-pool-delegation/
These happen quarterly, there's no guarantee that you'll get it, but it's worth a shot, especially if the mission and vision of your stakepool aligns with that of the foundation.
Edit.
It seems the form is closed, but I'd suggest keeping an eye out for the next round of delegations.


What is the difference between Plutus (Marlowe) and Glow? What is the use case of Glow when you have Plutus and why a developer would use it instead of the other smart contract language which is natively supported by Cardano?

Plutus is specific to Cardano while Glow works across multiple blockchains. Saying this, Glow is a 'domain specific language' which is only meant to be used for programming DApps while Plutus is a Haskell library.


Where can I find formal work comparing PoS and PoW models? For some time now I have been trying to find some clear and objective comparison of proof-of-stake (PoS) and proof-of-work-based (PoW) consensus protocols. Unfortunately, pretty much every comparison I have found has been written by a partisan of one or another coin, and has been strongly colored by the writer's opinions of each specific coin's virtues and defects (which are, more often than not, tangential to the formal properties of its consensus protocol).
What I would like to find is a formal comparison of PoS and PoW. By this I mean a comparison that models each protocol (including their possible variations) formally, in idealized forms that are independent of any real-world coin, and in such a way that it becomes possible to characterize objectively the relative strengths and weaknesses of these idealizations. Such characterizations may include, for example, expressions for cost per transaction, or the probability of success a particular type of attack, in terms of the values of various model parameters.
I realize that such work is difficult to do, and that it is rarely definitive, as there is always a gap, often a considerable one, between theory and practice. In other words, factors that cannot be adequately captured by the models may ultimately be decisive in practice.
Still, even with these caveats, such formal work can still help to identify and clarify the main structural features of the real-world problem that impinge on the comparison.
I would appreciate any pointers (to papers, books, individual researchers, etc.).

There are many variations on proof of work and proof of stake.  It is unlikely that there will be a formal comparison of these broad concepts.
The closest you are likely to find are informal comparisons such as Charles Hoskinson's video "Video for Jack: PoW versus PoS"


What are the security risks of storing an encrypted wallet seed in a password manager? We've all seen the recommendation against storing our wallet seed phrases digitally. And while I understand the sentiment and reasoning, in reality, for many it could be even less secure to store a piece of paper with the seed phrase.
This morning I tested encrypting a seed phrase from my computer (Mac OS). I'm curious what people think about the safety of the following process. I tested this using a randomly generated BIP39 mnemonic code.

Create a wallet and temporarily copy the seed phrase into a text file.
Open a terminal.
Encrypt the file with the following command openssl aes-256-cbc -a -salt -in ~/path/to/seed.txt -out /tmp/walletName.enc.
Enter a long but memorable string for the aes-256-cbc encryption password.
Save the contents of the resulting file in password manager.
Delete the text file from step 1.

Decrypting the wallet seed in the future then simply requires copying the contents from your password manager into a local file and using the encryption password saved in step 4 with the following command: openssl aes-256-cbc -d -a -in ~/path/to/walletName.enc -out /tmp/seed.txt.
The main problems with this method, that I see, are 1) It requires a small amount of technical know-how, and 2) users who are using automated backups (TimeMachine, etc.) might expose the wallet seed text file if they don't delete it or if the backup system happens to run while they're encrypting it. Other security issues I'm missing?

One of the biggest security threats right now is malware and key loggers.
That is why offline backup and hardware wallets are so important, as you try to shield your signing keys from your day to day computer.
You could use the method you have described on a dedicate laptop that has been airgapped (no network or outside world connection). However, hardware wallets are today very cheap and probably make sense to invest into one instead spending your time with a dedicated hardware.


Daedalus only has two translated languages. Can the community add more? I want to help translating Daedalus to Brazilian Portuguese. Where can I find instructions on how to do it ?

From what I read here at https://github.com/input-output-hk/daedalus/issues/2423 (open on Mar 2, closed on Mar 3), there is indeed only 2 languages, English and Japanese, and yes the community already proposed for more translations, but as of now they will focus on the two actual as adding a new language requires to check carefully “every single line of text”. The verdict is that translations cannot be done by external contributions as it requires “internal people that are always present” for last-minutes changes.
I might propose that you could help translating other projects related to Cardano, for example maybe you could connect with people from specific staking pools!
It is a great initiative. :)


When smart contracts launch, will every node on the network have to run every contract transaction? When smart contracts launch, will every node (relay and producer) have to execute all contracts executions, and therefore all see the same increase in resource usage?
My inkling is that they have to (to ensure the blocks are valid), although I wondered if there was some clever way to avoid this I hadn't considered.

The validation of the state change of a smart contact in the eUTXO model is done when accepting the transaction. When a node validates a transaction, the node determines if the transaction is allowed to use a certain output as an input. The transaction will look up the script provided by the output's address and will execute the script if the transaction can use the output as an input. The node can validate multiple transactions in parallel if they are not consuming the same input.
References:

https://iohk.io/en/blog/posts/2021/04/13/plutus-what-you-need-to-know/
https://iohk.io/en/blog/posts/2021/03/11/cardanos-extended-utxo-accounting-model/
https://iohk.io/en/blog/posts/2021/03/12/cardanos-extended-utxo-accounting-model-part-2/


What known stake pool attacks exist? Recently a stakepool (CRO) changed its costs and % fees 30 minutes before an epoch end, effectively changing the rules mid-epoch for people staking with the pool.
Are there other known stakepool attacks that affect the community and stakepool delegators at large?
Is there a service for notification on SPO rule changes mid-epoch?

In regards to the fee changes, this attack is somewhat mitigated by the protocol itself. Fee changes take effect in N+2 epochs. So, even if a pool operator raises their fees right before an epoch ends, the delegators still have 5 days to switch their delegation before those fees start to take effect. The attack on the Cardano Foundation's delegation was not successful because of this.
To be made aware of pool changes, I believe there are telegram bots from both adapools.org or pooltool.io and several other services that notify you of pool changes.


Plutus Pioneer Program - Lecture #4 Homework - Best practice for logging errors Below is my attempt to implement the homework assignment.
Is the way I call the endpoint twice in payTrace with minor differences appropriate?
Since payTest2 would not execute properly without modifying the original payContract, is the way I handle the contract error appropriate?
payContract :: Contract () PaySchema Text ()
payContract = do
    pp <- endpoint @"pay"
    let tx = mustPayToPubKey (ppRecipient pp) $ lovelaceValueOf $ ppLovelace pp
    Contract.handleError (\err -> Contract.logError $ "Caught error: " ++ unpack err) $ (void $ submitTx tx)
    payContract

-- A trace that invokes the pay endpoint of payContract on Wallet 1 twice, each time with Wallet 2 as
-- recipient, but with amounts given by the two arguments. There should be a delay of one slot
-- after each endpoint call.
payTrace :: Integer -> Integer -> EmulatorTrace ()
payTrace x y = do
    h1 <- activateContractWallet (Wallet 1) payContract
    callEndpoint @"pay" h1 $ PayParams
        { ppRecipient = pubKeyHash $ walletPubKey $ Wallet 2
        , ppLovelace  = x
        }
    void $ Emulator.waitNSlots 1
    xs <- observableState h1
    Extras.logInfo $ show xs

    callEndpoint @"pay" h1 $ PayParams
        { ppRecipient = pubKeyHash $ walletPubKey $ Wallet 2
        , ppLovelace  = y
        }
    void $ Emulator.waitNSlots 1
    ys <- observableState h1
    Extras.logInfo $ show ys

I retracted the surrounding code that has not been modified.
The start code can be found here.

The exception handler does not cover the first payment contract run. I've created a separate function for this that handles this error:
payContract' :: Contract () PaySchema Void ()
payContract' = Contract.handleError
    (\err -> Contract.logError $ "Caught error: " ++ unpack err)
    payContract

Then of course you have to call the payContract' in your emulator tracer as follows:
h1 <- activateContractWallet (Wallet 1) payContract'

You can also combine everything together like this:
payContract :: Contract () PaySchema Text ()
payContract = Contract.handleError
    (\err -> Contract.logError $ "Caught error: " ++ unpack err) $ do
    pp <- endpoint @"pay"
    let tx = mustPayToPubKey (ppRecipient pp) $ lovelaceValueOf $ ppLovelace pp
    void $ submitTx tx
    payContract


Will there be token burn at any point in time in future? Will there be token burn at any point in time in future ?

Decreasing the supply of ADA by burning tokens is a method to artificially raise the value of the remaining supply. It has been repeatedly stated that all ADA has an owner/purpose and supply will not be reduced by burning ADA.
ADA relies on use and utility to increase its value.


Run cardano-node 1.27.0 testnet error, adaPerUTxOWord not found on testnet-shelley-genesis.json cardano-node  run --database-path ~/cnode-testnet/db --socket-path ~/cnode-testnet/sockets/node.socket --port 3001 --config ~/cnode-testnet/config/testnet-config.json  --topology ~/cnode-testnet/config/testnet-topology.json

Error decoding genesis at: /home/qi.mou/cnode-testnet/config/testnet-shelley-genesis.json Error: Error in $: key "adaPerUTxOWord" not found

cardano-node --version
cardano-node 1.27.0 - linux-x86_64 - ghc-8.10
git rev 17096c3fe7a52264906ff92ed245ded2344b3d00

after I add "adaPerUTxOWord":0 to testnet-shelley-genesis.json, it still doesn't work.

Make sure you download official genesis file from the build system of cardano-node.


Why is the growth in value of ADA being described as "parabolic" rather than "exponential" or something else? Here I list multiple articles since March 2021 that have described ADA's value as undergoing a "parabolic" trajectory:

26 March 2021: Cardano Technical Analysis: ADA Has Flipped The Parabolic SAR From Bullish To Bearish
17 March 2021: Cardano Is a Rising Altcoin Star, but the Payoff May Be Years Away
2 April 2021: An Emerging Trend Could Mean Wild Prices Ahead for Cardano

In the field of stocks and securities, the term "parabolic SAR" was coined in 1978 by J. Welles Wilder Jr. (who unfortunately died 9 days ago by the way).
In the cryptocurrency community, why is ADA's growth seemingly always being described as "parabolic" rather than "exponential" or following some other type of growth curve?

Searching Google for "cardano ada exponential" gives ~305k results.
Searching Google for "cardano ada parabolic" gives ~309k results.
Likely is just some resistance in the community to the mass-media habit of applying the adjective "exponential" for any sort of super-linear growth.  I don't know that parabolic is a better adjective, but it seems to be adapted by the community.


Is it possible that an honest validator node gets penalised in Cardano's POS scheme? Want to understand if there can be scenarios where a stake pool gets penalised even though it does not act maliciously. If this risk exists, what are the possible cases that can lead to penalties and is there an official documentation on it?
For example: will there be penalties if the node goes offline?

Cardano does not applies slashing (negative incentive) as it's reward scheme allow to maintain necessary security with it.
The only penalty is the rewards the stake pool operator and its delegators has missed to obtain.


Token metadata stored onchain I was wondering how to link additional (meta)data to a token. Consider a trading card game which allows a user to purchase a booster pack containing cards via smart contract. Those cards should have a TokenName and are linked to the smart contract. But how would I link additional data like datetime of mint, card stats, edition, rarity, .. ?

The metadata of a native token must be included in the minting transaction.
The token itself only has a Policy Id, an Asset Name and a Fingerprint.
Here's an example of a token, there you can see under the tab "mint transactions" the Tx and the metadata of the NFT: https://cardanoscan.io/token/59fdb627c01bd87326bef5f4df179bcccb2a2f43


Is there a timetable of dates for Project Catalyst phases/cycles? I am looking for the most reliable and official way to find:

Next date Project Catalyst starts a new cycle
Dates for the phases in the current cycle.

As you can find here there is a link to IdeaScale portal and link to Telegram chat group in which they announce all new events (Crowdcast, Fund cycles, etc.).
Basically every 6 weeks we have a fund round but sometimes because of technical or other reasons there are delays (as with Fund 4).
You can also subscribe to the email newsletter to receive the latest updates or to check in Cardano forum.


Where can I find recordings of previous Catalyst town halls? I wish to view a recent Catalyst town hall broadcast.

The user page of IOHK on Crowdcast has all the recent town halls in chronological order.  The recordings have their presentation slides and the questions (asked and answered) included in the player.
The recordings on IOHK's YouTube playlist only has the video stream available.


Undelegate stake with Daedalus wallet How do I undelegate (unstake) with Daedalus wallet to receive my 2 ADA deposit back. I remember used to be an option but it seem I can no longer find it. Is there is any way without actually using Yoroi wallet. I trying to minimize typing my keys into other wallets I rather lose those 2ada if there are no longer undelegation support for Daedalus.

There is an issue open on Daedalus github requesting this feature. Looking into the linked pull request, the feature appears to be complete but not enabled for the main client yet. Per Daedalus devs, the solution right now is to import the keys to Yoroi. You could do this after transferring out balance & rewards to minimize the security risks.


What are the ways of making NFTs unique? In the week 5 of Plutus Pioneer Program Lars described how to make NFT by spending an UTxO while minting, therefore ensuring the uniqueness of the token.
Are there any other ways of making NFTs unique?
What if I wanted to create let's say, a collection of thousands of unique tokens. Creating as many UTxOs to refer to them further on would incur significant cost in the fees. Are there any cheaper/simpler ways to do it?
PS: Solutions not available in Plutus yet are also welcome as examples.

NFTs have to be minted in some way or the other. In order to mint you will have to run a script with monetary policy for which you have to pay a fee, so might as well use that UTxO.
You can mint multiple NFTs in a single script though. Remember that a Value is identified by its CurrencySymbol and the TokenName. The CurrencySymbol is unique because of the UTxO input and is shared across all NFTs minted in the same contract. You can use a different TokenName for each NFT to ensure uniqueness.


Voting on Catalyst with Ledger hardware wallet Hey guys I really love the simple approach of just stacking my Ada with the safety and security in my ledger Nano X. But for some reason it does not seem to allow me to vote on catalyst projects. Will you guys enable this feature in the future?
I've read on some blog posts about transferring Ada from one wallet to another to vote before snapshots etc, but that seems very tedious to me.

Yes, firmwares updates for this feature has been already submitted to both Trezor and Ledger.
Now, it is up to them, when they will release an update of their firmware to their customers.


Can the value of the NFTs be added to the stake size of the pool? Many small stake pools struggle with increasing their stake. The stake could be increased by adding the value of all the NFTS held in wallets by both delegators and operators. How do we determine value? Once we have smart contracts, value will be the last sold price of the NFT, recorded in the Blockchain.

If the value of NFTs (their purchase price or last traded value) were to be added to staking then both the ADA used to purchase them and the NFT would counted.  This would make it possible to double your staking rewards by selling an NFT to yourself or a collaborator.
It would also affect the Cardano monetary policy.
Stake pool operation is a serious undertaking and gathering enough stake to establish a viable pool is part of that challenge.


When a UTxO becomes available for consumption? In the Gift.hs example from the second lecture in Plutus Pioneers Program, when I give ada, a UTxO is produced. When I want to grab that ada in the same block, it fails (There is no input or output when simulated in the palyground). But when I wait for one block and then try to grab, It succeeds.
My conclusion is we cannot produce and consume a UTxO in the same block. We can only consume a UTxO from the next block onward. Am I right or...?

That is correct. For a UTxO to be consumed it first has to exist on the blockchain. For it to exist on the blockchain the transaction that created it must exist in a block that has been confirmed by the network.


Why are proposals to solve issues discouraged during the insights phase (first week)? The insights phase is held during the first week of a proposal round. You cannot put proposals up.  Only insights can be added.
Insights are described as ideas and submitters are encouraged not to propose solutions.  At the end of the first week.  Everybody's Insights are archived and only their author can see them.

The Catalyst Team identified research that showed an "ideation" phase where participants shared their observations and experiences without proposing solutions led to better results when proposals/solutions were put forwards.
Catalyst has translated this research into their "insights" phase process.


Can the max supply of ADA be decreased or burned? would decrease the amount of the max supply of ADA tokens?
With the limited supply, it can build more demand and that might be benefit for the team and also the investors.

Decreasing the supply is a method to artificially raise the value of the remaining supply.  It has been repeatedly stated that all ADA has an owner/purpose and supply will not be reduced.  ADA relies on use and utility to increase its value.


Why is there a minimum amount of ADA required to vote for Project Catalyst proposals? Voting on Project Catalyst proposals currently requires a wallet with 500 ADA or more.
It has been stated in Catalyst Town hall meetings that it is unlikely to be lowered significantly below that figure.
What are the barriers to lowering it further?
At what point does the cost of registering to vote exceed the voting rewards?

As Dor Garbash mentioned there are several reasons:

performance - the reason why they delayed Fund4 is that now the engineering team is working to improve the overall processes so that more people can participate
fraud - to prevent people who don't want to invest time and resources of the project but want to harm the community. So if this barrier is low more scammers/spammers can participate which will lead to lower quality of the whole ecosystem
meaningful participation - this point is connected with the previous one: people who are interested in the development of Cardano and can add value to Cardano should participate


How can metadata.json properties be changed after a token is minted? I've minted a token but some of the metadata.jsosn properties don't look so great. Is there a way to update them?
The general form I've tried is:
cardano-cli transaction build-raw \
        --fee $fee \
        --tx-in $txhash#$txix \
        --tx-out $address+$output \
        --metadata-json-file metadata.json  \
        --out-file matx.raw

Technically you cannot change the metadata for a token once its minted. Thats the whole point of putting something on the blockchain-its immutable. On Cardano, token metadata is just metadata in the minting transaction. What you are doing is just adding new metadata to a new transaction with the token. This is not changing the minting metadata. You should just burn the token and start fresh.


Voting on Catalyst with multiple wallets I have created multiple Yoroi wallets to share ADA with family members. We would like to use the sum of ADAs to participate in the next voting round in Catalyst. Can we do that or is your number of ADA wallet specific?

Each wallet will represent its own amount of ADA and will have its own representation for voting.  You won't be able to pool the amounts together and will have to register each wallet to vote independently.


I have kudos in Catalyst/ideascale, why can't I give it? When I try to give Kudos to a proposal, it says that I don't have enough.  Even when I have kudos showing as available.

If there are more team members in the proposal that you have, then you cannot give kudos to the proposal.
You must accumulate as many kudos as there are team members in the proposal.


How to import Yoroi seed phrase to computer using cardano-address for use with cardano-cli? I'm trying to use cardano-cli to control the addresses controlled by my Yoroi wallet, so I thought the first thing to do is to import the keys and addresses. I did this:
$ # Type the seed phrase for the Yoroi wallet into a file phrase.txt.
$ cat phrase.txt | cardano-address key from-recovery-phrase Shelley > root.prv
$ cat root.prv | cardano-address key child 1852H/1815H/0H/0/0 | cardano-address key public --with-chain-code  | cardano-address address payment --network-tag mainnet

The output is "addr1v..." but in the Yoroi the 0th address is "addr1q...", so they are very different. What am I missing? My ultimate goal is to get the addresses and keys I need to build and sign transactions using cardano-cli, and I'm stuck at even getting the right addresses using cardano-address.

Following the instructions from the cardano-addresses README.md, I was able to generate a "delegated payment address" that matches the 0th address I see in Yoroi. However, cardano-cli transaction sign requires a --signing-key-file, which is normally generated using cardano-cli address key-gen, and I don't know how to get a cardano-cli-style signing key file from the stuff I can get from cardano-address.
I believe cardano-wallet can be used to make payment transactions, but AFAICT only cardano-cli can be used to mint tokens; I don't see anything about minting tokens in the help for cardano-wallet.

You can use Daedalus to restore your wallet on the machine and that should create a wallet file with the addresses you need.  Daedalus also contains cardano-cli as its built on cardano-node.
I did not try launching cardano-node / cardano-cli from a Daedalus install though, there may be additional wrinkles to solve.


How does a stake pool node certify a block for the block chain? How does a stake pool node certify a block for the blockchain? What part is done manually by a human pool operator and what part is done by a machine through automation?
Say Peter pays Paul $10 ADA. A pool is selected to process that transaction. What happens next?

In Cardano, time is segmented into 5 day epochs and 1 second slots.
As users publish transactions on the network, pools distribute the transactions to their peers and store valid transactions locally in a queue, known as the mempool.
In each slot, one or more validators (pools) may be selected to forge a block. That block will contain transactions from the mempool, up to max block size.
Validators are able to independently check if they are elected as the slot leader. From the Ourobouros Praos paper:

only a slot leader is aware that it is indeed a leader for a given slot; this assignment is unknown to all the other stakeholders—including other slot leaders of the same slot—until the other stakeholders receive a valid block from this slot leader

Blocks are signed by a validator with their operational key and includes the validator's operational certificate. The certificate is composed of the public portion of the operational key, certificate issue number, beginning KES period, and a cold key signature as defined in the ledger spec.
Once the new block is distributed to the network, each other validator can verify that the new block is valid, and that the publisher was eligible to forge a block in that slot.
All of this happens automatically as part of the cardano-node software. Operators only need to update their certificate periodically.
The proof of this distributed random selection process is a bit much for this answer, as is the proof for how the network selects a longest chain and handles soft forks, but worth reading up on if you're interested in this topic!


Are there plans to keep the blockchain/node size small enough to maintain decentralisation? One issue bitcoiners like to mention is node size in relation to decentralisation. Currently we are at like 10gb, I saw that the max growth is apparently 100gb a year. Are there any plans for reducing this? Or do we think technological improvements will be fast enough in the hard drive space that 100gb a year is fine? I agree with the importance of making it available to the average person to run a node.

I assume with "blockchain/node size" you mean the growing size of the immutable ledger database. The current growth rate is pretty linear. In the last 100 days it grew from 7 up to 10.5 GB

So we see a growth rate of about 1 GB per month, which would result in a 12 GB per year.
Keep in mind the ledger DB folder now contains every UTXO action since Nov-2017, not just since Shelley-Mainnet launch in Aug-2020.
New capabilities like Metadata or additional activities from native Tokens, NFTs and soon Smart-Contracts may increase the growth rate a bit.
So existing Hard drives with 2-12 TeraByte capacity should provide plenty of space for the next years.


What commercial (brick and mortar) banks support ADA staking? Some online banks have started allowing trade in ADA. None of these banks seem to offer staking. I understand the argument for self-management and decentralisation (if large exchanges start staking) but some users might not want the burdon of self-management.
What banks / online trading platforms, support staking?

Binance is the only leading exchange which offers staking that I'm aware of.


Can Marlowe contracts involve native assets? Can Marlowe contracts involve native assets? For example if I want to issue a bond denominated in USDC

Yes.
Marlowe is essentially a layer over top of Plutus Core and so it can access and/or manipulate anything that Plutus Core based Smart Contracts can access including native assets/tokens. Marlowe is more restrictive than Plutus but only in terms of computation to allow for easier/automated static analysis.
https://docs.cardano.org/en/latest/marlowe/marlowe-lang-guide.html


General approach for allowing multiple smart contract transactions per block In some applications, multiple users interact with the same smart contract and may want to do it at about the same time. Such interaction involves updating the state of the smart contract as embodied in the UTXOs of the smart contract address. One example application is a DEX.
Because all the users interact with the same smart contract, potentially spending existing UTXOs and creating new ones, potentially only one user can succeed in each block and the other users have their transactions rejected due to double-spending the UTXOs, limiting the throughput of the application.
Is there a general approach for dealing with this kind of situation to allow more transactions for a smart contract to succeed in each block?

Not as far as I know. The current model is limited to one state change (transaction) per block per smart contact.
However, depending on the specific smart contact and its use case, I can see people using a centralized entity (or a group of users) post transition proposals and then have an incentive to bundle all of those up into one that actually modifies the global state. Not ideal, but this is the price to pay to have a state-full smart contact design.


Are there any negative effects of having too many stake pools run by central exchanges? I was browsing through the adapools.org groups section to see how decentralized the stake pools were and I noticed that a lot of the central exchanges have a ton of ADA staked and lot of stake pools.

Are there any concerns to the network if central exchanges like Binance, etoro, etc gain more stake/create more stake pools that would affect the overall security of the network? Anything from a governance perspective where they would have more voting power for changes to the network in the future?

TL;DR: Centralization in the network is definitely a concern, but I don't think these numbers are scary.
Of course, the goal with staking pools is that they'll decentralize the network and encourage many stake pool adopters. Actually, Cardano has a formula used to determine block rewards and you'll notice that it reduces rewarding blocks to stake pool operators (SPOs) drastically after a critical value, determined by the number of ADA that will saturate a pool (currently that's ~63.6M ADA). So, there's not a lot of benefit for wallets/users to delegate their stake to a node which is over-saturated since the block rewards will have to be divided among a greater number of people.
However, the stake pool operators have almost no control in the governance/control of the protocol and are only responsible for providing trust/decentralization to the network.
Theoretically, if any single miner controls >51% stake then the security of the blockchain is lost. Practically, though, analysis has determined that with >50% probability a one-block attack can succeed with only 35% control of the network (see page 11). So, centralization is definitely a concern.
Now, if you treat all organizations as "independent stake pool operators" and don't denominate based on corporate structure/private ownership then you'll notice that the largest stake is Binance with 12.36%. I've read the details regarding the provenance regarding that chart, I'm not sure how accurate it is. To be sure, there's some uncertainty in these numbers.
However, my guess is that you'll see this distribution swing over 12-month periods as people seek higher returns from smaller SPOs and move funds to/from different exchanges who compete on rates.


Why are Cardano transaction fees so high? It's obviously a lot less than Ethereum's, but 0.17 ADA isn't insignificant. What are the main reasons it can't be 0.00017 ADA?

There are a important reason that explain why the fees can't be 0.00017 ADA,the prevention of DDoS attacks
The minimal fees for a transaction are calculated according to the formula
a + (b × size),
where 'a' and 'b' are constants and 'size' is the size of the transaction in Bytes. At the moment, the constants 'a' and 'b' have the values
a = 0.155381 ADA,
b = 0.000043946 ADA/Byte.
This means that each transaction costs at least 0.155381 ADA, with an additional cost of 0.000043946 ADA per Byte of transaction size. For example, a transaction of size 200 Byte (a fairly typical size) costs
0.155381 ADA + 0.000043946 ADA/Byte × 200 Byte = 0.1641702 ADA.
Why did we pick this particular formula? The reason for having parameter 'a' is the prevention of DDoS attacks mentioned above: even a very small dummy transaction should cost enough to hurt an attacker who tries to generate many thousands of them. Parameter 'b' has been introduced to reflect actual costs: storing larger transactions needs more computer memory than storing smaller transactions, so larger transactions should be more expensive than smaller ones.
Therefore, it is better to perform transactions of a large number of Ada than to perform multiple transactions of a lower number of Ada.


Where is the returning Contract Monad in the handleError function of Contract Monad? The type of handleError function is
:: (e -> Contract w s e' a)-> Contract w s e a -> Contract w s e' a

It takes two arguments

a function which takes error and returns a Contract monad (Contract w s e' a) without error
Contract Monad with error

and returns a Contract Monad without error (Contract w s e a). This is what I could understand. However when this is used in the following code
payContract = do
   pp <- endpoint @"pay"
   let tx = mustPayToPubKey (ppRecipient pp) $ lovelaceValueOf $ ppLovelace pp
   handleError (\err -> Contract.logInfo $ "caught error: " ++ unpack err) $ void $ submitTx tx
   payContract

In this function call submitTx Tx gives the Contract Monad with error and the lambda function \err -> Contract.logInfo $ "caught error: " ++ unpack err may be the first argument. What is happening to the returned Monad without error? and why void is used?

Definitions:
submitTx :: forall w s e. (HasWriteTx s, AsContractError e) => TxConstraints Void Void -> Contract w s e Tx
void :: Functor f => f a -> f ()
handleError :: (e -> Contract w s e' a)-> Contract w s e a -> Contract w s e' a
Explaination:
submitTx tx is of type Contract w s e Tx, i.e. a Contract Monad with return type Tx.
void takes any Monad and maps it to a Monad with return type (). This is useful if you don't care for the returned value: void $ submitTx tx :: Contract w s e ()
handleError then takes the Monad and handles any errors with the specified error handler (e -> Contract w s e' a). However, it doesn't change the return type of the Contract Monad. In case there is no error on runtime the return value is just passed through.
payContract calls itself recursively on the last line of the do block in order to listen to the pay-endpoint indefinitely. Let's assume you'd leave out handleError and only use void $ submitTx tx your contract would crash on the first submission error.
If you wouldn't use void, your program would still be valid, but your compiler would output a warning, because you didn't use the return value of submitTx tx.


Why do we need parameterized contracts? Can't we just use datum? While writing validation as:
mkValidator :: SomeContractParam -> SomeDatum -> () -> ScriptContext -> Bool

Could't we pass the same thing to Datum instead of using Contract Parameter?

Yes. It's important to have both options though.
Remember that the script address is derived from a hash of the compiled script code. So, if you parameterize parts of the script, the script address will be different with each parameter.
An example Lars gives in the PPP is an NFT. If you parameterize the forging policy to take a specific UTxO, and that script consumes that UTxO, you guarantee that there is only one instance of that policy. Only the person who owned that UTxO could possibly create that token, thus guaranteeing the creation only happens once.
If you had the same UTxO field in the datum, any instantiator of the script could specify some UTxO they own and the script address would be the same. Since the Currency Symbol is in fact the Script Address, any caller could create duplicates of the token and those tokens would be fungible.


Difference between "normal key" and "extended key" in cardano-cli address key-gen With cardano-cli address key-gen, what is the difference between a normal key (obtained with --normal-key) and an extended key (obtained with --extended-key)?

I'll preface with the note that cardano-cli is a legacy project from the Byron era prior to the restructuring of cardano-sl into the modern infrastructure used today. You likely want to use the cardano-address if you can. The Adrestia repo keeps track of the official tools, libraries, and APIs as well as their support for the various eras.
To give a short explanation, the way key generation in Cardano works is as follows:

You create a Recovery or Seed Phrase. This is a deterministic seed that then derives your extended private key. This is the famous 24 word phrase that you store. It derives your xprv key but it does not represent it. This means if you do not have a seed phrase, you can not get one and you'll have to create a new wallet to get it.

You create the Extended Private Key. This is the root key from which all other keys are derived (including the extended public key). This key can either be created from scratch or derived from a seed phrase. If you want your key to be loadable into Daedalus/Yoroi without poking around in the internals and manually editing the SQLite database, you need to start from a seed phrase.

You derive Child Private Keys. These are various keys that serve specific purposes. Examples include the delegation(staking) keys, the various stake pool keys, and spending keys. As the protocol grows, there'll be more of these keys however as long as you have your extended private key or seed phrase, you'll be able to gain access to those with little to no action required.

You derive whatever else from the Child Private Keys. This is where you would derive addresses, stake pool certificates, etc. This is essentially all handled by the node itself and you don't really have to worry about much of this stuff unless you are doing something specific.

So in summary, the seed phrase is the "seed" that creates everything else (and is easy to store/remember), the extended key is your "master key", and the normal key (now called a spending key) derives from the extended key and lets you spend your funds.
Also note that the terminology differs a bit between eras. Byron used a rather different key system so you should generally avoid using it unless you absolutely have to. Icarus established the basis for modern key derivation in the Cardano ecosystem and Shelley has extended upon that (with staking related keys).


Why is PoS much faster than PoW? My understanding of the topic is this:
Pow- Miners compete with their hashrate for the right to publish a block.
PoS- Validators are randomly elected to validate a block.
Why is PoS faster then? - The only computation a PoS node needs to do is validating a set of transactions in a block.
Correct me if I'm wrong or missing something.

I would not say that PoS is faster per se, but you have to carefully balance PoW challenges in order to avoid single entities or groups to dominate the blockchain with huge computing powers. This somewhat limits how fast you mine new blocks, which store verified transactions, impacting transaction speed.
PoW and PoS are "tools" to select who will create the next block. A big difference is that "winning" the proof of work also determines when a new block is created, while the rate can be fixed for PoS chains.
For PoW you want a task that takes a reasonable time: too easy, and you create too many, potentially empty blocks too fast. This will grow the chain, and potentially flood the ecosystem with coins - depending on the protocol. And if the challenge is already easy to solve, someone with a lot of computing power and no competition could just spam new blocks.
If the challenge is too hard, new blocks will only rarely be created, and all transactions are collected in an "unconfirmed transactions" list. Depending on the block size, not all transactions can be included into a new block. This would make the blockchain an unreliable financial instrument. To compensate, you could use fees and allow transactions to be processed with a higher priority, guaranteeing a spot in the next block. All this is influenced by the number of participating miners, the challenge, and must always be balanced to avoid extremes. To give some examples: Bitcoin creates a new block every 10 minutes, while Ethereum only takes less than 15 seconds.
A proof of stake chain can just dictate at what interval blocks are created. The system to select the node that created the new block is not "work" dependent, and thus not time dependent. You can create blocks at a fixed interval and guarantee that transactions are processed in time - as long as the number of transactions does not exceed the block size.
Cardano allows adjustments to this, enabling a high transaction speed. Cardanos block time is 20 seconds, and this parameter is adjustable.
If the number of nodes suddenly grows by a factor of 10, the speed would not be impacted. A PoW chain would have to adjust its difficulty, same when it's combined hashing power decreases - effectively making it slower.
To summarize: PoW can be faster than PoS. The PoW speed can change and must be adjusted, which is easier with slower target speeds (time at which new block is created). PoS is not work (time) dependent and can provide a fixed and thus potentially faster, reliable block creation speed.


Does the testnet faucet still exist? How to create testnet ADA? We are learning how to work with the cardano wallet cli in pursuit of building our product. We're just getting started. We would like to work in the testnet because we have a lot to learn and we don't want to burn real ada while we learn it.
So, we have brought up the wallet like so:
NETWORK=testnet docker-compose up
This uses the iohk docker-compose found here:
https://github.com/input-output-hk/cardano-wallet
Now, when we hit the information endpoint we get:
docker run --network host --rm inputoutput/cardano-wallet network information

Ok.
{
    "node_era": "byron",
    "node_tip": {
        "height": {
            "quantity": 201726,
            "unit": "block"
        },
        "time": "2019-09-09T18:49:36Z",
        "epoch_number": 9,
        "absolute_slot_number": 202768,
        "slot_number": 8368
    },
    "sync_progress": {
        "status": "syncing",
        "progress": {
            "quantity": 7.09,
            "unit": "percent"
        }
    }
}

So far as we can tell this is all normal. However, we're not sure how to proceed as we have no testnet ada. We found mention of a 'testnet faucet' but can't find any actual documentation on how to use it. How to folks go about creating ada for use on the testnet?

You can request tAda from the test faucet here. By adding an address without an API key you will receive 1000 tAda. You could also request an API key from IOHK to have a bespoke amount of tAda/Testcoin if required. Once you're finished with your tAda you should return them to this address (which you can see on the official documentation page too).
addr_test1qqr585tvlc7ylnqvz8pyqwauzrdu0mxag3m7q56grgmgu7sxu2hyfhlkwuxupa9d5085eunq2qywy7hvmvej456flknswgndm3


How to validate transaction where number of tokens are generated based on the value locked in a contract? As far as my understanding token with some amount can be forged by using this constraints.
Constraints.mustForgeValue SomeValue

And ada can be locked into smart contract using mustPayToTheScript if i am not wrong.
So how to validate this transaction where some ada can be deposited to the contract and contract forges the equivalent amount of tokens according to the amount of ada locked in smart contract.

Yes, Constraints.mustForgeValue and Constraints.mustPayToTheScript are used to define/create a transaction that forges tokens or locks tokens in your script respectively (https://youtu.be/6VbhY162GQA?t=1720).
There are multiple script types that validate different aspects of a transaction.
If you want to spend funds locked in a script(address) you need a validator script (Plutus.V1.Ledger.Scripts.Validator) that will validate any transaction consuming the UTXOs locked in that script. To lock funds in a script you need to transfer funds to that script, thus creating a new UTXO that is owned by the script.
If you want to forge tokens in a transaction you need a minting policy script (Plutus.V1.Ledger.Scripts.MonetaryPolicy) which validates that the forged tokens adhere to the specified policy. Minting policy scripts don't have a Datum and Redeemer available, because the transaction is not consuming a UTXO locked in the minting policy. I don't think sending funds to a minting policy makes sense or is even possible.
In your case you might want to have two scripts:

MonetaryPolicy: validates the minting transaction
Validator: A script that manages funds created from minting

The minting policy then has to make sure that the adequate amount of ada is being transferred to the fund-managing-script when validating the minting transaction.
When creating the minting transaction you can use Constraints.mustPayToOtherScript to send funds to the script.


Relay Node & Block-Producing Node, which one requires more Hard Disk capacity? As a follow-up to this questions
Say, I have a SSD of 2TB, which of the two nodes do I have to connect it to? BP or Relay Node?

Both nodes need to download the Cardano blockchain and therefore both nodes need some disk space. Currently the space needed is ~25GB.


What is the exact implementation of proof of stake in Cardano? I have a rough idea of what proof of stake does. However, I'd like the exact implementation (not the code) but a high-level description with hopefully some actual number, e.g. how many pools verify the transactions for each block, how is the consensus achieved, etc. If anyone knows or can send a resource with that information, it would be appreciated.

You might want start by checking out the documentation library. Go here and search on page for "Ouroboros".


eUTXO transaction model Vs Account Based Transaction Model What are the benefits of Cardano eUTXO transaction model compared to etherium account-based transaction model? Are any significant advantages or both are same?

There is a nice blog post bu IOG: Cardano’s Extended UTXO accounting model – built to support multi-assets and smart contracts that discusses the difference between two models.
For a more in depth comparison, I recommend the UTxO- vs account-based smart contract blockchain programming paradigms paper.
To sum UTXO up:

A UTXO is the output of a previous transaction, which can be spent in
the future
UTXO chains have no accounts. Instead, coins are stored as
a list of UTXOs, and transactions are created by consuming existing
UTXOs and producing new ones in their place
Balance is the sum of
UTXOs controlled by a given address
UTXOs resemble cash in that they
use ‘change’, and are indivisible (UTXOs are used whole)

To sum up the Account/Balance model:

This accounting model resembles how a bank operates
Users have accounts that hold their coin balance
It is possible to spent partial balances
The concept of change does not apply


How are the key parameters that control Cardano governed? I am looking to understand the 7 special keys that control all the parameters for cardano. How it's controlled, who gets to control it, and what each parameter means.

The parameters are controlled by IOG currently. There are a number of keys that govern update proposals. Update proposals are special certificates posted to the chain that can change the parameters. Each update proposal is required to have 5 signatures in order to become active. These signatures have to be in place 1.5 days before the end of the epoch in order for them to become active at the next epoch.
If you do a ledger state dump using cardano-cli, you can view the parameter change proposals and how many signatures they have.
CIP that talks about the process https://github.com/cardano-foundation/CIPs/blob/master/CIP-0009/CIP-0009.md


Burning tokens after the 'before' time slot? For a minting policy that specifies a 'before' slot requirement, it is impossible to mint new tokens after the specified time slot. Is it also impossible to burn existing tokens after the specified time slot?

Not right now, but IOG is working for a way to burn these, so for now, keep them around!


Does Marlowe Run have the capability to mint NFTs? I know the easiest way is to mint via https://www.nft-maker.io/ or https://cardano-native-token.com/ but if I want to mint it on my own, is minting in the Terminal the only option?
https://docs.cardano.org/en/latest/native-tokens/getting-started-with-native-tokens.html
I was wondering if Marlowe Run has the feature to mint NFTs in addition to creating smart contracts.

No, it is not planned for Marlowe to have a feature to mint NFTs or native tokens.
However, it will use tokens internally to represent the ownership of a role in contact.


What are the practical motivations for owning ADA crypto currency? As a person who are deciding to buy some ADA currency, what I am getting in return?
So far using ADA I can have:

Voting rights (governance)
Ability to run a pool
Grow your voting power through delegation rewards

Cardano has established community, company and the leader behind it.
It was not designed to be used as a stable coin so the value is volatile by definition.
Holding ADA is different from owning shares of a public company.
So what are the value behind ADA except the reasons listed above and price speculation on exchanges?

This is very subjective and can only be answered from an opinionated position. With that, it has value, IMO because it has

been developed by a very methodical, mathematical, and scientific method
derivative tokens which are "native", compared to Ethereum, where tokens are implemented via smart contracts – this has one major implication (among other benefits): transaction fees are a small fraction; no "gas" fees are required to execute a contract
a dedicated and sophisticated, and ever expanding, ecosystem of people and companies working to solve real problems, create valuable businesses, etc.
outreach programs targeting new developers, governments, and education
a treasury system where regular rounds of Catalyst fund winning Cardano-based projects via grants
smart contracts that can be mathematically verified, enabling greater trust in the proper handling of funds


What enables the Cardano blockchain to be capable of storing so much information? After the Africa Special it was announced that DIDs and academic records of 5 million+ people will now be stored in the Cardano blockchain and this is set up to scale for massive adoption. Thus it raised the doubt: where does all of that information will be stored, in addition to cryto-transactions and the whole ecosystem that will be built? I mean in contrast to centralised institutions that own big computer clusters for the equivalent purpose, Cardano nodes can run on regular PCs, so how is it possible??

You don't have to store a lot of information on the blockchain itself to provide certain evidence. (that something existed at a certain time or was signed by someone, or that something was not tampered with).
Usually, it is enough to store for example a link to something and a hash or a signature. (i.e. onchain should be stored only the data that are absolutely necessary to prove the required evidence)
Metadata Example: please look into this transaction (on adastat go to metadata tab and look at the data that is actually stored onchain)
You will find the link to http://api.cardano.scantrust.io/publicdata/71a7f9d0.json (where the actual data is offchain, basically, this could even be stored somewhere where only a limited group has access to it)
A good onchain/offchain design combined with batch processing, therefore, enables the cost-effective use of blockchain technology and the preservation of privacy. (which is not Cardano specific)
To get an idea for example with Atala PRISM hundreds of credentials can be signed in only 1 (one) transaction.


How to query a Cardano node for an NFT's owner? Is there a way to use cardano-cli (or another tool) to query a Cardano node for an NFT's current owner (wallet address holding the NFT)?
The parameters for such a query would likely be the Policy ID & Asset Name of the NFT.
Since, from a blockchain perspective, there is no difference between native tokens for which an arbitrary amount of tokens exist and those where there is only a single one (NFTs), I guess a query like the one I'm looking for is not something that fits into the grand scheme of things; but maybe I'm missing something?
If there is no tool readily available, how could I use cardano-cli (or another tool) to look through all transactions (starting with the most recent and going backwards in time) until I find the most recent transaction containing the NFT in question?

There is no way to find that information without syncing the whole blockchain into a database with a tool such as cardano-db-sync.
This takes a lot of time and resources, so you might want to use an API like blockfrost.io to query the addresses owning a specific token.
$ curl  -s -H "Project_id: $BLOCKFROST_PROJECT_ID" https://cardano-mainnet.blockfrost.io/api/v0/assets/00000002df633853f6a47465c9496721d2d5b1291b8398016c0e87ae6e7574636f696e/addresses | jq
  [
   {
    "address": "addr1qxlmfhfcjck5pctuvlpww3kuxvqjucz40qusgeqgmyqq4utntgjccmteyrsldd67rxv2yq6ew2a7t48q34p9j7nf0kjqskku78",
    "quantity": "1"
   }
  ]


When will the pioneers testnet go live? In a recent blog post by IOG (link) the roadmap indicated the Pioneer testnet would go live mid-April to the start of May. Is anyone able to comment/update us on when the testnet will go live?

There is currently no announcement regarding a date. I have seen rumours that the Plutus Pioneer testnet is already up and running (probably caused by a web page that displays timers at certain milestones) - this is not true.


What happens to fees when Cardano's chain reaches 1509GB data? We can see the current Ethereum size is greater than 1509GB, and Ethereum's gas fee is too expensive. My question is what happens to fees when Cardano's chain reaches 1509GB data?

The fees are based on the size of the transactions and have nothing to do with the blockchain size. I think the same applies to Etherum.
About when we will see the size of the blockchain depends on the usage of network of course. But if we keep the current max_block_size set to 65536 bytes and account for about average of 4320 blocks a a day it is about 280MB a day with full capacity usage.
In theory, it would take about 14 months to reach 1 509 GB of size if the network has been utilized to its fullest potential, almost 11 years if we use only 10% of the network capacity.
But that is very theoretical and it the real world, we will probably get shredding mechanisms before reaching that size.


Is script\bin_path.sh missing? I'm following these instructions to start up cardano-node from source.
After downloading cardano-node from GitHub, I see that script\bin_path.sh does exist.
After selecting the latest version it still does not.
git fetch --all --recurse-submodules --tags
git tag
git checkout tags/1.23.2

Then after building, the following instructions fail:
cp -p "$(./scripts/bin-path.sh cardano-node)" ~/.local/bin/
cp -p "$(./scripts/bin-path.sh cardano-cli)" ~/.local/bin/

You're using tags/1.23.2. The most recent release was tags/1.26.2. You can see the file on master at the moment [0] so I'd suggest checking out a more recent version of cardano-node and opening a PR or submitting an issue on GitHub to update the node version that the docs suggest using.
[0] https://github.com/input-output-hk/cardano-node/blob/master/scripts/bin-path.sh


Validator getting access to delegator? Is it possible for a validator to get access to delegator information? For example, is it possible to lock a token to be redeemable only by someone who is delegating to a specific stake pool?
Additionally, where can we find documentation about translating a staking address to a receive address off-chain, if we wanted to do airdrops manually until the Gougen release?

It is possible to determine wallet addresses from the staking address. There is currently no way to lock a token to be redeemable only by someone who is delegating to a specific stake pool. I assume this will be possible once smart contracts are live.
The simplest way to find other wallet addresses associated with a stake address is to look the address up on Cardanoscan.
If you want some details on how these addresses are derived, checkout Andrew Westberg's video here.


Is Cardano the only platform with 100% decentralized block production? Inspired by this comment saying that decentralization of block production is overused in the way people market Cardano online, I was curious to see if any other platforms have achieved this. I know that other platforms such as Tezos do have some level of on-chain governance, but not necessarily 100% decentralized block production as Cardano does.

When I search "decentralized block production" in quotes, I get over 1000 results, which seem to all be about Cardano.
When I search the same thing but only allowing results before 2021, I get only 6 results and they all (literally 100% of them) seem to contain the word Cardano or ADA or IOHK.

Is it really the case that no other platform has managed to achieve 100% decentralized block production?

This all depends on how you view it. For instance, consider Bitcoin. Bitcoin has 100% decentralized block production, since no central authority owns Bitcoin and can regulate its block production. One might argue that the large mining companies that control a majority of block production makes this decentralization somewhat dubious. To be fair, the same thing happens with Cardano. Consider how much of the Cardano block production the Binance stake pools control.
To be honest, I am not sure there is a straightforward answer to your question. I would say that other chains have achieved full decentralization; however, Cardano is one of the most decentralized (if not the most) due to the numerous stake pools operated by individual community members.


Will I be able to stake ada from coinbase? Will I be able to stake ada from coinbase or will I need to transfer it to another wallet.

Currently Coinbase does not support staking ADA tokens. Implementation of ADA staking within Coinbase is something you would need to take up with Coinbase.


Is Yoroi secure as a primary wallet? I received an IOHK support ticket response this week that recommended I install the Yoroi wallet:

The Daedalus wallet is a full-node wallet, so it can take time to
install and can be difficult to use depending on your machine and your
network connection. We have a light wallet that is a chrome extension,
which is easy to install and use. You can find more info at
https://yoroi-wallet.com/#/.

This statement appears to be in direct conflict with their article on Cybersecurity Guidelines for Cardano Users. Of course, that article is about Daedalus, but for the end user, it seems confusing. Honestly, I was a bit baffled by the contradiction. I thought Yoroi was primarily an iOS app. Even in Apple's locked down ecosystem, I was having doubts about installing and using it. But as a browser extension? How is that safe enough for them to recommend?

I would argue the Yoroi browser extension is much safer than the iOS application.
Browser extensions provides double-sandboxing and is considered safer than most of the desktop applications. The browser itself is sandboxed from the rest of your computer and the extensions itself is sandboxes from talking directly to other extensions or to other websites unless you explicitly approves it can do so.
That being said, the most important element in the this process are your private keys. So, whatever you are using Daedalus or Yoroi, always protect your private keys by using a hardware wallet.


Where can I see my NFT? Recently bought a NFTea from here, where do I go to check out the actual image? Is there a Cardano NFT explorer or similar?

Find your transaction, look at it on cardanoscan.io to get the policy_id and token_name, adjust the following link https://pool.pm/<policy_id>:<token_name>, and you'll see it.


Stake pool operation: estimated effort in time? From actual stake pool operators, is there an estimated # hours effort for getting the pool up?
How much time do you spend on marketing?

Your question has no direct answer.
Its hard or not impossible to estimate the time spent on marketing, from my side its a full time job.
I spend all day on twitter and reddit, these are my favourite social media.
To setup a pool you can check Cardano Forum and ask mr. Alex post about CNTOOLS.
if you understand something about Linux OS its easy for you, if not, you'll need to learn and some DevOps is required for basic firewall configuration for example.
There's no direct answer to that, if you are already experienced on linux I would not expect more than 1 hour to setup a block producer and two relay.
Check here for CNTOOLS setup tutorial, I'd recommend this because it saved me a lot of time.
https://forum.cardano.org/t/how-to-set-up-a-pool-in-a-few-minutes-and-register-using-cntools/48767
good luck


What is the expected ROA (Return of ADA) after all coins are minted? After all coins are minted as far as I know the rewards will come from the transactions fees. At the moment we have 4.5 to 6.0% annual return of staked ADAs. When and how this will change after we reach 45 000 000 000 coins in circulation?

In ADA all coins are already minted. The total supply is 45 billion tokens. About 13 billion coins are not used and are "locked" in the treasury. It is used to be able to pay out the rewards for every block created by the stakepool and from where you will get delegators' awards. Because there not so many transactions to pay for, all the block awards the missing coins are used from the treasury. Once the transaction fees are sufficient to pay out all the block rewards, the treasury will only be used to fund proposals in what is now called Catalyst which in due time will start to solve the Voltaire stage. When Voltaire is ready it will be up to the community what to do with the rest of all ADA from Treasury.
And this is a very interesting idea to vote the greedy out in favor of the Cardano Ecosystem to be sustainable.


Are native tokens divisible? If I mint a NEAT token, can I send .5 NEAT to someone or do I have to send a whole 1 NEAT?

There is no support for decimal places of native tokens on Cardano.


Is the length (in characters) of a token policy id always the same? Let's say I have the following native token unit d5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc537061636542756433323639 that consists of the policy id d5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc and asset name 537061636542756433323639.
The asset name is a HEX representation of the name. Therefore it can vary in length.
But the policy id is some sort of a hash of the policy, so I'd assume the length of the string is always the same. Is this correct?
What I want to achieve is to split the asset name and the policy id e.g. like this:
'd5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc537061636542756433323639'.substring(56)
> "537061636542756433323639"

The policyId is the hash of the policy script. It is a blake2b-224 hash resulting in 28 bytes and a hex length of 56 chars. So, your code will always work and is the right way to do it.
Find the spec defining the scriptHash here, note that the scriptHash is of type hash28 denoting the hash length.
Also, the assetName can be of any length between 0-32 bytes. Something to keep a note of in your application, this also means that there can be a token without assetName. Find the assetName length spec here


How are transaction fees determined for bulk sends? I have a use case where I want to send to many addresses on a regular basis.
Let's say I want to send to 1 million addresses. I've read that Cardano enforces a "minimum transaction fee." But is this fee applied to each recipient address in a bulk transaction? Or is it for the overall transaction?
If it's the case where I pay a fixed fee per bulk send, what is the maximum number of addresses I can send to in one bulk transaction?

The minimum fee is for the transaction as a whole, calculated as a * size(tx) + b, where a and b are protocol parameters. However, there is a Min-Ada-Value of 1 ADA which is the minimum size of a UTxO. The maximum possible UTxO set of Cardano is actually 45 billion for this reason. Anyway, you'd need to send 1 ADA per UTxO (which can be in the same transaction) and then the only limit should be the size of the transaction being less than the size limit of a block.
You can read more about this here:
Docs:
https://cardano-ledger.readthedocs.io/en/latest/explanations/min-utxo.html
Implementation:
https://github.com/input-output-hk/cardano-ledger-specs/blob/master/shelley-ma/impl/src/Cardano/Ledger/ShelleyMA/Rules/Utxo.hs


To what extent does Cardano's "off-chain governance" in the form of a Board of Directors pose a threat to Cardano's mission of being decentralized? On 31 March 2021, Cardano reached "100% decentralization" meaning that 100% of the blocks are produced by the stake pools.
An excellent introduction about Cardano decentralization is given here, but Cardano does have a Board of Directors (often known as "off-chain governance", as opposed to the "on-chain governance").
I wonder, to what extent (if any) could the "centralization" of the off-chain governance in the form of a Board of Directors pose a threat to Cardano's overall notion of being 100% decentralized from an on-chain perspective?

It won't once all parts of the Cardano road map are complete. Voltaire isn't complete yet, but once it is. The Board of Directors at Cardano foundation do not have the power to control or change the network. This process is being done in multiple steps, like staking and SPOs are now 100% community-produced blocks.
Check out project Catalysts as it is the foundation to what Voltaire completion will bring.


How does one create a new native token with full control? We would like to create a native asset on Cardano ourselves. How does one go about doing this?

Here is a step-by-step recipe for creating a native asset manually: https://silas-stulz.medium.com/you-want-to-create-your-own-nft-heres-how-you-do-it-on-the-cardano-blockchain-9a0bbf8caa39.


How can redundancy be established for producer nodes? It is rather straightforward to create relay redundancy but it is not as clear how to create redundancies for the producer nodes. The best solution I could come up with for the time being are VMware ESXi server farms, over SAN connections, with CARP IPs, etc. creating a physical redundancy but the OS layer remains a single point of failure.
I believe that running redundant producer nodes is not something approved.
Is there anyway to create an Active/Active or Active/Passive environment for the producer nodes?

Currently, a block producer can only send out its blocks if there is an incoming connection to it. So, as long as your backup block producer has no incoming connections, it can be "hot" and ready to produce blocks. I recommend having a relay pointing to a backup block producer, but prevented from connecting by a firewall rule.
Use CNCLI ping to determine if the main block producer is up or down. Depending on the answer, you can add/remove the firewall block to the backup block producer.
Example script to run with cron once per minute. In this example, a backup relay and block producer are installed on the same server.
#!/bin/bash

# are we blocking? In other words, we are not in failover mode
isblocking=`/usr/sbin/iptables --list INPUT --numeric | grep REJECT | grep 5050 | wc -l`

#if [[ $isblocking -eq 1 ]]
#then
#  echo "NON-failover mode. checking..."
#else
#  echo "FAILOVER mode. checking..."
#fi

error=`/home/westbam/.cargo/bin/cncli ping --host relay0.myserver.com --port 5000 | jq .status | grep error | wc -l`
if [[ $error -eq 1 ]]
then
  #echo "relay0 error. check relay1..."
  sleep 10
  error=`/home/westbam/.cargo/bin/cncli ping --host relay1.myserver.com --port 5000 | jq .status | grep error | wc -l`
  if [[ $error -eq 1 ]]
  then
    #echo "relay1 error. check relay2..."
    sleep 10
    error=`/home/westbam/.cargo/bin/cncli ping --host relay2.myserver.com --port 5000 | jq .status | grep error | wc -l`
    if [[ $error -eq 1 ]]
    then
      if [[ $isblocking -eq 1 ]]
      then
        echo "$(date): Enter FAILOVER mode..."
        # remove the local node blocks
        /usr/sbin/iptables --delete INPUT -p tcp --dport 5050 --jump REJECT 2> /dev/null
        /usr/bin/mail -s "FAILOVER" 9999999999@msg.fi.google.com <<< "FAILOVER to relay3 enabled"
      fi
      exit 0
    fi
  fi
fi

if [[ $isblocking -eq 0 ]]
then
  # we're not blocking local traffic, but we SHOULD be. Turn on the blocks
  echo "$(date): Return to NORMAL mode..."
  /usr/sbin/iptables --insert INPUT -p tcp --dport 5050 --jump REJECT 2> /dev/null
  /usr/bin/mail -s "NORMAL" 9999999999@msg.fi.google.com <<< "failover disabled"
fi


What is the relationship between addresses and stake addresses? Can anyone tell me if an address can change its stake address? If so when does this happen?
Is there a good place to read about how the addresses and the stake address are related?

Usually, the Shelley address contains the staking address inside (delegation part), so it is not possible to change it. But they are other types of addresses.
One of the best resources to learn about Cardano's addresses is CIP19: Cardano Addresses.


What is the Cardano Stiftung? I have seen this mentioned a few times and have no idea what it is.
I get the impression that it is referring to the combination of the Cardano Foundation, IO Global and Emurgo.

These are synonyms. Stiftung is German for foundation. The Cardano Foundation is located in Zug, Switzerland - a German-speaking part of the country.
The twitter handle of the (now verified) Cardano Foundation is CardanoStiftung: https://twitter.com/CardanoStiftung.


What is the logic behind Cardano's tokenomics and emmission schedule? Bitcoin was made to be mined until roughly 2140.  I like that it was made for decades to come while many projects are built for 4 years or whatever.
Personally I do not believe inflation in and of itself is bad, as economies are not static and expand.  What is bad is inflation manipulation that is unprovable and not tamper-proof, or when it is too high.
Coin Gecko currently shows circ supply to TS as:
32,056,062,599 / 45,000,000,000
71% in circulation on the 3rd year already seems a bit high.
Does Cardano have to have a fixed supply?  A perpetual, provable, tamper-proof small stock-to-flow seems best to me.
Can someone make the decisions behind Cardano's inflation make sense to me?

The uncirculated (reserve) coins are distributed over time at a specific percentage rate.  As the reserve decreases in size, the amount distributed each epoch (5 days) will decrease.  At the current percentage rate the reserve will halve approximately every 4-5 years.

Ada has a fixed supply of 45 billion coins
30 Billion coins were issued/sold during the ICO rounds
The other 15 Billion coins were placed into a reserve for operation of the network
Every 5 days (each epoch) the transaction fees and a fixed percentage of the reserve are added to a pot
A fixed percentage of the epoch's pot is added to the treasury and the rest are distributed as staking rewards

Cardano monetary policy has a more precise explanation.


Randomness in a smart contract Is it possible to get randomness in a smart contract? E.g. I would like the validator to randomly choose between two conditions to use to validate a transaction. Such a capability could be used for example to implement a lottery smart contract.
If so, what are the mechanics of the randomness?
If not, how could the lack of randomness be circumvented to implement something like a lottery smart contract?

Validation is deterministic, so decidedly non-random. And this is a desirable feature, because it means you can validate a transaction off-chain before ever submitting it, thus being sure you'll never have to pay fees for a transaction that will turn out to be invalid.
In order to get randomness, one could for example use an oracle that provides entropy.
Alternatively, one could use a commitment scheme: In your example, the lottery operator publishes the hash of the random draw up-front, then later, after players have signed on, reveals it. The operator can't cheat, because he has committed already (by publishing the hash up front).


Test-Focused EvaluatorTrace Monad? Is there infrastructure for writing unit/integration tests for our contracts, without running the full playground?  Is there a test-focused EvaluatorTrace monad, for example?

You can use Plutus Playground to test your code and maybe in the near future we will have more options.


What are technical differences in smart contract execution on Cardano in comparison to Ethereum? In my understanding, smart contracts on Cardano are always provided to the blockchain via a transaction and there is no code that is stored at the blockchain, but just a hash (the public key address). Ethereum seems to store them instead: see What is the maximum number of contracts Cardano can store?
Is this correct?
What are the other main technical differences?
Update
Also beyond that Cardano uses the eUTxO-based model and Ethereum uses an account-based model.

Feel free to improve! :)

technical aspect
Cardano
Ethereum
notes

model
eUTxO-based
account-based
see cardano lecture,see question,...

smart contract code location
not stored on-chain, but shipped with transaction
stored on-chain ?

smart contract maximum count
unlimited
limited ?
see question

access third party contract e.g. an oracle
import and use lib (required or just helpful?),, compile your own contract, ship third party validator script with transaction, ...
call it via an address ?
see question

...
...
...
...


Are the locked funds in a contract still considered as delegated to a wallet and can get staking rewards? The question here is if script-locked outputs can still have a staking key associated with them  (decided by the person creating the output) and whether this enables the funds to be delegated in a contract to get staking rewards.

Yes, it will be possible to associate a staking address for script outputs.


Providing metadata to `cardano-cli transaction build-raw` What command-line options and input file content can I provide to cardano-cli transaction build-raw to specify a transaction with metadata similar to the one in this transaction? https://explorer.cardano.org/en/transaction?id=ff126032aeccf0079a02168f9810a81d9632a8ac34e50cad278771be2423aa86
I initially thought that I just needed to give --metadata-json-file a JSON file with the corresponding desired JSON content (like the JSON show under 'metadata' on the webpage), but that just gives an error message about integer keys. In the Transaction Metadata reference for cardano-node, it says that the top-level keys must be integers, but I don't understand the significance or meaning of the values of the top-level integer keys or how the whole thing relates to an actual JSON I want to appear in the explorer.cardano.org transaction webpage.

Looks like you are using the CLI correctly, and the question was really about the NFT metadata standard. The usage of "721" as the top level key is to be compatible with Etherium token metadata and 3rd party sites that showcase ETH NFTs.
Alessandro of BERRY/SpaceBudz is the one who proposed this as a CIP on the Cardano forums and it seems to have been widely adopted at this point.
Edit: See also Is there a metadata standard for native assets (talking about fungible tokens first) in Cardano?


I am looking for a practical example of a smart contract with three parties I would like to know if the following scenario involving three parties could make sense in the context of a smart contract.
I am new to blockchain and smart contracts, I have come across some standard two party contracts and one-to-many like crowd funding but I could not find any mention of a three party contract along the following lines:
Let's say Alice and Bob share a boundary between their gardens and Bob is responsible for paying for a fence and Alice has some requirements.
So Bob cannot put up the fence unless Alice says the conditions are met.
Bob is also at the mercy of the weather and his workman,
and the workman is at the mercy of the weather and issues on other jobs.
So in one sense:
Bob has agreement (a) with the workman, John
and a separate agreement (b) with Alice.
However, there could be an interesting interdependency created by Alice's requirements.
She has the option of setting a requirement with a twenty four hours notice or no notice required.
However, since she wants a fence up as soon as possible, if she drops the the 24H notice requirement then John has a option to come at an earlier date if he is stalled on his other job.
With two separate contracts the 24 hour notice/ no notice option could accidentally be different.
I don't know if this is a good example, but I am trying to understand if a single smart contract is ever used in order to hold three parties into an agreement, or should interdependent agreements like this be split into multiple two party contracts?
Or can a parent contract hold two child contracts with an interdependency?
Thanks in advance
Brian

Your example is interesting and could be really meaningful if real world data (e.g. weather data) can be included.
Here's a simpler example that I can think of based on your example.
Let's say John put up the fence as Bob instructed, but there is misalignment between Bob's instructions and Alice's requirements. Now Alice is thinking about suing Bob, because in her view, Bob acted against her will. But Alice also does not like the courts. But she heard about this dispute resolution DApp on Cardano (to be build) where an independent third party helps the disputants solve their dispute.
This third party can be a mediator that simply helps the parties find a mutually agreeable solution. The payment of said mediator can be in the form of a smart contract. Alice opens a case and initiates the payment of the mediator for her share (usually mediators and arbitrators get paid an equal amount by both parties). This amount is now in escrow and will only be dispersed if the other party (Bob) agrees to mediate this case as well (by paying the mediation fee).
Instead of having two contracts (one between the mediator and Alice, the other one between the mediator and Bob), both transfers can be rolled up into one smart contract.
Of course, there are many more interesting examples, but I hope this example helps. Btw, I will be proposing a dispute resolution marketplace in an upcoming Project Catalyst fund, so keep an eye out for that. There's a lot of little disagreements between neighbors (as you indicated) where smart contracts has the potential of making life a little bit nicer for communities of varying shapes.


Why was the platform/foundation named after Gerolamo Cardano? Cardano was named after the 16th century Italian scientist Gerolamo Cardano; given the people designing the platform it makes sense to name it after a scientist, but is there any reason to specifically choose Cardano? I only know him for publishing general solutions for cubic and quartic equations. I did a quick search on the foundation's website and forum but found nothing about this.

I think the answer you are looking for can be found at the 3:10 mark (bold part in the transcript below) on this video, but for the consistency of ideas please watch from the 1:43.
The transcript of this portion of the video is:

Gerolamo Cardano (1501–1576) was an Italian mathematician, physicist, biologist, physician, chemist, astrologist, philosopher, writer, and gambler.
During his lifetime he wrote over 200 scientific works and was one of the key figures in the mathematical field of probability during the Renaissance.
Gerolamo Cardano, is well known for his achievements in algebra.
He was a teacher in Milan Italy in the 16th century.
In his 1545 book Ars Magna, he made the first systematic use of negative numbers in Europe, published with attribution the solutions of other mathematicians for the cubic and quartic equations.
He also acknowledged the existence of imaginary numbers now used in geometry.
His book about games of chance, Liber de ludo aleae written around 1564, but not published until 1663, contains the first systematic treatment of probability.
He used the game of throwing dice to understand the basic concepts of probability.
He demonstrated the efficacy of defining odds as the ratio of favorable to unfavorable outcomes.
For a cryptocurrency project that is looking to utilize scientific methods based on mathematical proofs and game theory to build highly flexible and interoperable money, I think this choice seems to match perfectly.


Is the Cardano testnet indefinite and immutable? As the Cardano mainnet, will the Cardano testnet be maintained indefinitely and immutably or it will perish at some point in time?

No, there are plans to reset the testnet in the future, probably sometime after Goguen.
But it is immutable forever, if you keep the blockchain data.


How are NFTs being minted without smart contract in Cardano? NFTs are being minted in Cardano even without a smart contract in place. How does it ensure that no more token gets minted with the same ID?

On Cardano, an NFT doesn't require a Smart Contact, as it is minted as an native asset.
To make sure a NFT is a really non-fungible, the minter of the native asset is usually locking its minting policy in time. In other words, you mint just one native asset and lock any further minting/burning in time, so it is impossible to increase its supply starting from a specific slot time.
As an example, have a look at the minting script of nutcoin.


How are DeFi projects funded (beyond Project Catalyst & external funds) How do DeFi projects such as Uniswap or Synthetix make money to cover their development costs? Would you siphon a small amount of ADA each transaction or is it more common to create your own token and follow an ICO-style model?

You are indeed right. I have seen plenty of DeFi projects get their funds by offering a 2017-style ICO model. YaySwap (not an endorsement, just an example) is one of these projects that takes ADA and plans to distribute their YAY token.
Uniswap also takes a fee. Then there's the genesis allocation to team, investors etc.