text:
Block Producer vs Relay Node setup
Can only Pool operators run Producer nodes? What is the difference between the producer and relay from a setup point and where to get the specifics for each on installing? Being new it's hard to know what is or is not possible because the documentation is often era specific. It's hard to know which documentation still applies and what docs are out dated. Some things are still correct regardless of era, but I'm struggling with the changes.
My goal is to learn how to do most everything (Best practices, Node creation, CLI interaction, Smart Contracts w/NFT and tokens, analysis etc ) accept I'm not planning on running a pool since it seems like there are so many pools that are not doing well for a number of different reasons. I figure it will be a struggle to get enough ADA staked to make it viable. I first want to mint my own NFTs. NFT-maker pro isn't working. I want to limit the fees by doing myself and am struggling with a full road map. If seen the sprout vids and they get me 3 steps forward but are missing certain details.
If nothing else getting a really good starting point would help.
James

If you want to get started with Cardano, setting up a stake pool can be a good start to learn the basics. You will be able to explore the different cli commands as well as the fundamentals of the eUTX0 model.
Regarding my experience, I started by watching this official Stake Pool course by the Cardano Foundation. The information is not all up to date but the explanatory videos make it easy to understand the basics (UTXO transactions, payment keys, staking keys, KES keys ...). It's a good base to experiment a Stake Pool on the Testnet.
Once this course is finished, you can now go to the documentation "How to build a Cardano Stake Pool" on CoinCashew. This is the most complete How-To to learn how to properly install and configure your Stake Pool for the Mainnet. It also includes the routines to maintain and keep your Cardano nodes functional.
If after that you still have difficulties or questions, you can go to the official Cardano forum to ask for help from the community.
Have fun and good luck!


text:
Move a node to another computer
What do I need to do to move a node on one machine to another so the node appears to be the same node. I have a node on one machine but need to discontinue that machine. When I build the new machine out I need it to have the same keys I'm guessing. I'm not exactly sure what files would need to be copied over. Thanks for the help.

Is this for a Stake Pool block producing node?

Based off the "same keys" part of the question, I am going to assume this is for a block producing node.
Block Producing Node:
For the BP, all you need to do to move it is copy the kes.skey, vrf.skey and node.cert. You will also want to copy your configuration files and make sure your UFW configuration is the same. The last step is, if you changed the IP address, to update your relay topology to connect to the new IP address, as well as update the relay UFW if needed.
Minting Tokens:
Although I have not tested this, I believe you need to copy over your policy.vkey, policy.skey, policy.script, and your policy.ID. You also may need your payment address and keys. If I am missing anything please correct me and I'll update this.
Minting Token's Source
Hope this helps!

Thanks for taking the time to respond! It's not a block producing node, but I want to be able to mint tokens and make associated metadata (or alter previous metadata) later which requires the "same" node. (that's what I've been lead to believe anyway)

just to be sure,
you need to define what kind of files you store this moment to your old node.
it depends on your folder structure and for what reason the node is running.
i would recommend you to install the same way the new node and use the same folder structure.
then you store the files on the same folder as it is now.
cold.counter*
cold.skey*
cold.vkey*
hot.skey*
hot.vkey*
pool.id
pool.id-bech32
vrf.skey*
vrf.vkey*
kes.start*
op.cert*
pool.cert*
pool.config*
poolmeta.json*
if you run the node as a BP only, and you store the rest of your files on offline system, then our friend before is right,
you need only this 3 files on the node :
kes.skey,
vrf.skey and
node.cert.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Block Propagation
I was checking GLiveView Stats on my pool and I noticed that served, under block propagation in block producer and relays have different values, 20 on BP and 2000 on Relay after 15H of Uptime.
Why does this happen? Is it because block not passed don't need more validation?
Does anyone have some reference where I can learn from?
Thanks for your time :-)

As explained in the Guild Operator's gLiveView section, served is:

served blocks counts how many blocks were fetched by "in" peers. If this does not increase for a long time, it means the "in" peers are learning about new blocks from somewhere else (and therefore this node is not contributing towards accelerating the propagation). Overall, these metrics are helpful in tweaking the topology and/or performance of the network links.

In other words, served is a measure of how many blocks have been fetched by other nodes from your node. It makes sense that served will be lower for your BP because the BP is supposed to only communicate with your relays, whereas your relays are responsible for communicating with the rest of the network.

Thanks for pointing me in the right direction

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Error Starting plutus-playground-client
I'm having error running the plutus-playground-client. Not sure where to look, here is the complete error log. Any suggestions on how to fix?

0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   '/nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/bin/node',
1 verbose cli   '/nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/bin/npm',
1 verbose cli   'run',
1 verbose cli   'start'
1 verbose cli ]
2 info using npm@6.14.10
3 info using node@v14.15.4
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle plutus-playground-client@1.0.0~prestart: plutus-playground-client@1.0.0
6 info lifecycle plutus-playground-client@1.0.0~start: plutus-playground-client@1.0.0
7 verbose lifecycle plutus-playground-client@1.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle plutus-playground-client@1.0.0~start: PATH: /nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/lib/node_modules/npm/node_module>9 verbose lifecycle plutus-playground-client@1.0.0~start: CWD: /mnt/c/blockchain/cardano/plutus/plutus-playground-client
10 silly lifecycle plutus-playground-client@1.0.0~start: Args: [
10 silly lifecycle   '-c',
10 silly lifecycle   'npm install && plutus-playground-generate-purs && npm run purs:compile && npm run webpack:server'
10 silly lifecycle ]
11 silly lifecycle plutus-playground-client@1.0.0~start: Returned: code: 2  signal: null
12 info lifecycle plutus-playground-client@1.0.0~start: Failed to exec start script
13 verbose stack Error: plutus-playground-client@1.0.0 start: `npm install && plutus-playground-generate-purs && npm run purs:compile && npm run webpack:se>13 verbose stack Exit status 2
13 verbose stack Exit status 2
13 verbose stack     at EventEmitter. (/nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/lib/node_modules/npm/node_modules/npm-lifecycl>13 verbose stack     at EventEmitter.emit (events.js:315:20)
13 verbose stack     at ChildProcess. (/nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/lib/node_modules/npm/node_modules/npm-lifecycl>13 verbose stack     at ChildProcess.emit (events.js:315:20)
13 verbose stack     at maybeClose (internal/child_process.js:1048:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
14 verbose pkgid plutus-playground-client@1.0.0
15 verbose cwd /mnt/c/blockchain/cardano/plutus/plutus-playground-client
16 verbose Linux 5.10.16.3-microsoft-standard-WSL2
17 verbose argv "/nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/bin/node" "/nix/store/gi44n1z2xslwsd417sigxsxgr6sxp9ff-nodejs-14.15.4/bin/npm" >18 verbose node v14.15.4
19 verbose npm  v6.14.10
20 error code ELIFECYCLE
21 error errno 2
22 error plutus-playground-client@1.0.0 start: `npm install && plutus-playground-generate-purs && npm run purs:compile && npm run webpack:server`
22 error Exit status 2
23 error Failed at the plutus-playground-client@1.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 2, true ]

did you find the fix for this? I'm also facing the same issue.

How are you running it? Can you add more details please?

are u on the correct git commit?
did you start the server first?
in the terminal, before entering to nix-shell do this to go to the correct git commit:
in the plutus-apps directory:

git checkout 41149926c108c71831cfe8d244c83b0ee4bf5c8a

then
3. At top of this repo

nix-build -A plutus-playground.server

Enter

nix-shell

only then start the server

cd plutus-playground-client

plutus-playground-server

Wait for server to start, it'll log "Interpreter ready"
5. In second terminal at top of this repo, enter

nix-shell
cd plutus-playground-client
npm run start
Wait for the client to start, it'll log "webpack compiled with …”

In web browser, navigate to url https://localhost:8009/ (need to accept that ssl certificate is invalid)

Welcome to Cardano SE! As a new user be sure to take the [Tour].

authors: Hášíl Páůďýál


text:
No Cardano Wallet commands are working
I have a testnet cardano node up and running  - fully synced, however when I query the network for cardano-wallet commands i am getting
ConnectionError (HttpExceptionRequest Request {
host                 = "localhost"
port                 = 8090
secure               = False
requestHeaders       = [("Accept","application/json;charset=utf-8,application/json")]
path                 = "/v2/network/information"
queryString          = ""
method               = "GET"
proxy                = Nothing
rawBody              = False
redirectCount        = 10
responseTimeout      = ResponseTimeoutDefault
requestVersion       = HTTP/1.1
}
(ConnectionFailure Network.Socket.connect: <socket: 11>: does not exist (Connection refused)))

Apparently you have to run cardano-wallet serve for some of teh commands to work. However, I tried running it and it keeps shutting down
get this error
cardano-wallet: ExceptionInLinkedThread (ThreadId 15) DecoderFailure (LocalStateQuery HardForkBlock (': ....

I used the followinng command with no success
cardano-wallet serve   --testnet /home/user/cardano/testnet-byron-genesis.json   --node-socket /home/user/cardano/db/node.socket   --database /home/user/cardano/db

Can you check port 8090 is in use?

No.. That port is not in use

Here is an screenshot of the error
https://imgur.com/a/BPOKY7J

It says "Running as v2021.5.26" in the logs, maybe you need to update the binary?

what version should it be?


text:
What is the most trusted Third party tool for Minting Native Tokens on cardano?
I have come across many Third party minting sites, however, I have a security concern, as per the keys, and policies. So what is the most trusted Third party tool for Minting Native Tokens on cardano?

Check CNTools - it's a multifunctional tool for Cardano blockchain.
https://github.com/cardano-community/guild-operators

Thank you too matcheek I will check it out, seems it can mint Fungible Tokens too. Thanks again

I've used nft-maker.io and they always have sent me the NFTs that I create. You can also mint them with cardano-cl which is the cheapest and gives you more control.

Thank you jnprogrammer for responding. I know nft-maker.io they are reputable, however, it's not NFTs that I want to mint. I want to mint Fungible tokens. Thanks for answering


text:
How can we calculate staking rewards per epoch?
Deadalus shows total staking rewards for a wallet.  IIRC, there is a planned feature to show staking rewards per epoch for a wallet.
How we can calculate staking rewards per epoch for a wallet right now?

Should one of the answers be marked as accepted?

You can see the per-epoch rewards on https://adapools.org, example:
https://adapools.org/stake/stake1u94cewwzweul0z7e73462fjgextms4vge44y0f0d0a6rfjgj802t9
Yoroi does show per-epoch rewards too.

Our alliance website has a calculator.
https://armada-alliance.com/
We are an alliance of single pools who run on decentralized bare metal low powered arm devices. Please do not stake with pool splitters or pools located in centralized datacenters.

I also created a calculator which shows Operator and Delegator (SUM) rewards per Epoch and Month based on the given Network and Pool Parameters.
You can find it here: (Download if you want to change inputs)
https://docs.google.com/spreadsheets/d/1ztm6Jov85Vk7AGtZ22BVE3I-BhzIlubnLSTUEomdq4U/edit?usp=sharing

Another way is by using the Cardano's Official calculator tool, using advanced options you can enter the information about the pool that you are staking to and see the estimated rewards. Without advanced options it's just an esteem and results can be a little bit different from what you will receive at the end.

To make it more easy to use I created a Version of the Calculation sheet which includes calculation for an individual delegator.
Here is the new Link: https://docs.google.com/spreadsheets/d/1a2fqlM66wHNAJkRyLFhY8gaJPmwgnL7glx-NewOywdw/edit?usp=sharing
Just fill out the colored cells with the Pools and delegators details you want to use for your calculation and see the results below (Cell B20 and B21)
This calculation considers:

Current Block Rewards (will get lower over time)
Pool Pledge
Pool Fixed Cost
Pool Margin
Poisson Distribution to consider Luck

This calculation does NOT consider

Risk of battles (slot or height battles) - Bigger Pools lose more blocks to battles which decreases the Average Rewards (by up to 10% at a fully saturated pool, depending on network congestion)


text:
Yoroi wallet pool icon
I have a very simple question that I can't seem to get clarification on. When opening a wallet on Yoroi it shows the pool you are delegating to if you are delegating to a pool. The pool has a default icon (See screenshot below) How do stake pool operators change the icon to a custom icon?

Is it related to the PoolMetaData.json?

It is related to PoolMetaData.json as you said, inside the file you can add the link to the extended version of it where you can add different things, for example a description of your hardware, social networks of your pool, and many other things included a pool logo.
You can find an example version of it here
Once you have edited the file, added the things that you want and uploaded the file on your website, you can link it with your pool by adding this line to the existing poolMetaData.json that you have:
extended    "https://YourWebsite/nameOfExtendedMetaDataFile.json"

After that you need to recalculate the hash of the basic metaData file, resubmit the pool registration certificate and the delegation certificate.
Here you can find the guide to resubmit the poolMetaData and its hash file.
Note that after that, in staking section of wallets, your pool will be seen as "unknown" until ADAPools will sync again (every 4 hours).

So I was guessing this is the case. The problem is Adapools is showing the icon specified by the extended.json perfectly but for some reason, it isn't showing up in yoroi?

I checked your pool and I can see a custom logo from Yoroi, maybe it only needs time to sync


text:
What is the testnet-magic argument and why is it 1097911063?
I am currently running a testnet-node version 1.29.0.
To query the blockain, I use the command cardano-cli query tip --testnet-magic 1097911063 to get the last block.
What is the testnet-magic argument and why is it 1097911063?

I got the command from https://developers.cardano.org/docs/get-started/running-cardano

The testnet magic, aka protocol magic, is a parameter introduced in Cardano during the Byron era. It is used internally by the protocol in cryptographic functions that construct addresses from a seed. Since this value is different in mainnet and testnet, the address obtained from a given path (or seed) is different in both networks.

But why is 1097911063? Are there other testnets with different number?

@G-Unit It's just an identifier, it could have been any other unique number, but I don't know why they chose that specific number. Other testnets used different numbers (I've seen the number 42, for instance)

Possible answer which explains a little bit more about this - https://stackoverflow.com/q/67191023/1336068

A quick update if you are still having this issue then please use this command now
cardano-cli query tip --testnet-magic 1

as testnet arguments have been changed. you can use both 1 and 2 based on your network preview or preprod.


text:
Whats the difference between the cardano-wallet and cardano-cli for wallet functionalities?
I am reading the different options for a cardano wallet: https://developers.cardano.org/docs/integrate-cardano/creating-wallet-faucet
Why should I use the cardano-wallet cli or api if all the tutorials like minting an NFT are using the cardano-cli?
Are there functionalities that only cardano-wallet can offer? If so which ones.

On the one hand, the cardano-wallet provides high level commands and automations, you can choose a  token to send ore choose a specific addresses to use... On the other hand, the cardano-cli provides low level commands, meaning that you have to do everything manually, but at least you know exactly the commands you are performing.
There is nothing you cannot do with cardano-cli that you can do with cardano-wallet.
To start, I recommand you to explore all the commands of cardano-cli to dive a little more into the cardano environment and then go back up to cardano-wallet, once you know the different steps and corresponding commands (for example for your NFT minting).


text:
How can I receive, earn or stake Cardano without buying it on an exchange first?
I'm interested in participating in the Cardano ecosystem, and I'm looking for ways to receive, earn or stake ADA without initially buying it on a cryptocurrency exchange.
I understand that with resources such as powerful hardware and electricity, one can mine cryptocurrencies like Bitcoin and Ethereum, effectively earning these coins. However, I'm interested in Cardano and wondering if there's an equivalent process for it.
I understand that Cardano uses a Proof-of-Stake consensus mechanism which is fundamentally different from the Proof-of-Work mechanisms used by Bitcoin and Ethereum.
Here are my questions:
Given the lack of traditional mining in the Cardano ecosystem, is there an alternative way to earn ADA without an initial capital investment?
Is it possible to participate in staking without owning any ADA initially, similar to how one could start mining Bitcoin or Ethereum with the necessary hardware resources?
Any guidance or resources on these topics would be greatly appreciated.

Offer a service which people with ADA are willing to pay for.

Cardano is a Proof-of-Stake system. The only way to get staking rewards is to own ADA and to stake it.

Given the lack of traditional mining in the Cardano ecosystem, is there an alternative way to earn ADA without an initial capital investment?

No.

Is it possible to participate in staking without owning any ADA initially, similar to how one could start mining Bitcoin or Ethereum with the necessary hardware resources?

No.


text:
Transaction Notification
is there any tool that sends a notification when a incoming transaction happening on your wallet?
Or what is the best way to check it with a script

You want to poll the list transaction endpoint: https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/listTransactions

Blockfrost.io has an open source project called websocket-link.


text:
What is the best formula to track ROS tax liabilities for delegators?
Hello fellow Cardanians,
It is my tentative understanding that in the United States, it is assumed that staking rewards are taxed as income the day they are added to a stakers address regardless of whether or not they make a formal transaction to withdrawal the rewards to their wallet per epoch payout. If this is correct, how would one best design a spreadsheet formula or api/script to calculate fair market value of ADA?
I have been using a combination of Coin Gecko's 180 day chart (which seems to possibly average the ADA daily price on the chart, but it's tedious to use the GUI) and Vipers staking calendar(https://viperstaking.com/ada-pools/staking-calendar-2021/).
Is there a canonical way for a website to, for example allow a user to enter their ADA staking address(es), and have the epoch payout spot price be calculated for each reward payout?
Also, does the spot price at the exact time of the rewards payment matter for establishing the fair market value, or does a daily average spot price from a major exchange suffice? I see on the Viper staking calendar, the exact UTC is included, but it would be very tedious to manually match up exchange chart UI spot price, as opposed to just finding the daily average.
Seems like a few apis/scripts, and a bit of professional tax reporting advice would be the way to go. Before I dig into designing something, I'd love to have some feedback to save time on non-compliant experiments/iterations.
I appreciate the help, peace and love!
-CPG

Cexplorer provides functionality that shows tax information for a single stake address:
https://cexplorer.io/stake/stake1u80t4aj3rqzs88f08avadmcnyhgana4zds2xm4n0dhnfykcgptjla/tax (random example address)

This is great thanks so much, I'll follow up with Ada Pools to help evolve this effort!

Pretty sure https://pooltool.io/ has similar functionality.

This lists the reward payouts into a spreadsheet (rather than a web page) at the time they happen, even without a formal transaction happening.
But it does not yet convert them to USD, so half answer only.
https://github.com/pixelsoup42/cardano_account_pandas_dumper


text:
Is a Ledger Live Native ADA App with Staking and Voting Functionality in Development?
Is a Ledger Live native ADA app with staking and voting functionality in development? If so is there any place to check periodically for road map updates?
I believe IOG has a team that works with exchanges and I'm guessing a Ledger team as well, but I'm not sure who/where to follow for updates.
Thanks for your support!
-CPG

As far as I know, there is no development on these functionality from the Ledger team.


text:
Launch.json for VSCode/Haskell? Learning Haskell Plutus
I have VSCode all set up with the necessary Haskell plugins (except I have GHCI 9.x installed via Chocolatey and the plugins want 8.x, ouch! Unfortunately Chocolatey won't accept an 8.x "--version" number so I can't downgrade). But I can't find any place that shows me how to set up a proper launch.json file to support a Haskell debug session in VSCode.  I want to have a full-fledge debugger for my Haskell learning and I'm sure that I need to learn Haskell to be effective with Plutus.
Does anyone know how to craft a proper launch.json file so that I can use the VSCode IDE for Haskell debugging?
NOTE: I know about the Plutus playground but I would like a full-fledged IDE with a debugger for my Haskell learning. Also, the Plutus playground site is usable, except I can't login because the hand-off to GitHub for 3rd party authorization is currently broken. On that note, is there a GitHub repo for the playground so I can report that problem? I can't figure which of the many Plutus repos on GitHub are for the playground.

Don't use the Plutus playground site, it's quite outdated. Try to build the plutus playground with nix instead, it'd be a nice first exercise ( https://github.com/input-output-hk/plutus/tree/master/plutus-playground-server, https://github.com/input-output-hk/plutus/tree/master/plutus-playground-client )

You can use phoityne-vscode for this.
There's a specific section called Configuration that shows how you can set your launch.json file up.


text:
Unexpected error coming from Helios library during connection to preview TestNet verification?
My Eternl wallet now has an account that is targeted towards the preview TestNet. I did activate the account for connecting to Cardano dApps. I am able to connect to my wallet from Picoswap. However, during the attempt to by the Helios library to verify the connection to the preview TestNet, I am getting an unexpected error report from the Helios library.
As you can see in the call stack sub-window from the screenshot below, this is occurring in the fromValidatorHash() method that belongs to the Address object. If you look in the Console sub-window you can see that the method was expecting the stakingHash parameter to be a StakeKeyHash object or if not that, a StakingValidator object. Instead that parameter is a ValidatorHash object so the assert() call fails and throws the error.
https://github.com/Hyperion-BT/picoswap
What can I do to fix this?
Also, can someone point me to the documents that describe the data objects the Helios library is trying to parse, in case I have to go it alone here?

Should be resolved now

The issue is related to picoswap code base not being updated to use the latest Helios version (currently v0.11.2) correctly.  It was working on a prior Helios version around v0.9.x but picoswap is not currently in active development.
This issue was discussed on the Helios discord here: https://discord.com/channels/997177025972424815/1000828171161190470/1069692746304077884


text:
Need client side browser Javascript example on how to make ADA payments via the Eternl wallet?
I want to initiate an ADA payment via the Eternl wallet via a Javascript code in my browser based dApp.    I'm hoping I can do this in a manner in the same way Eth devs do it on Ethereum via the Metamask browser.
Can someone point me to the most current client side Javascript example for connecting to a user's Eternl wallet and triggering an ADA payment?  Also, any tutorials or general docs on the subject are greatly appreciated as long as they are not outdated.
Also, if anyone knows of an NFT marketplace or contract that would allow me to query, buy, and sell NFTs from my live auction platform I'm building, please let me know.  I am aware of The JPG Store and NFTify but so far I have been unable to determine if they an API a developer can consume to perform those operations.
Note, if this is not the right forum for Cardano developer questions, please point me to the right forum for that.  I have not had much luck with these questions on the Catalyst and Cardano Discord forums.

https://github.com/Hyperion-BT/PicoSwap could be the demo you are looking for.
Hosted here: https://www.hyperion-bt.org/PicoSwap/ (chrome only)
The demo contains example code for creating transactions (with or without smart contracts), signing, and submitting through blockfrost. All using javascript only (with the helios library).
PicoSwap is also a minimal marketplace for NFTs, so might be useable for the second part of your question (preview testnet only)

will that code also work with the Eternl wallet?

that's the only wallet I've been testing it with :P

Thanks.  If you know of a link for a TestNet ADA faucet please let me know.

You've probably found the faucet link by now, but I'll put it here for reference: https://docs.cardano.org/cardano-testnet/tools/faucet

Hi Christian.  I'm having trouble getting PicoSwap started.  Can you give me some tips?  I posted an issue on the PicoSwap GitHub repo just now with the details.


text:
Getting the address of a parameterized contract from within the validator of another script
Suppose I have one contract, Contract 1, that is parameterized by type
Contract1Params{
   tokenName :: BuiltinByteString
}

and I have a minting policy that will only mint a token with tokenName tn to the address of Contract 1 parameterized by c1p where tokenName c1p is tn.
So I need to get the address of parameterized contract from the token name of the token that is attempting to be minted from within the minting policy. Not sure how to do this with on chain code. Any ideas?

Your minting policy should have a parameter related to the address of the contract.
mkPolicy :: Address -> () -> ScriptContext -> Bool

In your off chain code, you send that parameter to your minting policy with something like this:
let val = Value.singleton (mySymbol $ scrAddress cp1) tn 1

Where:

mySymbol is the CurrencySymbol of your minting policy
scrAddress is the Address of your validator script
cp1 is the Parameter of your validator script


text:
Issues with oracle concurrency
I'm sort of running into an issue with the oracle described in the PPP.
It looks like there is race between the oracle to update the exchange rate and the users to use the exchange rate in a swap.
We could upgrade the current model so that when the oracle updates the exchange rate, a bunch of utxos with "exchange rate tokens" and the new exchange rate in their datum are created, and now, people can swap with those utxos. However, we would need a mechanism for invalidating previous exchange rate utxos when a new value is published and new "exchange rate tokens" are minted.
Is there any way to facilitate such a mechanism where old utxos are invalidated when new tokens are minted? Or any other means of invalidating those transactions?

Maybe you could add a timestamp in the utxo's datum, to set how long this utxo is valid. And after this time has passed the utxo cannot be used in a transaction except that the smart-contract can delete it.

What if the price doesn't change though? We don't want the oracle to be bound to setting the price every so often, only when it changes, which is unknown.

I don't really understand how you have designed the Oracle. Couldn't the Oracle issue tokens with the current exchange rate on demand. And those tokens can be valid for a short period of time to be used in a swap?


text:
Cardano-cli errors when submitting
I can build and sign a tx with no errors using:
cardano-cli transaction build --alonzo-era \
--testnet-magic 8 \
--tx-in 20445d5c68e1759f1371a86ecca773b76463fba3831f128fd2f7834de38ae6ec#0  \
--tx-in 20445d5c68e1759f1371a86ecca773b76463fba3831f128fd2f7834de38ae6ec#1 \
--tx-in-script-file ./scripts/elidSplit.plutus \
--tx-in-datum-file ./datums/elidInit/elid.json \
--tx-in-redeemer-file ./redeemers/unit.json \
--required-signer ./wallet2/payment.skey \
--tx-in-collateral 20445d5c68e1759f1371a86ecca773b76463fba3831f128fd2f7834de38ae6ec#0  \
--tx-out $(cat addresses/dump.addr)+1689618+"1 71344f6919d4ee401df384b52bd627ae551c4db7a0242fad7e1d5d10.SD2" \
--tx-out-datum-embed-file ./datums/unit.json \
--tx-out $(cat addresses/eli.addr)+1689618+"1 71344f6919d4ee401df384b52bd627ae551c4db7a0242fad7e1d5d10.ELI2" \
--tx-out-datum-embed-file ./datums/eliInit/eli.json \
--tx-out $(cat addresses/elidSplit.addr)+1689618+"1 fb3fe9858ed4020bc7df6ea31ec9bf25baa5fedb4a2b8cbf7c23ab64.ELID" \
--tx-out-datum-embed-file ./datums/eliInit/elid.json \
--mint "1 71344f6919d4ee401df384b52bd627ae551c4db7a0242fad7e1d5d10.SD2"+"1 71344f6919d4ee401df384b52bd627ae551c4db7a0242fad7e1d5d10.ELI2" \
--mint-script-file ./scripts/elfSplit.plutus \
--mint-redeemer-file ./redeemers/unit.json  \
--change-address $ADDRESS2 \
--invalid-before 8148593 \
--invalid-hereafter 8167069 \
--protocol-params-file pparams.json \
--out-file ./txs/eliInit/tx.build

cardano-cli transaction sign --tx-body-file txs/eliInit/tx.build --testnet-magic 8 --signing-key-file ./wallet2/payment.skey --out-file txs/eliInit/tx.signed

My 1 input datum and 2 output datums add up to a total of 2888 bytes.
bash-4.4# du -b datums/elidInit/elid.json
481     datums/elidInit/elid.json
bash-4.4# du -b datums/eliInit/elid.json
477     datums/eliInit/elid.json
bash-4.4# du -b datums/eliInit/eli.json
1930    datums/eliInit/eli.json

Yet when I try to submit, I run into the following error:
bash-4.4# cardano-cli transaction submit --testnet-magic 8 --tx-file txs/eliInit/tx.signed
Command failed: transaction submit  Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (UtxoFailure (ExUnitsTooBigUTxO (WrapExUnits {unWrapExUnits = ExUnits' {exUnitsMem' = 30000000, exUnitsSteps' = 10000000000}}) (WrapExUnits {unWrapExUnits = ExUnits' {exUnitsMem' = 40134886, exUnitsSteps' = 14936123959}})))),UtxowFailure (WrappedShelleyEraFailure (UtxoFailure (MaxTxSizeUTxO 19142 16384)))])

How do I get the transaction to not error our when submitting? My scripts conduct some time checks, signing checks, and checks on the output datums.

Apparently there is a problem with the size of your transaction, which is: 19142
But there is a limit, you can find it on the protocol-params file:

maxTxSize: 16384 bytes

Try to modify it, to decrease the size of the transaction.

I am pretty sure that the size of the transaction is relatively small from the above numbers. Is there any way to tell where that size is coming from?

It's not the max Tx size, but rather the exunits. Try lowering those


text:
The Plutus script evaluation failed
Running into this error when attempting to build a tx.
Command failed: transaction build  Error: The following scripts have execution failures:
the script for transaction input 1 (in the order of the TxIds) failed with:
The Plutus script evaluation failed: An error has occurred:  User error:
The budget was overspent. Final negative state: ({ cpu: 6228000431
| mem: -2515
})
Script debugging logs:
the script for policyId 0 (in the order of the PolicyIds) failed with:
The Plutus script evaluation failed: An error has occurred:  User error:
The budget was overspent. Final negative state: ({ cpu: 6209175329
| mem: -4312
})```

Any ideas for how to solve it?

Had to use cardano-cli transaction build-raw and set my scripts to use more memory and cpu via the following flags (for example):
--tx-in-execution-units="(5000000000, 5000000)" \
   ...
--mint-execution-units="(5000000000, 5000000)" \

I used the following divisions as they add up to the maximum tx mem and cpu units for testnet (as of 11/24/2021) and split the units halfway between both of them, since both scripts were failing.


text:
How do I read the datum of an output?
How do I get the datum of an output from cardano-graphql (or another service)? I have attached it using the --tx-out-datum-embed-file flag already when building the tx using cardano-cli.
Thanks!

If you are running a DbSync node you can retrieve the datum and redeemer:
redeemer
A table containing redeemers. A redeemer is provided for all items that are validated by a script.

Primary Id: id

Column name
Type
Description

id
integer (64)

tx_id
integer (64)
The Tx table index that contains this redeemer.

unit_mem
word63type
The budget in Memory to run a script.

unit_steps
word63type
The budget in Cpu steps to run a script.

fee
lovelace
The budget in fees to run a script. The fees depend on the ExUnits and the current prices.

purpose
scriptpurposetype
What kind pf validation this redeemer is used for. It can be one of 'spend', 'mint', 'cert', 'reward'.

index
uinteger
The index of the redeemer pointer in the transaction.

script_hash
hash28type
The script hash this redeemer is used for.

datum_id
integer (64)

datum
A table containing Plutus Data available in the blockchain, found in redeemers or witnesses

Primary Id: id

Column name
Type
Description

id
integer (64)

hash
hash32type
The Hash of the Plutus Data

tx_id
integer (64)
The Tx table index for the transaction where this script first became available.

value
jsonb
The actual data in json format

Taken from dbSync:
https://github.com/input-output-hk/cardano-db-sync
It is also possible by just inspecting the blockchain. Even tho only the Datum hash is attached to the eUTXO, the datum value should be in the witness set of the transaction that created such eUTXO, so we should be able to:
a) Get the datum hash from the eUTXO and then.
b) Get the transaction that created such eUTXO and use the hash to retrieve the actual datum data.
Otherwise, if the Datum were not present at all on the chain it would be impossible to re-validate the blockchain from scratch.

As per the comments on this PR the datum is included in the TX that spends the corresponding eUTXO rather than on the one that creates it. https://github.com/input-output-hk/cardano-db-sync/issues/1076

It is possible to just add the datum hash when creating a transaction, in which case the actual datum value won't be included in the witness set of the transaction that creates the output, however, it is also possible to add the datum value at creation of the transaction if you use the flag "tx-out-datum-embed-file" or "tx-out-datum-embed-value" on the CLI and add the datum value, in which case, the datum value will be available on chain from the creation of the eUTXO.

This solution somehow doesn't work for tx 034cd38f3f8387e6963c78175e459a2ffab0e36becb36510aaa81534f6ea6e54
I can't find the datum for this tx in cardano db sync.


text:
Getting Validator Hash
I'm checking the Value locked by certain ValidatorHash of another script that I deployed. Does anyone know how to get Ledger.Address or ValidatorHash from Plutus or cardano-cli? I know the "address" that is a string that starts with "addr_test1..." but how do I turn that into the above Plutus types?
Sort of like this question but for ValidatorHash. I know that you can use cardano-cli transaction policyid for monetary policies, is there an equivalent for ValidatorHash?
Thanks!

So you want to go from address (addr_test1...) to Ledger.Address or ValidatorHash?

Just tested on testnet, cardano-cli transaction policyid --script-file ... works.
Just make sure in your Haskell code to include something like the following to turn it into an address:
testnetDumpValidatorHash :: ValidatorHash
testnetDumpValidatorHash = "10101010110101010101010101010101010101010101010101123456"

testnetDumpAddress :: Ledger.Address
testnetDumpAddress = scriptHashAddress testnetDumpValidatorHash


text:
Alonzo purple node not syncing
My Alonzo Purple stopped earlier today at:
{
    "epoch": 1138,
    "hash": "6da227172643387f26e2b95e7f8d781938a6084bc745fb5026134fa901bd5ef8",
    "slot": 8190079,
    "block": 358864,
    "era": "Alonzo",
    "syncProgress": "99.42"
}

https://explorer.alonzo-purple.dev.cardano.org/en is also stuck at the same place it seems
How do I get further?

Alonzo network is dead, you should move your testing to the Cardano testnet.

authors: COSMOS 環宇海外移民服務


text:
How do I deploy a smart contract from another smart contract?
If I want to create one top level contract for creating a bunch of other, similar contracts, lets say a top level Uniswap contract that creates liquidity pool contracts and keeps track of the total amount of LP tokens in each of the pool scripts below it. A pool can only be created by a "create" call to the top level contract, and everytime LP tokens are minted or burned, the top level contract updates its datum.
How exactly would I go about that?

Check out the Uniswap example in the plutus-use-cases!
The way it works is there is an NFT they call the "Uniswap coin." In order to create new liquidity pools, that NFT needs to included in the transaction and the new pool needs to be recorded in the Factory datum. That validation happens here.

A pool can only be created by a "create" call to the top level contract, and everytime LP tokens are minted or burned, the top level contract updates its datum.

Luckily you don't need to update the top level datum after each pool is created. The validateCreate path in the SC (what you refer to as the "create" call) also checks that a liquidity pool is created with a Poolstate token here. Since we can be sure that the Poolstate token was created using the Uniswap NFT, we only need to update the Pool datum on the Poolstate token in the future.
Hope that helps :)


text:
where can I find the active alonzo-test configuration json files
I am not able to fully understand where the active configuration files are located for alonzo test and main net.
I found this link from doing the alonzo-test exercises:
https://hydra.iohk.io/build/7189190/download/1/index.html
but this seems to be for 1.28, and I am currently running 1.29, and I am not able to connect.
Is there a way to know what build I should use for 1.29 configuration?
I am a bit confused.

In this guide is updated (using 7191656)
https://developers.cardano.org/docs/get-started/running-cardano/
So at the end just add
testnet-alonzo-genesis.json or mainnet-alonzo-genesis.json

wow, thanks a lot! I was reading outdated docs.


text:
Plutus pioneer program - Lecture #1 - Can't understand behaviour of transactions
Why is the second bid of wallet 2 getting ignored when I test it like this? If the first transaction of wallet 2 was also valid, then the second suceeds. I'm just curious if this is somehow expected behaviour or if there is some faulty code on the contract.
Print 1: Tested transactions

Print 2: Trace of wallet 2

I expected too see any print related to the second bid at least, can't understand why that doesn't happen.

Isn't the log referring to the first bid  (i.e. Slot 2) made by wallet 2?

@AronNeewart it is, but that is the whole log for wallet 2. In this scenario there should at least be a " found auction utxo with datum" log too around slot 7. The answer by j.karlsson makes sence though.

If I recall correctly there is some problem/bug in the playground, such that when a wallet/transaction fails, no more transactions from that wallet is accepted.
But as you noted when first bid is accepted, the next bid from wallet2 also works.

That would justify it indeed, thank you!


text:
How to send a transaction for Cardano native assets via CLI?
For example to list UTXO is something like this
cardano-cli query utxo —mainnet —address addrX

which returns as an example
                               TxHash                                 TxIx        Amount
--------------------------------------------------------------------------------------
txHashA     0        1500000 lovelace
txHashB     1        1500000 lovelace

but for native assets it returns the UTXO as the following (NFT example)
                           TxHash                                 TxIx        Amount
--------------------------------------------------------------------------------------
txHashC     0        1500000 lovelace + 1 someHash???.SomeNft1
txHashD     1        1500000 lovelace + 1 someHash???.SomeNft2

My main goal is to understand how to send one to many native assets in a single transaction

I'm having trouble signing this transaction. I get: Invalid argument `payment.vkey'

Basically, according to the docs.cardano.org:
cardano-cli transaction build-raw \
         --mary-era \
             --fee 178393 \
             --tx-in fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63#0 \
             --tx-out addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz+10000000+"1 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \
             --tx-out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz+989643522+"999999999 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \
             --out-file rec_matx.raw


text:
Query all UTXO's from a single Yoroi wallet via CLI?
I wanted to list all assets from my Yoroi wallet via Cardano CLI when I noticed separate privacy addresses had their own UTXO's. Is there a way to resolve all UTXO's from a single  wallet?

The root key of a wallet is derived from BIP39 keywords. Then additional keys are derived beyond that. You would need to check each one individually for funds. You can use the cardano-serialization-lib for this. Many lite wallets like yoroi or ccwallet.io use this. More information about BIP39 can be found in my youtube video on the subject. https://youtu.be/5P1jx1ELUHk


text:
Wallets begining with 0x
I've seen multiple blockchains (eth, bnb, avalanche) that support wallets that begin with 0x, that way we have 1 wallet for multiple chains, is this possible with cardano or we are fixed to addresses begining in addr.... ?

This Catalyst proposal is trying to achieve a DNS for Wallets (WNS) on Cardano. Theoretically you can assign different wallets to one address.
Also, Unstoppable Domains might support Cardano soon.

that would be great, because having 1 wallet for each blockchain is just not great. Imagine having a different "real wallet" for each dollar bill you have, ex: 1 wallet for $1, one wallet for bills of $5, etc... I hope this gets implemented

I want to follow up and say that ADA handle will start with Beta sale on Nov 6th.

I’m familia, I’ve been following then. What I don’t know is if that will allow the hex address from metamask to be transformed


text:
Any update on RINA?
Recursive Interconnect Network Architecture was being discussed for Cardano. Is the networking team or anyone looking into this?


text:
Re: staking using ada with Yoroi mobile
Well, two questions: (I'm a newbie so please go easy)

So, I started staking with mobile Yoroi my Ada coins. I've looked all over the interwebs, there is no info on this topic:. While my ada is being staked, do the coins go up & down with market pricing as if they were in my exchange wallet? I'm sure it does otherwise it would be extremely lame to stake if a project like ada is going up in value!!?? Please can someone clarify!

Why in my Yoroi wallet does it only give me my token count? It doesn't give me an estimated market value in dollar amount??? It's 2021, that would be nice, then I wouldn't be asking the above first question. Thanks and please go easy on me, only been in crypto for 10 months. MG

Welcome to Cardno SE Mike G.

Few points regarding staking are as follows.

Staking will not affect the market value of ADA in any manner.

Staking ( as I understand) is a way to implicitly trust the Stakepool you had delegate and give it more power while participating in Block production.

You can decide to change your deligation(which stake pool you trust) at any time you want.

You can remove any amount of ADA from staking at any time you want and sell the coins by transferring them back to exchange at the market rate.

Yes, it would be nice if the market rate is shown by Yoroi wallet, like Daedelus.

yes, your staked ADA will continue to fluctuate in value as the ADA price changes, like all ADA does. Your staked ADA never leaves your wallet, so as Raghu points out above, you can remove your stake at any time (although doing so before the end of an epoch means that you may lose your rewards)


text:
Constraints.mustValidateIn in a StateMachine
I have an issue with Constraints.mustValidateIn in a StateMachine.
In the case using Interval.to deadline everything works as expected. But in the case: Interval.from deadline the constraint is never valid.
I also tried to build the interval by hand to exclude issues with closure: Interval {ivFrom = LowerBound (Finite $ deadline object) False, ivTo = UpperBound PosInf True} Tried with and without closure but it does not have any effect. Also waiting and use the transition in a slot which is far beyond the deadline does not work.
Docs say :
 mustValidateIn :: forall i o. POSIXTimeRange -> TxConstraints i o

 *mustValidateIn r requires the transaction's time range to be contained in r.*

If I understand it correct, in this case it means the transaction have to happen between deadline and infinity, which should be represented by the interval above?
I define the deadline in the trace as : slotToEndPOSIXTime def 25
Very confusing is: when I change it to slotToBeginPOSIXTime def 25 without changing anything else the behavior turns around...
Anyway my waitForNSlots in the trace are always minimum 3 slots so it should also not run in some limit case.
The actual distance between slotToBeginPOSIXTime and slotToEndPOSIXTime is, if calculated in repl, 999 milliseconds as I would expect with a slot time of 1s.
(Also tried to add / subtract some seconds from the POSIXTime, which had no effect)
Do am I miss something here?
Thank you for support

I had the same issue. Slots are 1 second and cannot be broken down any further. So when you use the slotToEndPOSIXTime def 25, you will get something like 1596059104999. This number is number is in milliseconds, and is not a valid slot because of the trailing 999. You need to add 1 to this number to bump it up to 1596059105000 so that it is evenly divisible by 1000(1000ms/1Second).
I hope that helps!


text:
what is happening behind the scenes when you buy a cardano nft, from a privte website
I m starting to get into coding, and I did not manage to find an answer to this question.
When you buy an nft you are asked to send an X amount of ada to a wallet, and then few min after the website automatically sends you the nft.
How do I begin to learn how to do it myself?

The documentation here is a solid way to get started: https://developers.cardano.org/docs/native-tokens/minting-nfts

I will try to answer this question as there are a few ways this could be happening. So far, I've seen the following

Cardano Smart Contract (most decentralized solution and preferred)
Minting Machine (very centralized and code cannot be verified)
Manually sending

Cardano smart contracts - There is an onchain portion and and off chain portion to consider but in general you can consume a utxo at a smart contract address by simply sending a transaction that meets the contracts parameters for successful validation. When you send ada, you are creating a transaction and submitting it. The smart contract verifies that you have met the requirements and the NFT gets transferred to your wallet. (This is made more seamless with a wallet connector. Connecting a wallet and signing the transaction on the site can trigger the submit and execute the smart contract)
Minting Machines - I've seen a lot of these around and I don't like them as they are not really part of of the blockchain. It's a bash script that gets executed if it detects a deposit of ada coming into an address. Some of the ada that comes in is used to build a transaction to mint the nft. Then another transaction to send the nft to the buyers address is created and sent to the original sender.
Manual - As a developer, I've gotten request to do this manually until they build out one of the other options listed above. My recommendation is to learn the cardano-cli and try some transactions on a node. Then learn haskell and plutus to build smart contracts.

Per his description, I think he means the second option (minting machine), since he sends X amount of ADA to an address, instead of consuming a script

And with smart contracts you lose a critical feature: you know exactly what NFT you are buying, so there is no randomness behind the scenes


text:
Creating Cardano Non-Fungible Tokens with royalties for newbies
I've been looking around since last week and I need directions to create my own non-fungible tokens with royalties.
Do I need to learn how to create a smart contract for this myself? or are there templates that I can trust?
I'm looking for best practices and good sources.
How do I approach this?

There's a discussion about this topic on the Cardano forum.
Some members of the community created a CIP that you can see on GitHub.
This is the most recent information there is (and it's still work in progress). Since native assets can be sent around without any smart contracts, royalties can't be enforced for Cardano NFTs. With the proposal in the CIP, you rely on the honesty of the people (or at least the NFT marketplaces) who sell your NFTs.

You would probably need to write the smart contract for yourself.  There isn't really a set of well tested templates or anything like that (as far as I know) besides the sample exercise code provided in the plutus pioneers program.

Do you have the sample exercise code at hand? or link to it?

authors: 北京做假证_北京办文凭毕业证 - spam


text:
What is the Daedalus Pool Ranking Equation and where is it defined in the code?
What is the Daedalus Pool Ranking Equation? Where is it defined in open source code?
A seemingly simple question, but hard to find, where the Daedalus pool ranking equation lives. Can anyone tell me exactly where in the code this is defined? I want to trust but verify, and understand.
I've been reading thru here in the github input-output-hk/daedalus, but coming up empty handed. Specifically in ../source/renderer/app/components/staking/stake-pools. I just can't seem to find where the equation exists in the code, although there's many references, such as filtering here.
Theoretically, it is defined as cited in the cardano-ledger, README, Stake pool ranking specification. It also could be the same reference, but here as well ../tree/master/docs/pool-ranking
I just can't seem to close the gap from the theoretical to Daedalus code.

This data comes from stakePool.nonMyopicMemberRewards, which comes from stakePools, which comes from staking, which comes from the store. This is in the delegation center page code around line 81. So effectively this all happens at the API endpoint where the data that Daedalus uses comes from. The calculation doesn't happen in the Daedalus wallet code.
Here is the call to get the stake pools https://github.com/input-output-hk/daedalus/blob/0c4944dbd650f51d18d4f15add0001bac9f2445c/source/renderer/app/api/staking/requests/getStakePools.ts
The actual ranking appears to be here: https://github.com/input-output-hk/cardano-wallet/blob/4a3aff30f8a6f755115e8492ed0a6909f7bf8b65/lib/wallet/src/Cardano/Pool/Rank.hs#L299
This also might be helpful: https://gist.github.com/ilap/ad088d31e542f73685a3a245b3ad6c50

Thanks for the thorough answer! For future readers, after some digging, it looks like the pool score and equation is assigned in the /Rank.hs line 313: https://github.com/input-output-hk/cardano-wallet/blob/4a3aff30f8a6f755115e8492ed0a6909f7bf8b65/lib/wallet/src/Cardano/Pool/Rank.hs#L313 . Looks like the pool scores and other data is added to a data struct in /Pools.hs

@TheStophe Happy to help. The code can definitely be a bit spread out. I updated my answer to include the link you found.


text:
What's the best hardware device to generate stake pool cold-keys and key rotation?
What are the best recommended hardware devices to use that are offline / cold to generate the stake pool cold-keys and key rotation?

Laptop with WIFI switched off?
Raspberry pi zero with wifi disabled? not connected to power when offline?

Why not use your Ledger hardware wallet for the stake pool cold key?
It is not possible to import your existing keys to it, you can use it only if you start a new stake pool and create a new cold key.

I didn’t even think of using a ledger, that’s an interesting idea. Do you use that?

No, because I started my stake pool before that feature became available, and importing existing cold keys is not possible. But I would probably do it now, if I started a new stake pool.

Thank you George. Would you happen to have a tutorial about how to do this? Or link? Thx!

You can find instructions here: https://github.com/vacuumlabs/cardano-hw-cli/blob/develop/docs/pool-registration.md

I use an older Intel NUC that has no network capabilities. If you use a device with WiFi or Bluetooth capabilities, I strongly suggest that you disable the WiFi card and Bluetooth in the system BIOS before installing your OS.

Another solution is to use a bootable USB with TailsOS installed in it.
This operating system is created to block surveillance and enanche privacy and it permits to you to block any connection at boot and have a persisten encrypted storage.
If you are interested, I created a guide on how to implement this solution.
I can give you support in case of need.

Either of those options are fine.  You want your cold environment to stay cold.  The hardware requirements are minimal for generating keys and signing transactions.  Of the machines you listed above, I'd go with whichever machine you are most likely to keep offline and cold.  Disabling WiFi and Bluetooth in the system BIOS, as well as a fresh OS install before key generation would be best.  Also, remember to follow offline workflows for system, node, and software updates.
I use an old laptop and keep it tucked away until I need it.

bonus points for physically removing the wifi card from your hardware


text:
How to view Daedalus' Stake Pool Rankings, without having Daedalus downloaded?
Is there a way to view Daedalus' stake pool rankings, without having Daedalus installed?
I had to uninstall Daedalus because my laptop ran out of room.  Note, other explorers like AdaPools and Eternl use their own ranking formula.


text:
What is block density?
What is block density? Pools currently before the Vasil upgrade are saying switch from 1.35.x back to 1.34.x to increase “block density”.

Bonus question, any idea why the current 1.35.x pre Vasil in testnet node seems to be dropping blocks, and reducing chain density?

Looks like it’s an issue checking minFee between different era versions: https://github.com/input-output-hk/cardano-node/issues/4228#issuecomment-1195757220

Just building on top of answer from Erik, a simple way to look at it would be :
(number of blocks minted so far in current epoch) / (number of slots so far in current epoch)
In ideal scenario, the density should match the active slot co-efficient (0.05 on testnet and mainnet, i.e. on average - 5% of chances for a random slot to have a block minted).
Is there a risk to protocol if density is too low? While it's far from ideal / healthy, current consensus network should work fine as long as there is 1 block in stability window , viz : 3k/f (i.e., 32160/0.05, which corresponds to ~ 1.5 days on testnet/mainnet).

Each epoch is supposed to have about 21600 blocks per epoch, where an epoch is 5 days long. If every epoch had 21600 blocks, the density would be 100%. However blocks occasionally get skipped so the density will be less than 100%.
This is not the exact way that "chain density" is calculated (I forget the exact way it is calculated) but it should be enough to understand the concept.


text:
What's the difference between sidechains and hardforks?
What are the pros and cons of creating a new sidechain versus hardforking Cardano if making a variant is desired?
Does a sidechain have the same inherent security and as the mainchain thru stake pools? Forked tokens versus new sidechain tokens?
Example: If in the future Cardano Voltaire Governance Era, a tradeoff is made to decentralization, the reward equation, or new research is introduced, etc, a a party wants to create a new Cardano variant. Should the party decide to create a sidechain, or hardfork Cardano? Are they the same thing? What should be considered?

A sidechain is simply an alternate/secondary chain that shares a two-way link/peg with another chain that is the primary chain (frankly primary/secondary are philosophical roles that are interchangeable per case), to exchange messages and assets.
With that said, creating a variant of Cardano via a fork of the canonical chain from a point or a whole new chain/genesis block from the original codebase (with changes), doesn't automatically make that variant a sidechain of Cardano or inherit the security of the original Cardano network.
This is because
A) bridge and relevant cross-chain protocols need to be deployed for interoperability as a sidechain.
B)security on the canonical chain is weighted in ADA stake which is tied to real world value and largely recognised by global actors. The variant will simply have a bunch of ADA tokens that do not in anyway reflect value of ADA from the canonical network. It will also lack the integrations and network effect of users and SPOs to solidify its place.
So a Sidechain is not a forked chain by default, and vice versa, but arrangements can be made to make a forked chain become a sidechain.
P.S. The whole point of Sidechains, starting from Bitcoin was about building alternate networks that communicated with the original network but had the flexibility to make/follow its own custom rules. This is the idea for sidechains on Cardano, where parties can build their own sidechains with their own rules should they feel misaligned for some reason or experimental.

Sidechains and hardforks are definitely not the same thing.
As outlined in the original Why Cardano essay, the whole point of Layer 1 Cardano is to serve as a settlement layer for domain-specific computation performed by a collection of Layer 2 "sidechains". The explicit bifurcation of one settlement layer and many execution layers allows for much of the heavy computation to be spread out with domain-specificity.
The extent to which a sidechain inherits Cardano's security depends on how frequently and tightly they interact. Although there may be overlap, sidechains can and will have their own accounting models, consensus mechanisms, validator sets, e.t.c. Their "security" will depend on which of the many trade offs they've made.
So, the decision of whether to sidechain or hardfork depends on what you are trying to achieve. Are you trying to deploy some killer new execution/consensus/dApp engine? A privacy chain? Do you want smooth interoperability with everyone else's new chain? Go sidechain.
Or, do you want to make such radical changes to the settlement layer of all this infrastructure that the HFC and voltaire-era governance procedures are not enough? Then hardfork. (This is unlikely to be viable).


text:
How are the Project Catalyst Voting Rewards calculated?
How are the Project Catalyst Voting Rewards calculated? What is the equation? Where is it documented?


text:
If you run a stake pool at home, and have to move, what is the best transition approach?
If you say are a single stake pool operator running a bare metal server from home, what happens if you have to move? How do you make the transition without going offline? What is the best recommended approach?

I think there are 3 main options for doing this, below if a list order by easiest to more difficult.
Option 1: Temporary Cloud Servers
I think the quick way to do this would be to spin up cloud servers to run your pool. Once the cloud servers are up and synching the blockchain, point your DNS records at them. Make sure to cutover your block producer in such a way that you only have 1 running at a time. At this point you can power off your servers and move. After the move, re-point your DNS records back to your bare metal, let them synch up with the blockchain and finally power off the cloud servers. Again, doing this in such a way to only ever have 1 BP online.
Option 2: The Chuck!
Currently, a good friend of mine and I run a stake pool out of our homes. We live in geographically different locations and create the 'Chuck Pattern.' Essentially, this involves us both running 2 relays and a block producer, with 1 block producer running on standby. For this setup, all we have to do is power off the live block producer and restart the standby block producer with the keys if we need downtime (or need to move). I did a few writeups about this, this one is about how we decided on this setup, and this one is the details of the setup. Obviously this does require a partnership to achieve, but it is cost effective.

Option 3: Buy Duplicate Hardware
For this option, you would just buy another set of hardware and then buy a second internet connection for a short time. Basically would do the same thing as the Cloud option but with your own servers and internet connections.
I hope this helps!

Awesome thank you!

authors: 港豐人民幣找換匯款有限公司


text:
Can you stake stablecoins such as Djed?
Can or will you be able to stake Cardano stablecoins in stake pools for rewards, such as Djed?

Let's first ask ourselves,  what does staking really mean?
The purpose of the staking mechanism currently implemented in Ouroboros is primarily to incentivize honest real-time consensus on the Cardano Settlement Layer (CSL). However, the CSL is merely the first layer of a much larger ecosystem that facilitates  the communication of globally interconnected DApps, also known as the Cardano Computational Layer, or CCL.
The CSL is the backbone and heartbeat of the system, optimizing for security and correctness over throughput, and was thus built first in a highly formal and concerted effort by for-profit companies. And so the protocol and staking rules are imbued with a level of rigidness that is necessary for a global base-layer.
The CCL can and will be a collection of diverse Hydra channels with unique consensus and ledger mechanisms. At first it will be a Cambrian explosion of  channels/operators, all experimenting and competing with each other to establish network standards. Over time it evolves into a more stable and self-governing entity, eventually settling into some global equilibrium.
All of this is to say that the current implementation of staking on the CSL will be tinkered, built upon, and deployed in a vast array of ways both inside and outside the CCL. Sundaeswap's recent ISPO and World Mobile's Earth Nodes are examples of this, but are still only scratching the surface.
In principle, anything can be "staked" as long as the underlying incentive scheme is sound/sustainable.

No.
In theory you could add stability to a PoS blockchain but staking tokens other than the core native token, but the underlying network has no concept of how valuable a token is. It can’t tell the difference between Djed and any old token you minted a billion of yourself.
In Cardano, PoS only works because ADA is valuable to someone. If the price went to zero, then the consensus mechanism would fail as well.

There are talks about allowing fees to be paid with non-ADA tokens though. See Babel Fees: https://iohk.io/en/blog/posts/2021/02/25/babel-fees/


text:
How to validate someone delegates to your stakepool, while preserving their privacy?
Say you had a "stake pool paywall" for your website, where you offer your content, but only to those who delegate to your stake pool.
What's the best way to validate someone has delegated to your stake pool, while preserving their privacy?
Ideally this would be some kind of login info they provide (public address paste in?), that automatically checks and unlocks website content access if True.
Ideally, this "proof" would unlock the website "paywall" so they can access your content, knowing they contribute to your pool.  You could potentially unlock "levels" of content for duration of staking.

This is not a complete solution but it may possibly work. But, before that some context on cardano addresses and the delegation process is required:
Cardano addresses are of different types as described on the Cardano Ledger Spec :

Base addresses, Addrbase, containing the hash of a payment credential and the hash of a staking credential. Note that the payment
credential hash is the hash of the key (or script)which has contol of
the funds at this address, i.e. is able to witness spending them. The
staking credential controls the delegation decision for the Ada at
this address (i.e. it is used for rewards, staking, etc.). The staking
credential must be a (registered) delegation credential.

Pointer addresses, Addrptr , containing the hash of a payment credential and a pointer to a stake credential registration
certificate

When a user delegates to a stake pool, a delegation certificate is posted to the blockchain. It contains:

The stake key registration certificate hash
The stake pool id (hash) the use has delegated to.

Assuming a base address is used in the delegation transaction, this means that the address is linked to the stake key hash contained in the certificate.
So a potential login solution would be have the user generate a pointer address in his wallet and paste it in a field on you webapp login page.
On the back-end, you could fetch the original delegation address and the stake key linked to it.Then check if the pointer address submitted is linked to the same stake key as the original address.
If there is a match it can only mean that the private key used to derive the original address is the same private key used to derive the pointer address, therefore the user submitting the pointer address must be the same user who delegated to you pool.
Some useful references related to this:

CIP-19
Formal Spec Doc of the Cardano Ledger
Engineering Design Specification for Delegation and Incentives in Cardano–Shelley

Thank you @Kelli this is awesome.

I don't know if this is a great solution to this, but what you could do, is make logins for your users based off of their Staking Address (stake address = username) and then to validate it you could have them send 1 ADA to you from that Address. Then on your website's backend, you will need to look for that new transaction to your wallet to finish the validation. Once validated, they can set their password, thus protecting others from using the same public stake address. Not a perfect solution but it should work for this.

Thanks for the input @Anton !


text:
Can you run a stake pool pseudonymously?
To be a stake pool operator and run a stake pool, can you do this pseudonymously? If so, What are the pro/cons to this?
Would this be preferred to prevent hacks, enhance DevSecOp, and potentially avoid future KYC requirements from the government?
If the gov recently wants SPOs to KYC their delegators, they must want to KYC the SPO itself?  But if everyone is pseudonymous, can the really stop that?

Can you run a stake pool pseudonymously?
Yes you can. The only things I can think of that could be used to identify you would be your public IP address or, DNS records (at least at a public knowledge level of anonymity.) And there are ways to mask those.
Would this be preferred to prevent hacks, enhance DevSecOp, and potentially avoid future KYC requirements from the government?
It will help with preventing targeted attacks on you personally. By that I mean if someone easily knows who you are and that you own a Cardano wallet pledging XXXXX Ada to a stake pool, you become a bigger target for hackers.
As far as Government KYC requirements go, the law is the law, so if you want to be a legal operation, you will need to meet whatever those requirements might be. Therefore if they require that you operate your stake pool as yourself, then you would have to do so.
If the gov recently wants SPOs to KYC their delegators, they must want to KYC the SPO itself?
Yes, but I would imagine that you could do this and keep yourself pseudonymous to the public.
But if everyone is pseudonymous, can the[y] really stop that?
Yes they could. They could just outlaw Cardano if they really wanted to.


text:
macOS Monterey i7, what is the best `nix.conf` file to use?
Does anyone have the recommended nix.conf file to use for macOS Monterey i7?
Following a few different tutorials, my current .conf file looks like:
build-users-group = nixbld
substituters        = https://hydra.iohk.io https://iohk.cachix.org https://cache.nixos.org/
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=volume

However, https://github.com/input-output-hk/plutus-apps#nix-1 for macOS also recommends adding:
sandbox = true
extra-sandbox-paths = /System/Library/Frameworks /System/Library/PrivateFrameworks /usr/lib /private/tmp /private/var/tmp /usr/bin/env

Any other working steps are appreciated.  I wouldn't follow tutorials for the M1 i'm assuming too.  Thanks!
Ref:
[https://www.punkbit.com/hacking/plutus-developer-environment-setup-on-macos-monterey/]

macOS nix setup on x86_64 (Intel, AMD) and aarch64 (Apple Silicon) should be identical.  Running the installer from the official website, should get you a proper install.
You do want to add the iohk substituter to get access to the cached builds:
https://hydra.iohk.io
hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=

I'm fairly sure that the iohk.cachix.org instance is defunct (or not updated anymore really). So it should be fairly safe to remove the following
https://iohk.cachix.org
iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo=

Please don't enable sanboxing on macOS, while that is in principle a good idea, it will lead to crashes with complex nix expressions. See Status of macOS | nixos/nixpkgs#116341

This /etc/nix/nix.conf wound up working for me, based on your help, for my masOS i7 v12.1 monterey: https://cardano.stackexchange.com/a/6745/4012


text:
Calculate a policy locking
How can I calculate when the policy is going to be locked? I have the policy script file and I need to specify the before slot but I don't know how to calculate it.
For example, I want the policy to be locked in 6 months.

Given the slot lenght is one second, this is pretty easy.

Find the current slot number.

$ curl -s  -H "project_id: $BLOCKFROST_PROJECT_ID" https://cardano-mainnet.blockfrost.io/api/v0/blocks/latest | jq .slot
40664369

Add 6 months to it (roughly)

$ expr 40664369 + $((60*60*24*30*6))
56216369


text:
Protocol parameters file to calculate min fee
I'm wondering, do I need to always generate a new protocols parameters JSON file when generating the min transaction fee?
I have a few transactions to make and I really don't like to be creating a new protocol parameters file before calculating the min fee. Is there a better approach for that?

Generating a new protocol parameters file just dumps the node's current parameters into a JSON format. Since the parameters are not constantly changing, generating a new params file each time is not strictly necessary - you can reuse it. However, if the parameters do change (as the did just now at the E319 boundary), then your fee calculation might be impacted if you use an outdated file.
Personally, I like to generate a new params file every epoch - this can be easily automated with cron.

Thank you for that, that sounds like a good approach. Every 5 days you regenerate the protocol parameters, right?

Yessir, only if I need to submit a transaction though.


text:
Plutus-starter - cannot start contract instance
I am following the link below. I've successfully built the docker image (literally had to upgrade to 32 GB of RAM, it used 15 GB at peak RAM usage during cabal build). I have the PAB server running successfully and was able to create the two wallets as defined in the tutorial.
When I try to run Section 2: Start the instances:

curl -s -H "Content-Type: application/json" \   --request POST \
--data '{"caID": "GameContract", "caWallet":{"getWalletId": '$WALLET_ID_1'}}' \   http://localhost:9080/api/contract/activate | jq

I get the error code:

parse error: Invalid numeric literal at line 1, column 6

I am new to using jq - I cannot figure out which tag corresponds to "column 6". Can anyone help me out? Am I supposed to change some ' to "? Or do I need to replace $WALLET_ID_1 with the wallet pub key hash? I've tried both with no success.
https://github.com/input-output-hk/plutus-starter
Thanks,

My Plutus build has an old version of the Wallet package (see https://cardano.stackexchange.com/a/3844/3951). I could get the contract instance ID by running:

curl -s -H "Content-Type: application/json" \ --request POST
--data '{"caID": "GameContract", "caWallet":{"getWallet": 1}}' \ http://localhost:9080/api/contract/activate | jq


text:
Error starting /plutus-apps client and connecting to localhost macOS
Incurred an error starting /plutus-apps client and connecting to localhost: user error, Interpreter Error, CompilationErrors
Short Error
  plutus-playground-server: user error (Error evaluating simulation:
  InterpreterError (CompilationErrors [CompilationError {filename =

Computer:

macOS Monterey (v12.1)
Macbook Pro 2015 Intel Quad Core i7

Steps:

Started nix-shell in plutus-playground-server, and successfully ran plutus-playground-server
In new terminal tab, ~/plutus-apps, nix-shell successfully ran
Updated dependancies sudo GC_DONT_GC=1 npm install -g npm
start client cd plutus-playground-client and npm run start (Error occurred here)

Full Error:
  plutus-playground-server: user error (Error evaluating simulation:
  InterpreterError (CompilationErrors [CompilationError {filename =
  "\n/private/tmp/web-ghc-work-16cc79e7d9a477a7/Main.hs", row = 2, column =
  1, text = [" error:","    Could not find module
  \8216Playground.Contract\8217","    Use -v (or `:set -v` in ghci) to see a
  list of the files searched for.","  |","2 | import Playground.Contract","
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^"]},CompilationError {filename =
  "/private/tmp/web-ghc-work-16cc79e7d9a477a7/Main.hs", row = 3, column = 1,
  text = [" error:","    Could not find module \8216Plutus.Contract\8217","
  Use -v (or `:set -v` in ghci) to see a list of the files searched for.","
 |","3 | import Plutus.Contract","  |
 ^^^^^^^^^^^^^^^^^^^^^^"]},CompilationError {filename = "/private/tmp/web-
 ghc-work-16cc79e7d9a477a7/Main.hs", row = 4, column = 1, text = [" error:","
 Could not find module \8216PlutusTx.Prelude\8217","    Use -v (or `:set -v`
 in ghci) to see a list of the files searched for.","  |","4 | import
 PlutusTx.Prelude","  | ^^^^^^^^^^^^^^^^^^^^^^^"]}]))

References

Unable to start /plutus-apps client application

When starting the client server on macOS use GC_DONT_GC=1 npm run start.
That is, include GC_DONT_GC=1 in front of the command npm run start.
Then, open a browser tab to http://localhost:8009/ and, using Brave Browser, Advance from warnings. (Not https, see note below).
Note: I had to update my Plutus-apps/plutus-playground-client/webpack.config.js file per prodineeritecht's recommendation to bi-pass the https proxy firewall.

As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.


text:
Project Catalyst Voting, did not save QR code, but have transaction ID and Pin, can I use this?
Is there a way to use any information from the project catalyst registration voting transaction ID, instead of the QR code, say if you lost the QR code?
Assume the pin is known.
The transaction ID metadata looks like the following.
{
   1: "103a3919a376ca98431c871d7f....fbceab46732e9d4a3c1e5a87995e6ed1786",
   2: "ef36ce85e2967d96db6c26.....29eb132b0df06393b29f790b26a97da90",
   3: "e1916b5b1df589d4a70e5ebde9fc71ea10.....4cab8b8a329b1625620",
   4: 47594896
}

{
   1: "f182e4faa36097d42360416b6d5136e.....a1a535ab6f822293046e5fe426dc37a68557d41da0ac08794b0820addad359299316fd3674a66bced33f95056d07"
}

No, the transaction only contains the public key, and the pin code is used to decrypt the private key from the QR code. If you don't have the QR code, you don't have the private key.

Thank you Samuel


text:
What block height was the vasil hardfork?
Additionally, did vasil correlate to a change of era for cardano?

The first block appears to be at slot 83548800 according to the /network/eras Blockfrost endpoint.
  {
    "start": {
      "time": 157680000,
      "slot": 72316800,
      "epoch": 365
    },
    "end": {
      "time": 168912000,
      "slot": 83548800,
      "epoch": 391
    },
    "parameters": {
      "epoch_length": 432000,
      "slot_length": 1,
      "safe_zone": 129600
    }

Yes, Vasil has been an era change from Alonzo to Babbage.


text:
What are the block heights of the different eras of cardano?
According to the roadmap Cardano has (or will have) five eras. Byron, Shelley, Goguen, Basho and Voltaire. What block height did Cardano change from one era to the next?

This is the best resource I've found online.

Source

Byron (Genesis) (09/27/2017) - Epoch 1, Block 1?
Shelley (07/29/2020) - Epoch 208, Block 4490511
Goguen (if you consider Alonzo HFC the start of Goguen) (09/12/2021) - Epoch 290, Block 6236060
Basho and Voltaire are currently in development.
Important to note: the Cardano eras are rough pictures of where development is focused during that era, not hard dates. Parts of Shelley and Goguen are still being worked (decentralization parameters and smart contract optimizations, respectively). It is not clear cut whether something like the integrations of CIP 31, 32, and 33 should be considered part of Goguen or Basho. Also, project Catalyst is technically part of Voltaire and has been around for over a year at this point.

Is there a website you got the data from? I am asking so that I can look it up when the next era rolls out.

No, tbh I just remembered

damn that's a good memory

You are looking for the /network/eras Blockfrost endpoint.

On mainnet:

Byron started at epoch 0.
Shelley started at epoch 208.

Hopefully someone else can fill in the rest.


text:
What security exists in Daedalus for protecting the private key
If the wallet private key is in \AppData\Roaming\Daedalus\Secrets-1.0 what security exists from physical access to this file?
Per this https://forum.cardano.org/t/where-are-the-public-and-private-keys-located-in-daedalus/6522/2 a user states this file is encrypted but I assume a attack can could still result in retrieval if access is available while Daedalus is running.


text:
Ouroboros – Which version is currently implemented?
I was reading this blog post From Classic to Hydra and I was wondering which version of Ouroboros is currently implemented in Cardano: Classic, BFT or Praos?


text:
Sending many transactions from one address in quick succession?
I was wondering if anyone has figured out an effective way of sending many different transactions in quick succession from the same address? I have an application that can require making 100+ transactions a minute. So far the only solid way I've been able to facilitate this is to use about 50 different addresses, since I have to wait for one transaction to confirm before I can send another one (with CLI and Cardano REST API). I think this occurs because the UTXOs don't update until confirmation, which affects the next transaction attempt. Does anyone know of a more efficient way of sending many transactions in quick succession using CLI, the Cardano Wallet REST API, or even the Cardano Serialization Library?
Thanks!

It depends on the application you are building, but it's possible you could include all the actions in a single transaction.
You can use arbitrarily large amounts of constraints on your transaction in off-chain wallet code for smart contracts. Here is an example with 4 constraints, but you could do as many as you needed to get your job done. I believe you would need to wait until the PAB (Plutus Application Backend) is operational before you can use that wallet code on the mainnet, however.


text:
Retrieve NFT transaction metadata
i've minted some NFTs with 721 metadata in the transaction and am now looking to retrieve the metadata information for further processing. I've send these NFTs around a bit so the   utxo is not the minting transaction. Is there a way to retrieve this information using the cardano-cli or cardano-wallet commandline? Or are there other suggestions for doing this. I'm working on the testnet currently.
Thanks a lot in advance!

I found that it is possible in the following way:

Use the Wallet API to find a minting transaction from a list of all of your wallet's transactions https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/listTransactions. You can find here also metadata but for a better format, you can proceed to the below step.
Use blockfrost.io API to get metadata from minting transaction https://docs.blockfrost.io/#tag/Cardano-Transactions/paths/~1txs~1{hash}~1metadata/get

Alternatively, you can use https://github.com/input-output-hk/cardano-db-sync to sync the whole node to Postgres DB from where you can query metadata https://forum.cardano.org/t/cardano-db-sync-query-metadata/74386
The third way is to use https://input-output-hk.github.io/offchain-metadata-tools/. By my understanding, the main purpose of this tool is to verify native tokens. It requires to be done pull request to git and after approval, you can do a query with this https://input-output-hk.github.io/offchain-metadata-tools/api/latest/

Cardanoscan can be used to browse the metadata. Similar services is also available in test net.
Sample output is like this

I guess the problem is to find a specific transaction, among all millions or billions of transactions that may exist on the block-chain. There are efforts like covalent ( https://www.covalenthq.com) that provide search services but I don't know if that is available for cardano.


text:
Added more ADA on Yoroi while staking
I just added more ADA on my Yoroi Wallet while staking in a pool. Will the new ADA be automatically added into the current staking pool?
And do I need to withdraw my rewards in order to restake it?

Yes, and to the same pool. You don't need to do anything.

New ADAs will be added to the pool automatically but they will not be considered for 1 epoch, because snapshot need to be submitted. You can check here how the staking timeline works.
Rewards are automatically added to your wallet, you only need to withdraw if you want to spend them


text:
Why Is Daedalus Mainnet taking so long to Sync My Transaction History with the Blockchain?
I'm running version 4.3.1 and started yesterday morning at approximately 8:30 AM now almost 24 hours later it's still synching at 89.6% complete.
I have 186GB free on C:\ drive and a hard wired internet connection and it's taking quite a bit of CPU/Memory

Is this normal?
Thanks

There is NO MOBILE APP for Daedalus. Be careful !!!! Lots of thieves out there!!!

Daedalus is a full node. You are syncing the entire history of the Cardano blockchain. If you are on a lower end PC with a less powerful processor this isn't out of the ordinary.
If you would like a light wallet I advise you to look into Yoroi or Nami.
Worthy of note, I heard through the grapevine that Daedalus is indeed working on a light wallet for mobile and the browser, but I don't think it's been officially confirmed as of yet.

Unfortunately my wallet is using a 12 word seed.  Looks like Yoroi and Nami need a 15 word seed phrase.

you can use adalite.io with 12, 15, 24 or 27-word wallet mnemonic seed phrases

No it's Input Output (IOHK) that is coming with a light wallet, called Lace. Daedalus is just Deadalus, which is also part of Input Output (IOHK).

Link: https://www.lace.io/

The Cardano blockchain is more than 16GB in size  as of October 2021, and it is predicted here that a full sync should take about 6 hours if you have a relatively good machine by recent standards (your 8GB of RAM may now be considered to be slightly on the lower end) and a broadband connection (I'm assuming you do). So it may be a bit of a surprise that it's only 89.6% complete after almost 24 hours.
These are some of the reasons why it might be taking you much longer than usual. First, Daedalus Mainset is only consuming 64.5% out of the 98% CPU usage that you display in that screenshot, so something else is consuming (or trying to consume!) a significant amount of your CPU too, and when overall CPU usage gets that high, things can slow down considerably because the computer has to "ration" its resources.
The next thing is your RAM usage, from which things are not easy to tell. 8GB of RAM is very often not enough these days, depending on what else you have running on your computer (evidently there's more than just Daedalus Mainsetbecause that's only using 68% of your CPU usage, whereas your overall CPU usage is at 98%). Even though you're only using 49% of your RAM, it appears to be almost all by Daedalus Mainset, and this suggests that it might have been possible that you ran into RAM issues (close to 100% usage) earlier, which caused paging (a process in which data that is intended to be stored in RAM gets transferred to disk to act as "virtual memory", which can slow down I/O enormously (this StackOverflow answer says it can be 100,000 times slower!).
Finally, you point out that you have 186GB free on your drive, which I don't think plays much of a role here since the Cardano blockchain is not even 20GB in size. You have plenty more space available than you need for this task, and also your disk usage is listed in your screenshot as only being 4% of your machine's capacity.
The problem may also simply be your slow internet connection, since the 100 Kbps displayed in your screenshot, would require about 41 years just to download a 16GB blockchain. I'm sure your network speed is faster from time to time, but if it's going down to 100 Kbps for long enough of a stretch of time, this could easily cause your lengthy syncing process.

100 kbps will NOT take you 41 years for 16 GB, you typed 0.1 kbps instead of 0.1 mbps.
Would be about 2 weeks


text:
Minting a NFT (collection) with Blockfrost
I see al lot of NFT projects where you can buy 1 or multiple NFT's for a certain price. Like unsigned_algorithms, CardanoTrees etc. I am curious how these projects are created without the use of smart contracts, is it something that can be done using Blockfrost?

I am not an expert but I think you can't mint NFTs with Blockfrost and maybe never will.

You don't need blockfrost, just learn the cardano-cli and you can make anything. https://developers.cardano.org/docs/native-tokens/minting-nfts/
Download the Testnet version of Daedalus and get tADA (Test ADA) from the faucet and practice making them.
I also recommend looking at nftmaker pro for quickly minting your own NFT collection. https://www.nft-maker.io/

We can mint NFTs on cardano without smart contracts. There are some projects which help to do it in a browser like https://namiwallet.io/, but you can do it via CLI

The main reason that we can mint NFTs without smart contracts is native tokens on the Cardano blockchain.
A good explanation is found here https://www.youtube.com/watch?v=ccLgnM3ErUE at around 3 minutes.
There are multiple websites out there now that can take care of the minting process for you.
For example: https://metromermaids.com/mint/v0.104/ or https://www.nft-maker.io/ as well as various NFT marketplaces now also offering token minting support.

you just need :

cardano CLI to mint NFT
cardano node to be connected with the rest of the network
Cardano wallet :) for payment address
blockfrost to find info about Cardano blockchain, in case of sales, you need to find the Address of the wallet, which paid for your NFT
IPFS for Storage decentralize solution
some ubuntu / programming / scripting knowledge, for automation sales machine :)

enjoy decentralization and Digital art!!!
theTokenSquare17
pool operator for TTS17 pool


text:
Minting NFTs via cardano-cli: How to mint several NFTs consecutively?
I followed the NFT minting docs on https://developers.cardano.org/docs/native-tokens/minting-nfts which works very well for the first transaction.
I'm currently stuck trying to mint a second NFT. It's not clear to me, what kind of data has to be regenerated and what needs to be kept for the cli commands their parameters.
for the second transaction I've tried with and without regenerating policy keys and policyID. I adjusted the txhash and funds values, as those have changed after the first transaction. nothing really works.
here is the error I'm getting:
Command failed: transaction submit  Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (UtxoFailure (ValueNotConservedUTxO (Value 999813423 (fromList [(PolicyID {policyID = ScriptHash "b5c707bc10063ae8ab04c2f7b99c3ed1f0bdd82266369367a7bef050"},fromList [("NFT1",1)]),(PolicyID {policyID = ScriptHash "fcd60019e5c25602201d5a28f73b7749e85efab6a31dbb7aa461132b"},fromList [("NFT1",1)])])) (Value 999813423 (fromList [(PolicyID {policyID = ScriptHash "b5c707bc10063ae8ab04c2f7b99c3ed1f0bdd82266369367a7bef050"},fromList [("NFT1",1)])])))))])

I hope someone can give me advice what kind of parameters need to change after the first transaction is done.
best

Sorry for not providing more context and code / scripts in the original question. however, I found the solution to my problem and want to share it in case anyone else has a similar issue.
for the very first transaction from/to a given address, the --tx-out param looked something like this:
--tx-out addr_test1vqjf8aak5fn3u2la4dgwyda98s2py3f9pqcmnhfq93ugq0qkctw7v+0+1 "90fa8ff2fb851f92fd239574334a37762bc22dcdf0595a269ad300c8.NFT1"
which is basically $address+$fees+"$tokenamount $policyID.$tokenname"
for the second transaction I just tried to replace $fees, $tokenamount, $policyID and $tokennamewith values from another NFT. what I didn't know is that $tokenamount, $policyID and $tokenname of the first transaction (or from all previous transactions) also have to be appended to the new value for the --tx-out param. so it would look like this:
--tx-out addr_test1vqjf8aak5fn3u2la4dgwyda98s2py3f9pqcmnhfq93ugq0qkctw7v+0+1 "90fa8ff2fb851f92fd239574334a37762bc22dcdf0595a269ad300c8+NFT1" "1 9bb49c25ea28964c96d119ecb3a9425d39a390e6c34974f2637c750e.NFT2
best

You should wait until transaction is finished and UTxO's are updated in your wallet.
A way to do it is to create a script that will query UTxO's for your wallet and once UTxO's are changed you run next transaction.
You can query it either directly from CLI and parse the results, or you can query it via cardano-graphql or Blockfrost.io API.


text:
What is the technical configuration difference between a cardano-node relay and producer?
More specifically, how does one know or how does one check if a cardano-node process is acting/functioning as a relay versus a producer?

BP settings ->

folder files : topology.json will be on BP only your realys
from BP we dont run topologyUpdater
to run a BP, you need minimum 3-4 files (hot.skey, op.cert, vrf.skey, vrf.vkey) - the rest of the files, need to be stored and secured in a private offline node for your security.

Relay Settings ->

you run script "topologyUpdater" so that you have every hour new peers.
in the "topologyUpdater" you have to define specific Nodes, you want to be connected additionally to the list of the Nodes from the script

It depends on how you configure your nodes, there are few things that changes between a block producer and a relay node. In the block producer's topology.json you should only have your 1/2 "private" relays. Another thing that you can check is the start up script of the node, the block producer need to include different keys: kes, vrf, ecc inside of it.
The last thing that comes to my mind is that if everything is configured in the corrected way, you should be able to see different things by opening the liveview of the node, first of all, it tells you if you are running a core or a relay node. If you are watching the core node, you should be able to see processed tx and mempool tx/bytes, plus the kes expiration date, if not, you should be able to see peers/other's pools relay nodes.

all answers a great for general infos...
i think based on your questions, you want to find if a node is BP or Relay,
please execute the command below
sudo systemctl status cnode
if you find the 3 files below on the executed command, means it is running a BP

hot.skey
vrf.skey
op.cert

if you need more info / support, let us know
TTS17


text:
Did I lose a lot of ADA after updating Cardano node?? Alonzo hardfork
So, the context is I have cardano-wallet and node deployed via docker-compose. I do have mnemonic codes, wallet passphrase, id/label, everything. For alonzo hardfork, I had to upgrade my node which I did. Firstly, since its docker-compose I had to change versions, removed current running containers and build new ones. I did, but node never started, kept restarting, upon investigation logs it was some linux user/permission issue. It made sense that it wasn't going to just work with previous volumes. I went ahead and purged volumes, tried again and good that this time it worked and started syncing.
Using RPC API I restored my wallets, there are about 65k addresses in 1 wallet and 4-5 thousand addresses in other 2 wallets. After restoring, I matched addresses and all of them are a 100% match which validates that private key has been restored correctly but even after complete sync all addresses are marked as "unused" and wallet has "0" balance. :((((
Any help will be appreciated, I have a lot of money in ADA and assets on the line here.

Hey @FieldMarshal, let us know what you figured out (as it's been 21 days). It will help others in the future who may have similar problems.

Check your node sync status with cardano-cli query tip. Likely your wallet is synced, but your node is not caught up yet.


text:
Is there a good tutorial to mint Cardano NFT using plutus script?
I used to mint Cardano NFT using "Time locking" following this guide https://developers.cardano.org/docs/native-tokens/minting-nfts/. But I know the more formal way is to use plutus script to mint NFT after the introduction of smart contract. Is there a similar guide on how to achieve this? I know Lars did a tutorial on that https://www.youtube.com/watch?v=SsaVjSsPPcg. But I am too dumb to follow. Any simplified step-by-step instructions available?

I am answering my own question. After several days of studies and testing, I finally mint NFT using plutus script. Please find my articles below:
https://edwardtam919.medium.com/how-to-mint-cardano-nft-using-smart-contract-part-i-1d75a0398cd2
https://edwardtam919.medium.com/how-to-mint-cardano-nft-using-smart-contract-part-ii-ec7eccc77686

Really interesting stuff.  I believe @Berry put out a sample for how to do this as well on his Github page: https://github.com/Berry-Pool/plutus-contracts/tree/master/NFTSeries


text:
Documentation for smart contract deployment on testnet & mainnet
Can somebody point out where I can get the doc for smart contract deployment on testnet & mainnet? I am testing on plutus playground now and would deploy on testnet to try. Thanks in advance.

The present status is to use the method described in the Lobster challenge. https://github.com/input-output-hk/lobster-challenge. Please see the associated Youtube video too.

You can also find an example here, from Alonzo-tesnet repo (that repo includes another interesting exercises).
That was part of the Exercise 4.
Exercise4-solution