Restricted dataflow models of computation have gained widespread adoption in the safety-critical and real-time domains. As more complex functionality is being incorporated in embedded systems, there is a need for more expressive languages while maintaining high analysability. We present a contract-based approach to specification, scheduling and verification of dynamic dataflow networks. The approach is based on finding static schedules based on contracts and utilising this information in the verification process to reduce the number of invariant annotations needed. Moreover, we show that contracts can be used to make compile-time scheduling decisions, hence, improving runtime performance.