user2255: I have found examples indicating that a minting policy can be single shot or restricted by PubKeys, however I would like to secure minting and burning of a token based on if a specific NFT is present in the redeemer.
My current thinking (no code written yet) would be to create an OnChain validator to check for the NFT and set the minting policy to forwardingMintingPolicy.
This makes me a little nervous because from what I understand once a minting policy / token is established it can never be changed which means the validation script can also not be changed.
So with this in mind would it be recommended to make the token contract as simple as possible ie, Mint, Burn only validated as above, then keep any potentially complex behaviour in other contracts that can be changed. Or am I missing something entirely.

user1130: 
Define a native token minting policy restricted by NFT

This is how the Liquidity Token minting works in the Uniswap example.
isUnity v usCoin

checks that there is included one usCoin. The policy also includes some additional flexibility, but that's the general idea.
I think this is going to be a very common pattern in smart contracts.

2255: <p>I have found examples indicating that a minting policy can be single shot or restricted by PubKeys, however I would like to secure minting and burning of a token based on if a specific NFT is present in the redeemer.</p>
<p>My current thinking (no code written yet) would be to create an OnChain validator to check for the NFT and set the minting policy to <a href="https://staging.marlowe.iohkdev.io/doc/haddock/plutus-ledger/html/Ledger-Typed-Scripts-Validators.html" rel="nofollow noreferrer">forwardingMintingPolicy</a>.</p>
<p>This makes me a little nervous because from what I understand once a minting policy / token is established it can never be changed which means the validation script can also not be changed.</p>
<p>So with this in mind would it be recommended to make the token contract as simple as possible ie, Mint, Burn only validated as above, then keep any potentially complex behaviour in other contracts that can be changed. Or am I missing something entirely.</p>
 1130: <blockquote>
<p>Define a native token minting policy restricted by NFT</p>
</blockquote>
<p>This is how the Liquidity Token minting works in the <a href="https://github.com/input-output-hk/plutus/blob/37f34648cb9e12c7f61f6faf9930a600e103c479/plutus-use-cases/src/Plutus/Contracts/Uniswap/OnChain.hs#L282" rel="nofollow noreferrer">Uniswap example</a>.</p>
<pre><code>isUnity v usCoin
</code></pre>
<p>checks that there is included one <code>usCoin</code>. The policy also includes some additional flexibility, but that's the general idea.</p>
<p>I think this is going to be a very common pattern in smart contracts.</p>
