# \[CODE\] Which file and function used for building a proposal from a payment transaction

**URL:** <https://forum.algorand.co/t/code-which-file-and-function-used-for-building-a-proposal-from-a-payment-transaction/1027>\
**Category:** Uncategorized\
**Created:** [October 14, 2019, 6:30pm UTC](https://forum.algorand.co/t/code-which-file-and-function-used-for-building-a-proposal-from-a-payment-transaction/1027 "2019-10-14T18:30:50Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![tsachi](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.algorand.co/tsachi/32/29_2.png) [@tsachi](https://forum.algorand.co/u/tsachi)\
**Post date:** [October 15, 2019, 3:51am UTC](https://forum.algorand.co/t/code-which-file-and-function-used-for-building-a-proposal-from-a-payment-transaction/1027/2 "2019-10-15T03:51:33Z")

</div>

Hi zach,

I don’t have the access to the code base from this machine, so I’ll try to give you some pointers -

- The makeProposal is called when node has a participation keys for the current round. At that point, there is a _chance_ that this node would need to generate a proposal ( or vote ). In that case, the node attempts to generate a block ( I think it’s call evaluate ) which is composed out of the transactions that are pending in the transaction pool.
- The signature verification is bit more complicated - incoming node transactions as validated before they are placed on the transaction pool. They are also re-validated before sending the cert votes. The voting signatures are checked right when they are being received, using an execution pool ( so that certain signatures could be prioritize over others ).

The flow might not be the easiest to understand, but it’s quite well optimized ( from a computer standpoint, that is… )

---

_[View the full topic](https://forum.algorand.co/t/code-which-file-and-function-used-for-building-a-proposal-from-a-payment-transaction/1027)._
